# HG changeset patch # User thomask # Date 1147026025 0 # Node ID 052b82b4924ceff2b34f3dc0a968dc131dbe0ddb # Parent 1c9d1337cb77da5cbf9118cad75eaa7a582c9e5d inline ASM review diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_clflush_01.d --- a/run/a/asm_clflush_01.d Sun May 07 15:37:44 2006 +0000 +++ b/run/a/asm_clflush_01.d Sun May 07 18:20:25 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_clflush_01; +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + int main(){ - version(D_InlineAsm){ + version(doTest){ uint a; ubyte b = 1; @@ -23,11 +29,13 @@ mov a, 1; } - assert(a==0x20001 || a==1); + if((a != 0x20001) && (a != 1)){ + assert(0); + } return 0; }else{ - pragma(msg, "no Inline asm support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); static assert(0); } } diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmc_01.d --- a/run/a/asm_cmc_01.d Sun May 07 15:37:44 2006 +0000 +++ b/run/a/asm_cmc_01.d Sun May 07 18:20:25 2006 +0000 @@ -4,33 +4,31 @@ module dstress.run.a.asm_cmc_01; +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + int main(){ - version(D_InlineAsm){ + version(doTest){ byte a = 0; asm{ clc; cmc; - mov AL, 0; - adc AL, 0; - mov a, AL; - } - - assert(a == 1); - - asm{ + jnc error; stc; cmc; - mov AL, 0; - adc AL, 0; - mov a, AL; + jc error; } - assert(a == 0); return 0; + error: + assert(0); }else{ - pragma(msg, "no Inline asm support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); static assert(0); } -} \ No newline at end of file +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmova_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmova_01_A.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,50 @@ + // $HeadURL$ + // $Date$ + // $Author$ + +module dstress.run.a.asm_cmova_01_A; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + uint a; + asm{ + mov ECX, 0xAB_CD_EF_01; + mov DX, 0x12_34; + mov AL, 1; + mov BL, 2; + cmp AL, BL; + cmova CX, DX; + mov a, ECX; + } + + if(a != 0xAB_CD_EF_01){ + assert(0); + } + + asm{ + mov ECX, 0xAB_CD_EF_01; + mov DX, 0x12_34; + mov AL, 2; + mov BL, 1; + cmp AL, BL; + cmova CX, DX; + mov a, ECX; + } + if(a != 0xAB_CD_12_34){ + assert(0); + } + + return 0; + error: + assert(0); + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmova_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmova_01_B.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,49 @@ + // $HeadURL$ + // $Date$ + // $Author$ + +module dstress.run.a.asm_cmova_01_B; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + uint a; + ushort d = 0x12_34; + asm{ + mov ECX, 0xAB_CD_EF_01; + mov AL, 1; + mov BL, 2; + cmp AL, BL; + cmova CX, d; + mov a, ECX; + } + + if(a != 0xAB_CD_EF_01){ + assert(0); + } + + asm{ + mov ECX, 0xAB_CD_EF_01; + mov AL, 2; + mov BL, 1; + cmp AL, BL; + cmova CX, d; + mov a, ECX; + } + if(a != 0xAB_CD_12_34){ + assert(0); + } + + return 0; + error: + assert(0); + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmova_02_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmova_02_A.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,49 @@ + // $HeadURL$ + // $Date$ + // $Author$ + +module dstress.run.a.asm_cmova_02_A; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + uint a; + asm{ + mov ECX, 0xAB_CD_EF_01; + mov EDX, 0x12_34_56_FE; + mov AL, 1; + mov BL, 2; + cmp AL, BL; + cmova ECX, EDX; + mov a, ECX; + } + + if(a != 0xAB_CD_EF_01){ + assert(0); + } + + asm{ + mov ECX, 0xAB_CD_EF_01; + mov AL, 2; + mov BL, 1; + cmp AL, BL; + cmova ECX, EDX; + mov a, ECX; + } + if(a != 0x12_34_56_FE){ + assert(0); + } + + return 0; + error: + assert(0); + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmova_02_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmova_02_B.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,49 @@ + // $HeadURL$ + // $Date$ + // $Author$ + +module dstress.run.a.asm_cmova_02_B; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + uint a; + uint d = 0x12_34_56_FE; + asm{ + mov ECX, 0xAB_CD_EF_01; + mov AL, 1; + mov BL, 2; + cmp AL, BL; + cmova ECX, d; + mov a, ECX; + } + + if(a != 0xAB_CD_EF_01){ + assert(0); + } + + asm{ + mov ECX, 0xAB_CD_EF_01; + mov AL, 2; + mov BL, 1; + cmp AL, BL; + cmova ECX, d; + mov a, ECX; + } + if(a != 0x12_34_56_FE){ + assert(0); + } + + return 0; + error: + assert(0); + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmppd_01_A.d --- a/run/a/asm_cmppd_01_A.d Sun May 07 15:37:44 2006 +0000 +++ b/run/a/asm_cmppd_01_A.d Sun May 07 18:20:25 2006 +0000 @@ -4,17 +4,23 @@ module dstress.run.a.asm_cmppd_01_A; +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + int main(){ - version(D_InlineAsm_X86){ + version(doTest){ static double[2] A = [1.0, 2.0f]; static double[2] B = [1.1, 2.0f]; ulong[2] c; asm{ - movdqu XMM0, A; - movdqu XMM1, B; + movupd XMM0, A; + movupd XMM1, B; cmppd XMM0, XMM1, 0; - movdqu c, XMM0; + movupd c, XMM0; } if(c[0]){ @@ -25,7 +31,7 @@ } return 0; }else{ - pragma(msg, "no Inline asm support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); static assert(0); } } diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpps_01_A.d --- a/run/a/asm_cmpps_01_A.d Sun May 07 15:37:44 2006 +0000 +++ b/run/a/asm_cmpps_01_A.d Sun May 07 18:20:25 2006 +0000 @@ -4,6 +4,12 @@ module dstress.run.a.asm_cmpps_01_A; +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + int main(){ version(D_InlineAsm_X86){ static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; @@ -11,10 +17,10 @@ uint[4] c; asm{ - movdqu XMM0, A; - movdqu XMM1, B; + movups XMM0, A; + movups XMM1, B; cmpps XMM0, XMM1, 0; - movdqu c, XMM0; + movups c, XMM0; } if(c[0]){ @@ -31,7 +37,7 @@ } return 0; }else{ - pragma(msg, "no Inline asm support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); static assert(0); } } diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpsd_01_A.d --- a/run/a/asm_cmpsd_01_A.d Sun May 07 15:37:44 2006 +0000 +++ b/run/a/asm_cmpsd_01_A.d Sun May 07 18:20:25 2006 +0000 @@ -4,19 +4,25 @@ module dstress.run.a.asm_cmpsd_01_A; +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + int main(){ - version(D_InlineAsm_X86){ + version(doTest){ static double[2] A = [1.0, 2.0]; static double[2] B = [1.0, 2.0]; ulong[2] c; double[2] d; asm{ - movdqu XMM0, A; - movdqu XMM1, B; + movupd XMM0, A; + movupd XMM1, B; cmpsd XMM0, XMM1, 0; movdqu c, XMM0; - movdqu d, XMM0; + movupd d, XMM0; } if(c[0] != ulong.max){ @@ -28,7 +34,7 @@ return 0; }else{ - pragma(msg, "no Inline asm support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); static assert(0); } } diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpsd_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpsd_01_B.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,39 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_cmpsd_01_B; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + static double[2] A = [1.0, 2.0]; + static double B = 1.0; + ulong[2] c; + double[2] d; + + asm{ + movupd XMM0, A; + cmpsd XMM0, B, 0; + movdqu c, XMM0; + movupd d, XMM0; + } + + if(c[0] != ulong.max){ + assert(0); + } + if(d[1] != A[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpss_01_A.d --- a/run/a/asm_cmpss_01_A.d Sun May 07 15:37:44 2006 +0000 +++ b/run/a/asm_cmpss_01_A.d Sun May 07 18:20:25 2006 +0000 @@ -4,18 +4,24 @@ module dstress.run.a.asm_cmpss_01_A; +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + int main(){ - version(D_InlineAsm_X86){ - static float[4] A = [1.0f, 2.0f, 3.0f, 4.0]; + version(doTest){ + static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; uint[4] c; float[4] f; asm{ - movdqu XMM0, A; - movdqu XMM1, A; + movups XMM0, A; + movups XMM1, A; cmpss XMM0, XMM1, 0; movdqu c, XMM0; - movdqu f, XMM0; + movups f, XMM0; } if(c[0] != uint.max){ @@ -33,7 +39,7 @@ return 0; }else{ - pragma(msg, "no Inline asm support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); static assert(0); } } diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpss_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpss_01_B.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,45 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_cmpss_01_B; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; + static float B = 1.0f; + uint[4] c; + float[4] f; + + asm{ + movups XMM0, A; + cmpss XMM0, B, 0; + movdqu c, XMM0; + movups f, XMM0; + } + + if(c[0] != uint.max){ + assert(0); + } + if(f[1] != A[1]){ + assert(0); + } + if(f[2] != A[2]){ + assert(0); + } + if(f[3] != A[3]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpxchg_01_A.d --- a/run/a/asm_cmpxchg_01_A.d Sun May 07 15:37:44 2006 +0000 +++ b/run/a/asm_cmpxchg_01_A.d Sun May 07 18:20:25 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_cmpxchg_01_A; +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + int main(){ - version(D_InlineAsm){ + version(doTest){ ubyte a = 0; ubyte c = 3; asm{ @@ -15,8 +21,12 @@ mov a, AL; } - assert(c==3); - assert(a==3); + if(c != 3){ + assert(0); + } + if(a != 3){ + assert(0); + } a = 0; c = 3; @@ -28,12 +38,16 @@ mov a, AL; } - assert(c==2); - assert(a==3); + if(c != 2){ + assert(0); + } + if(a != 3){ + assert(0); + } return 0; }else{ - pragma(msg, "no Inline asm support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); static assert(0); } -} \ No newline at end of file +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpxchg_01_B.d --- a/run/a/asm_cmpxchg_01_B.d Sun May 07 15:37:44 2006 +0000 +++ b/run/a/asm_cmpxchg_01_B.d Sun May 07 18:20:25 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_cmpxchg_01_B; +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + int main(){ - version(D_InlineAsm){ + version(doTest){ ushort a = 0; ushort c = 3; asm{ @@ -15,8 +21,12 @@ mov a, AX; } - assert(c==3); - assert(a==3); + if(c != 3){ + assert(0); + } + if(a != 3){ + assert(0); + } a = 0; c = 3; @@ -28,12 +38,16 @@ mov a, AX; } - assert(c==2); - assert(a==3); + if(c != 2){ + assert(0); + } + if(a != 3){ + assert(0); + } return 0; }else{ - pragma(msg, "no Inline asm support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); static assert(0); } -} \ No newline at end of file +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpxchg_01_C.d --- a/run/a/asm_cmpxchg_01_C.d Sun May 07 15:37:44 2006 +0000 +++ b/run/a/asm_cmpxchg_01_C.d Sun May 07 18:20:25 2006 +0000 @@ -2,10 +2,16 @@ // $Date$ // $Author$ -module dstress.run.a.asm_cmpxchg_01_B; +module dstress.run.a.asm_cmpxchg_01_C; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} int main(){ - version(D_InlineAsm){ + version(doTest){ uint a = 0; uint c = 3; asm{ @@ -15,8 +21,12 @@ mov a, EAX; } - assert(c==3); - assert(a==3); + if(c != 3){ + assert(0); + } + if(a != 3){ + assert(0); + } a = 0; c = 3; @@ -28,12 +38,16 @@ mov a, EAX; } - assert(c==2); - assert(a==3); + if(c != 2){ + assert(0); + } + if(a != 3){ + assert(0); + } return 0; }else{ - pragma(msg, "no Inline asm support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); static assert(0); } -} \ No newline at end of file +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpxchg_02_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpxchg_02_A.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,57 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_cmpxchg_01_A; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + ubyte a = 0; + ubyte c = 3; + asm{ + mov AL, 1; + mov BL, 2; + mov CL, c; + cmpxchg CL, BL; + mov a, AL; + mov c, CL; + } + + if(c != 3){ + assert(0); + } + if(a != 3){ + assert(0); + } + + a = 0; + c = 3; + + asm{ + mov AL, 3; + mov BL, 2; + mov CL, c; + cmpxchg CL, BL; + mov a, AL; + mov c, CL; + } + + if(c != 2){ + assert(0); + } + if(a != 3){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpxchg_02_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpxchg_02_B.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,57 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_cmpxchg_01_B; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + ushort a = 0; + ushort c = 3; + asm{ + mov AX, 1; + mov BX, 2; + mov CX, c; + cmpxchg CX, BX; + mov a, AX; + mov c, CX; + } + + if(c != 3){ + assert(0); + } + if(a != 3){ + assert(0); + } + + a = 0; + c = 3; + + asm{ + mov AX, 3; + mov BX, 2; + mov CX, c; + cmpxchg CX, BX; + mov a, AX; + mov c, CX; + } + + if(c != 2){ + assert(0); + } + if(a != 3){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_cmpxchg_02_C.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpxchg_02_C.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,57 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_cmpxchg_01_C; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + uint a = 0; + uint c = 3; + asm{ + mov EAX, 1; + mov EBX, 2; + mov ECX, c; + cmpxchg ECX, EBX; + mov a, EAX; + mov c, ECX; + } + + if(c != 3){ + assert(0); + } + if(a != 3){ + assert(0); + } + + a = 0; + c = 3; + + asm{ + mov EAX, 3; + mov EBX, 2; + mov ECX, c; + cmpxchg ECX, EBX; + mov a, EAX; + mov c, ECX; + } + + if(c != 2){ + assert(0); + } + if(a != 3){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_comisd_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_comisd_01_A.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,34 @@ + // $HeadURL$ + // $Date$ + // $Author$ + +module dstress.run.a.asm_comisd_01_A; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + const double[2] A = [1.0, 2.0]; + const double[2] B = [1.0, 3.0]; + + asm{ + movupd XMM0, A; + movupd XMM1, B; + comisd XMM0, XMM1; + jg error; + je error; + jnl error; + } + + return 0; + error: + assert(0); + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_comisd_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_comisd_01_B.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,33 @@ + // $HeadURL$ + // $Date$ + // $Author$ + +module dstress.run.a.asm_comisd_01_B; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + const double[2] A = [1.0, 2.0]; + const double B = 3.0; + + asm{ + movupd XMM0, A; + comisd XMM0, B; + jg error; + je error; + jnl error; + } + + return 0; + error: + assert(0); + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_comiss_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_comiss_01_A.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,34 @@ + // $HeadURL$ + // $Date$ + // $Author$ + +module dstress.run.a.asm_comiss_01_A; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + const float[4] A = [10.0f, 20.0f, 19.0f, 2.0f]; + const float[4] B = [5.0f, 5.0f, 5.0f, 3.0f]; + + asm{ + movups XMM0, A; + movups XMM1, B; + comiss XMM0, XMM1; + jg error; + je error; + jnl error; + } + + return 0; + error: + assert(0); + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +} diff -r 1c9d1337cb77 -r 052b82b4924c run/a/asm_comiss_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_comiss_01_B.d Sun May 07 18:20:25 2006 +0000 @@ -0,0 +1,33 @@ + // $HeadURL$ + // $Date$ + // $Author$ + +module dstress.run.a.asm_comiss_01_B; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +int main(){ + version(doTest){ + const float[4] A = [10.0f, 20.0f, 19.0f, 2.0f]; + const float B = 3.0f; + + asm{ + movups XMM0, A; + comiss XMM0, B; + jg error; + je error; + jnl error; + } + + return 0; + error: + assert(0); + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); + } +}