From 347cfc419dc38ae890ab870a664574cf660dec8f Mon Sep 17 00:00:00 2001 From: Frits van Bommel Date: Mon, 16 Feb 2009 01:43:14 +0100 Subject: [PATCH] Some changes I missed in my last commit (wound up in wrong patch file) --- tests/mini/asm8.d | 86 ++++++++++++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 35 deletions(-) diff --git a/tests/mini/asm8.d b/tests/mini/asm8.d index 37db8b69..8dc1313e 100644 --- a/tests/mini/asm8.d +++ b/tests/mini/asm8.d @@ -118,22 +118,29 @@ cfloat cf() } else version (X86_64) { - asm - { - movss XMM1, [two_f]; - movss XMM0, [one_f]; - movd ECX, XMM1; - movd EAX, XMM0; - - // invalid operand size :( - //shl RCX, 32; - //or RAX, RCX; - - pushq RAX; - mov [RSP + 4], EAX; - popq RAX; - - movd XMM0, RAX; + version(all) { + asm + { + movss XMM0, [one_f]; + movss XMM1, [two_f]; + } + } else { + // Code for when LDC becomes ABI-compatible with GCC + // regarding cfloat returns. + asm { + movd EAX, [one_f]; + movd ECX, [two_f]; + + // invalid operand size :( + //shl RCX, 32; + //or RAX, RCX; + + pushq RAX; + mov [RSP + 4], EAX; + popq RAX; + + movd XMM0, RAX; + } } } else static assert(0, "todo"); @@ -153,24 +160,33 @@ cfloat cf2() } else version (X86_64) { - asm - { - naked; - movss XMM1, [two_f]; - movss XMM0, [one_f]; - movd ECX, XMM1; - movd EAX, XMM0; - - // invalid operand size :( - //shl RCX, 32; - //or RAX, RCX; - - pushq RAX; - mov [RSP + 4], EAX; - popq RAX; - - movd RAX, XMM0; - ret; + version(all) { + asm + { + naked; + movss XMM0, [one_f]; + movss XMM1, [two_f]; + ret; + } + } else { + // Code for when LDC becomes ABI-compatible with GCC + // regarding cfloat returns. + asm { + naked; + mov EAX, [one_f]; + mov ECX, [two_f]; + + // invalid operand size :( + //shl RCX, 32; + //or RAX, RCX; + + pushq RAX; + mov [RSP + 4], EAX; + popq RAX; + + movd RAX, XMM0; + ret; + } } } else static assert(0, "todo"); @@ -183,7 +199,7 @@ cdouble cd() { version(X86) { - asm { fld1; fld two_d } + asm { fld1; fld two_d; } } else version (X86_64) {