Mercurial > projects > dstress
changeset 1010:731f93c13ad6
inline ASM review
line wrap: on
line diff
--- a/norun/a/asm_hlt_01.d Fri May 19 16:40:22 2006 +0000 +++ b/norun/a/asm_hlt_01.d Fri May 19 17:44:18 2006 +0000 @@ -4,15 +4,21 @@ module dstress.norun.a.asm_hlt_01; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ asm{ hlt; } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/norun/a/asm_invd_01.d Fri May 19 16:40:22 2006 +0000 +++ b/norun/a/asm_invd_01.d Fri May 19 17:44:18 2006 +0000 @@ -4,15 +4,21 @@ module dstress.norun.a.asm_invd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ asm{ invd; } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movsd_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,41 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movsd_01_B; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + static double[2] A = [1.0, 2.0]; + double b = 3.0; + double[2] c; + + asm{ + movupd XMM0, A; + movsd XMM0, b; + movupd c, XMM0; + } + + if(c[0] != b){ + assert(0); + } + if(c[1] != 0.0){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movsd_01_C.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,42 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movsd_01_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + static double[2] A = [1.0, 2.0]; + static double[2] B = [3.0, 4.0]; + double[2] c; + + asm{ + movupd XMM0, A; + movupd XMM1, B; + movsd XMM0, XMM1; + movupd c, XMM0; + } + + if(c[0] != B[0]){ + assert(0); + } + if(c[1] != A[1]){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_movupd_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_movupd_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_movupd_01_A; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + const double[2] A = [1.0, 4.0]; double[2] b; @@ -22,8 +32,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_movupd_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_movupd_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_movupd_01_B; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + const double[2] A = [1.0, 4.0]; double[2] b; @@ -23,8 +33,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_movupd_01_C.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_movupd_01_C.d Fri May 19 17:44:18 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_movupd_01_C; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + const double[2] A = [1.0, 4.0]; double[2] b; @@ -22,8 +32,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_movups_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_movups_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,9 +4,19 @@ module dstress.run.a.asm_movups_01_A; -int main(){ - version(D_InlineAsm_X86){ - const float[4] A = [1.0, 2.0, 3.0, 4.0]; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + + const float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; float[4] b; asm{ @@ -28,8 +38,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_movups_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_movups_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,9 +4,19 @@ module dstress.run.a.asm_movups_01_B; -int main(){ - version(D_InlineAsm_X86){ - const float[4] A = [1.0, 2.0, 3.0, 4.0]; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + + const float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; float[4] b; asm{ @@ -29,8 +39,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_movups_01_C.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_movups_01_C.d Fri May 19 17:44:18 2006 +0000 @@ -4,9 +4,19 @@ module dstress.run.a.asm_movups_01_C; -int main(){ - version(D_InlineAsm_X86){ - const float[4] A = [1.0, 2.0, 3.0, 4.0]; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + + const float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; float[4] b; asm{ @@ -28,8 +38,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_movzx_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_movzx_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,14 +4,17 @@ module dstress.run.a.asm_movzx_01_A; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ uint i = 0xFF_FF_FF_FFu; ubyte b = 0xFF; - assert(i==0xFF_FF_FF_FFu); - assert(b==0xFF); - asm{ mov EAX, i; mov AL, b; @@ -44,8 +47,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_movzx_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_movzx_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,14 +4,17 @@ module dstress.run.a.asm_movzx_01_B; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ uint i = 0xFF_FF_FF_FFu; ubyte b = 0xFF; - assert(i==0xFF_FF_FF_FFu); - assert(b==0xFF); - asm{ mov EAX, i; mov AL, b; @@ -44,8 +47,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movzx_01_C.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,54 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movzx_01_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint i = 0xFF_FF_FF_FFu; + ushort b = 0xFF_FF; + + asm{ + mov EAX, i; + mov AX, b; + movzx EAX, AX; + mov i, EAX; + } + + if(i != 0x00_00_FF_FFu){ + assert(0); + } + if(b != 0xFF_FF){ + assert(0); + } + + i = 0xFF_FF_FF_FFu; + b = 0x12_34; + + asm{ + mov EAX, i; + mov AX, b; + movzx EAX, AX; + mov i, EAX; + } + + if(i != 0x00_00_12_34u){ + assert(0); + } + if(b != 0x12_34){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movzx_02_A.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,52 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movzx_02_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint i = 0xFF_FF_FF_FFu; + ubyte b = 0xFF; + + asm{ + mov EAX, i; + movzx AX, b; + mov i, EAX; + } + + if(i != 0xFF_FF_00_FFu){ + assert(0); + } + if(b != 0xFF){ + assert(0); + } + + i=0xFF_FF_FF_FFu; + b=0x12; + + asm{ + mov EAX, i; + movzx AX, b; + mov i, EAX; + } + + if(i != 0xFF_FF_00_12u){ + assert(0); + } + if(b != 0x12){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movzx_02_B.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,52 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movzx_02_B; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint i = 0xFF_FF_FF_FFu; + ubyte b = 0xFF; + + asm{ + mov EAX, i; + movzx EAX, b; + mov i, EAX; + } + + if(i != 0x00_00_00_FFu){ + assert(0); + } + if(b != 0xFF){ + assert(0); + } + + i = 0xFF_FF_FF_FFu; + b = 0x12; + + asm{ + mov EAX, i; + movzx EAX, b; + mov i, EAX; + } + + if(i != 0x00_00_00_12u){ + assert(0); + } + if(b != 0x12){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movzx_02_C.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,52 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movzx_02_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint i = 0xFF_FF_FF_FFu; + ushort b = 0xFF_FF; + + asm{ + mov EAX, i; + movzx EAX, b; + mov i, EAX; + } + + if(i != 0x00_00_FF_FFu){ + assert(0); + } + if(b != 0xFF_FF){ + assert(0); + } + + i = 0xFF_FF_FF_FFu; + b = 0x12_34; + + asm{ + mov EAX, i; + movzx EAX, b; + mov i, EAX; + } + + if(i != 0x00_00_12_34u){ + assert(0); + } + if(b != 0x12_34){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_mul_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_mul_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_mul_01_A; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ uint i; ubyte x = 0xFF; @@ -21,8 +27,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_mul_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_mul_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_mul_01_B; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ ushort a, b; ushort x = short.max+2; @@ -18,12 +24,16 @@ mov b, AX; } - assert(a==1u); - assert(b==2u); + if(a != 1){ + assert(0); + } + if(b != 2){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_mul_01_C.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_mul_01_C.d Fri May 19 17:44:18 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_mul_01_C; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ uint a, b; uint x = int.max+2; @@ -18,12 +24,16 @@ mov b, EAX; } - assert(a==1u); - assert(b==2u); + if(a != 1){ + assert(0); + } + if(b != 2){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mul_02_A.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,35 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mul_02_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint i; + ubyte x = 0xFF; + + asm{ + mov EAX, 0x23_43_56_78u; + mov AL, 0xEE; + mov BL, x; + mul BL; + mov i, EAX; + } + + if(i != 0x23_43_ED_12){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mul_02_B.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mul_02_B; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + ushort a, b; + ushort x = short.max+2; + + asm{ + mov EAX, 0x12_34_56_78u; + mov EDX, 0x12_34_56_78u; + mov AX, 2; + mov BX, x; + mul BX; + mov a, DX; + mov b, AX; + } + + if(a != 1){ + assert(0); + } + if(b != 2){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mul_02_C.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mul_02_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a, b; + uint x = int.max+2; + + asm{ + mov EAX, 0x12_34_56_78u; + mov EDX, 0x12_34_56_78u; + mov EAX, 2; + mov EBX, x; + mul EBX; + mov a, EDX; + mov b, EAX; + } + + if(a != 1){ + assert(0); + } + if(b != 2){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_mulpd_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_mulpd_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,16 +4,26 @@ module dstress.run.a.asm_mulpd_01_A; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + const double[2] A = [7.0, 4.0]; const double[2] B = [3.0, 2.0]; double[2] c; asm{ - movdqu XMM0, A; + movupd XMM0, A; mulpd XMM0, B; - movdqu c, XMM0; + movupd c, XMM0; } if(c[0] != 21.0){ @@ -24,8 +34,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_mulpd_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_mulpd_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,17 +4,27 @@ module dstress.run.a.asm_mulpd_01_B; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + const double[2] A = [7.0, 4.0]; const double[2] B = [3.0, 2.0]; double[2] c; asm{ - movdqu XMM0, A; - movdqu XMM1, B; + movupd XMM0, A; + movupd XMM1, B; mulpd XMM0, XMM1; - movdqu c, XMM0; + movupd c, XMM0; } if(c[0] != 21.0){ @@ -25,8 +35,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_mulps_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_mulps_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,16 +4,26 @@ module dstress.run.a.asm_mulps_01_A; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + const float[4] A = [7.0f, 4.0f, 1.0f, -2.0f]; const float[4] B = [3.0f, 2.0f, 0.0f, 5.0f]; float[4] c; asm{ - movdqu XMM0, A; + movups XMM0, A; mulps XMM0, B; - movdqu c, XMM0; + movups c, XMM0; } if(c[0] != 21.0f){ @@ -29,10 +39,9 @@ assert(0); } - return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_mulps_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_mulps_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,17 +4,27 @@ module dstress.run.a.asm_mulps_01_B; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + const float[4] A = [7.0f, 4.0f, 1.0f, -2.0f]; const float[4] B = [3.0f, 2.0f, 0.0f, 5.0f]; float[4] c; asm{ - movdqu XMM0, A; - movdqu XMM1, B; + movups XMM0, A; + movups XMM1, B; mulps XMM0, XMM1; - movdqu c, XMM0; + movups c, XMM0; } if(c[0] != 21.0f){ @@ -30,10 +40,9 @@ assert(0); } - return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mulsd_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,42 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mulsd_01_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + const double[2] A = [7.0, 4.0]; + const double[2] B = [3.0, 2.0]; + double[2] c; + + asm{ + movupd XMM0, A; + movupd XMM1, B; + mulsd XMM0, XMM1; + movupd c, XMM0; + } + + if(c[0] != 7.0){ + assert(0); + } + if(c[1] != 8.0){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mulsd_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,41 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mulsd_01_B; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + const double[2] A = [7.0, 4.0]; + const double B = 2.0; + double[2] c; + + asm{ + movupd XMM0, A; + mulsd XMM0, B; + movupd c, XMM0; + } + + if(c[0] != 7.0){ + assert(0); + } + if(c[1] != 8.0){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_mulss_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_mulss_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,36 +4,45 @@ module dstress.run.a.asm_mulss_01_A; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + const float[4] A = [7.0f, 4.0f, 1.0f, -2.0f]; const float[4] B = [3.0f, 2.0f, 0.0f, 5.0f]; float[4] c; asm{ - movdqu XMM0, A; - movdqu XMM1, B; + movups XMM0, A; + movups XMM1, B; mulss XMM0, XMM1; - movdqu c, XMM0; + movups c, XMM0; } - if(c[0] != 21.0f){ + if(c[0] != 7.0f){ assert(0); } - if(c[1] != A[1]){ + if(c[1] != 4.0f){ assert(0); } - if(c[2] != A[2]){ + if(c[2] != 1.0f){ assert(0); } - if(c[3] != A[3]){ + if(c[3] != -10.0f){ assert(0); } - return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_mulss_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_mulss_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,35 +4,44 @@ module dstress.run.a.asm_mulss_01_B; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + const float[4] A = [7.0f, 4.0f, 1.0f, -2.0f]; - const float B = 3.0f; + const float B = 5.0f; float[4] c; asm{ - movdqu XMM0, A; + movups XMM0, A; mulss XMM0, B; - movdqu c, XMM0; + movups c, XMM0; } - if(c[0] != 21.0f){ + if(c[0] != 7.0f){ assert(0); } - if(c[1] != A[1]){ + if(c[1] != 4.0f){ assert(0); } - if(c[2] != A[2]){ + if(c[2] != 1.0f){ assert(0); } - if(c[3] != A[3]){ + if(c[3] != -10.0f){ assert(0); } - return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_neg_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_neg_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,19 +4,27 @@ module dstress.run.a.asm_neg_01_A; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ byte y = 2; asm{ neg y; } - assert(y == -2); + if(y != -2){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_neg_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_neg_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,19 +4,27 @@ module dstress.run.a.asm_neg_01_B; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ short y = -1234; asm{ neg y; } - assert(y == 1234); + if(y != 1234){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_neg_01_C.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_neg_01_C.d Fri May 19 17:44:18 2006 +0000 @@ -4,19 +4,27 @@ module dstress.run.a.asm_neg_01_C; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ int y = 0x12_34_56_78; asm{ neg y; } - assert(y == - 0x12_34_56_78); + if(y != - 0x12_34_56_78){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_neg_02_A.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_neg_02_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint y = 0x78_56_43_21; + + asm{ + mov EAX, y; + neg AL; + mov y, EAX; + } + + if(y != 0x78_56_43_DF){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_neg_02_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_neg_02_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,20 +4,29 @@ module dstress.run.a.asm_neg_02_B; -int main(){ - version(D_InlineAsm){ - short y = -1234; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint y = 0x78_56_43_21; asm{ - lock; - neg y; + mov EAX, y; + neg AX; + mov y, EAX; } - assert(y == 1234); + if(y != 0x78_56_BC_DF){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_neg_02_C.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_neg_02_C.d Fri May 19 17:44:18 2006 +0000 @@ -4,20 +4,29 @@ module dstress.run.a.asm_neg_02_C; -int main(){ - version(D_InlineAsm){ - int y = 0x12_34_56_78; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint y = 0x78_56_43_21; asm{ - lock; - neg y; + mov EAX, y; + neg EAX; + mov y, EAX; } - assert(y == - 0x12_34_56_78); + if(y != 0x87_A9_BC_DF){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_nop_01.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_nop_01.d Fri May 19 17:44:18 2006 +0000 @@ -4,16 +4,21 @@ module dstress.run.a.asm_nop_01; -int main(){ - version(D_InlineAsm){ - +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ asm{ nop; } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_not_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_not_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,19 +4,27 @@ module dstress.run.a.asm_not_01_A; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ ubyte a = 0b0110_1110; asm{ not a; } - assert(a == 0b1001_0001); + if(a != 0b1001_0001){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_not_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_not_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,19 +4,27 @@ module dstress.run.a.asm_not_01_B; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ ushort a = 0b0110_1110_0000_1111; asm{ not a; } - assert(a == 0b1001_0001_1111_0000); + if(a != 0b1001_0001_1111_0000){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_not_01_C.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_not_01_C.d Fri May 19 17:44:18 2006 +0000 @@ -4,19 +4,27 @@ module dstress.run.a.asm_not_01_C; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ uint a = 0b0110_1110__0000_1111__1100_0011__0011_1111; asm{ not a; } - assert(a == 0b1001_0001__1111_0000_0011_1100_1100_0000); + if(a != 0b1001_0001__1111_0000_0011_1100_1100_0000){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_not_02_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_not_02_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_not_02_A; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ uint i; asm{ @@ -20,8 +26,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_not_02_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_not_02_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_not_02_B; -int main(){ - version(D_InlineAsm_X86){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ uint i; asm{ @@ -20,8 +26,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_not_02_C.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_not_02_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint i; + + asm{ + mov EAX, 0b0110_1110__0000_1111__1100_0011__0011_1111; + not EAX; + mov i, EAX; + } + + if(i != 0b1001_0001__1111_0000__0011_1100__1100_0000){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_or_01_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_or_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_or_01_A; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ uint a = 0b0110_1110__0000_1111__1100_0011__0011_1111; uint b = 0b1110_1111__1111_1111__1111_1110__0111_1111; @@ -14,11 +20,13 @@ or b, EAX; } - assert(b == 0b1110_1111__1111_1111__1111_1111__0111_1111); + if(b != 0b1110_1111__1111_1111__1111_1111__0111_1111){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_or_01_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_or_01_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,21 +4,31 @@ module dstress.run.a.asm_or_01_B; -int main(){ - version(D_InlineAsm){ - ushort a = 0b0110_1110__0000_1111; - ushort b = 0b1110_1111__1110_0111; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a = 0b0110_1110__0000_1111__1100_0011__0011_1111; + uint b = 0b1110_1111__1111_1111__1111_1110__0111_1111; asm{ - mov AX, a; - or b, AX; + mov EAX, a; + mov EBX, b; + or EBX, EAX; + mov b, EBX; } - assert(b == 0b1110_1111__1110_1111); + if(b != 0b1110_1111__1111_1111__1111_1111__0111_1111){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_or_01_C.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_or_01_C.d Fri May 19 17:44:18 2006 +0000 @@ -4,21 +4,30 @@ module dstress.run.a.asm_or_01_C; -int main(){ - version(D_InlineAsm){ - ubyte a = 0b0110_1110; - ubyte b = 0b1110_1111; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a = 0b0110_1110__0000_1111__1100_0011__0011_1111; + uint b = 0b1110_1111__1111_1111__1111_1110__0111_1111; asm{ - mov AL, a; - or b, AL; + mov EBX, b; + or EBX, a; + mov b, EBX; } - assert(b == 0b1110_1111); + if(b != 0b1110_1111__1111_1111__1111_1111__0111_1111){ + assert(0); + } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_01_D.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_01_D; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint b = 0b1110_1111__1111_1111__1111_1110__0111_1111; + + asm{ + mov EBX, b; + or EBX, 0b0110_1110__0000_1111__1100_0011__0011_1111; + mov b, EBX; + } + + if(b != 0b1110_1111__1111_1111__1111_1111__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_01_E.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,30 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_01_E; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint b = 0b1110_1111__1111_1111__1111_1110__0111_1111; + + asm{ + or b, 0b0110_1110__0000_1111__1100_0011__0011_1111; + } + + if(b != 0b1110_1111__1111_1111__1111_1111__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_01_F.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_01_F; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a = 0b1110_1111__1111_1111__1111_1110__0111_1111; + + asm{ + mov EAX, a; + or EAX, 0b0110_1110__0000_1111__1100_0011__0011_1111; + mov a, EAX; + } + + if(a != 0b1110_1111__1111_1111__1111_1111__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_or_02_A.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_or_02_A.d Fri May 19 17:44:18 2006 +0000 @@ -4,24 +4,29 @@ module dstress.run.a.asm_or_02_A; -int main(){ - version(D_InlineAsm_X86){ - uint a; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a = 0b0110_1110__0000_1111__1100_0011__0011_1111; + ushort b = 0b1111_1110__0111_1111; asm{ - mov EAX, 0x45_FD_BC_67; - mov AL, 0b0100_0001; - or AL, 0b0001_1000; - mov a, EAX; + mov EAX, a; + or b, AX; } - if(a != (0x45_FD_BC_00 | 0b0101_1001)){ + if(b != 0b1111_1111__0111_1111){ assert(0); } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_or_02_B.d Fri May 19 16:40:22 2006 +0000 +++ b/run/a/asm_or_02_B.d Fri May 19 17:44:18 2006 +0000 @@ -4,24 +4,31 @@ module dstress.run.a.asm_or_02_B; -int main(){ - version(D_InlineAsm_X86){ - uint a; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a = 0b1110_1111__1111_1111__1111_1110__0111_1111; + uint b = 0b0110_1110__0000_1111__1100_0011__0011_1111; asm{ - mov EAX, 0x45_FD_BC_67; - mov AX, 0b0000_1111_0100_0001; - or AX, 0b1010_0001_0001_1000; - mov a, EAX; + mov EAX, a; + mov EBX, b; + or BX, AX; + mov b, EBX; } - if(a != (0x45_FD_00_00 | 0b1010_1111_0101_1001)){ + if(b != 0b0110_1110__0000_1111__1111_1111__0111_1111){ assert(0); } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_02_C.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,33 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_02_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + ushort a = 0b1111_1110__0111_1111; + uint b = 0b0110_1110__0000_1111__1100_0011__0011_1111; + + asm{ + mov EBX, b; + or BX, a; + mov b, EBX; + } + + if(b != 0b0110_1110__0000_1111__1111_1111__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_02_D.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_02_D; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint b = 0b1110_1111__1111_0000__1111_1110__0111_1111; + + asm{ + mov EBX, b; + or BX, 0b1100_0011__0011_1111; + mov b, EBX; + } + + if(b != 0b1110_1111__1111_0000__1111_1111__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_02_E.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,30 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_02_E; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + ushort b = 0b1111_1110__0111_1111; + + asm{ + or b, 0b1100_0011__0011_1111; + } + + if(b != 0b1111_1111__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_02_F.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_02_F; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a = 0b1110_1111__1111_0000__1111_1110__0111_1111; + + asm{ + mov EAX, a; + or AX, 0b1100_0011__0011_1111; + mov a, EAX; + } + + if(a != 0b1110_1111__1111_0000__1111_1111__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_03_A.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_03_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a = 0b0110_1110__0000_1111__1100_0011__0011_1111; + ubyte b = 0b0111_0111; + + asm{ + mov EAX, a; + or b, AL; + } + + if(b != 0b0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_03_B.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,34 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_03_B; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a = 0b1110_1111__1111_1111__1111_1110__0111_1111; + uint b = 0b0110_1110__0000_1111__1100_0011__0011_0111; + + asm{ + mov EAX, a; + mov EBX, b; + or BL, AL; + mov b, EBX; + } + + if(b != 0b0110_1110__0000_1111__1100_0011__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_03_C.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,33 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_03_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + ubyte a = 0b0111_0111; + uint b = 0b0110_1110__0000_1111__1100_0011__0011_1111; + + asm{ + mov EBX, b; + or BL, a; + mov b, EBX; + } + + if(b != 0b0110_1110__0000_1111__1100_0011__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_03_D.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_03_D; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint b = 0b1110_1111__1111_0000__1111_1110__0111_0111; + + asm{ + mov EBX, b; + or BL, 0b0011_1111; + mov b, EBX; + } + + if(b != 0b1110_1111__1111_0000__1111_1110__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_03_E.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,30 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_03_E; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + ubyte b = 0b0111_0111; + + asm{ + or b, 0b0011_1111; + } + + if(b != 0b0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_or_03_F.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_or_03_F; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + uint a = 0b1110_1111__1111_0000__1111_1110__0111_0111; + + asm{ + mov EAX, a; + or AL, 0b0011_1111; + mov a, EAX; + } + + if(a != 0b1110_1111__1111_0000__1111_1110__0111_1111){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_orpd_01_A.d Fri May 19 17:44:18 2006 +0000 @@ -0,0 +1,42 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_orpd_01_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + static double[2] A = [4.0, 8.0]; + static double[2] B = [3.0, 4.0]; + double[2] c; + + asm{ + movupd XMM0, A; + movupd XMM1, B; + orpd XMM0, XMM1; + movupd c, XMM0; + } + + if(c[0] != 6.0){ + assert(0); + } + if(c[1] != 16.0){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}