Mercurial > projects > dstress
changeset 1116:5aa513911316
partial -fPIC fixes
line wrap: on
line diff
--- a/run/a/asm_addpd_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_addpd_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,19 +16,21 @@ int main(){ haveSSE2!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = 1.123; a[1] = 1234.5; - double[] b = new double[2]; + double* b = new double[2]; b[0] = 0.0012; b[1] = -2.4; asm{ - movupd XMM0, a; - movupd XMM1, b; + mov EAX, a; + movupd XMM0, [EAX]; + mov EAX, b; + movupd XMM1, [EAX]; addpd XMM0, XMM1; - movupd b, XMM0; + movupd [EAX], XMM0; } b[0] -= 1.1242;
--- a/run/a/asm_addps_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_addps_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,23 +16,25 @@ int main(){ haveSSE!()(); - float[] a = new float[4]; + float* a = new float[4]; a[0] = 1.0f; a[1] = 20.0f; a[2] = 0.4f; a[3] = 1.0f; - float[] b = new float[4]; + float* b = new float[4]; b[0] = 4.0f; b[1] = 10.0f; b[2] = 4.0f; b[3] = -1.0f; asm{ - movups XMM0, a; - movups XMM1, b; + mov EAX, a; + movups XMM0, [EAX]; + mov EAX, b; + movups XMM1, [EAX]; addps XMM0, XMM1; - movups b, XMM0; + movups [EAX], XMM0; } b[0] -= 5.0f;
--- a/run/a/asm_addsd_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_addsd_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,19 +16,21 @@ int main(){ haveSSE2!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = 1.0; a[1] = 20.0; - double[] b = new double[2]; + double* b = new double[2]; b[0] = 4.0; b[1] = 10.0; asm{ - movupd XMM0, a; - movupd XMM1, b; + mov EAX, a; + movupd XMM0, [EAX]; + mov EAX, b; + movupd XMM1, [EAX]; addsd XMM0, XMM1; - movupd b, XMM0; + movupd [EAX], XMM0; } b[0] -= 5.0;
--- a/run/a/asm_addss_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_addss_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,23 +16,25 @@ int main(){ haveSSE!()(); - float[] a = new float[4]; + float* a = new float[4]; a[0] = 1.0f; a[1] = 20.0f; a[2] = 0.4f; a[3] = 2.0f; - float[] b = new float[4]; + float* b = new float[4]; b[0] = 4.0f; b[1] = 10.0f; b[2] = -4.0f; b[3] = -0.4f; asm{ - movups XMM0, a; - movups XMM1, b; + mov EAX, a; + movups XMM0, [EAX]; + mov EAX, b; + movups XMM1, [EAX]; addss XMM0, XMM1; - movups b, XMM0; + movups [EAX], XMM0; } b[0] -= 5.0f;
--- a/run/a/asm_addsubpd_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_addsubpd_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,19 +16,21 @@ int main(){ haveSSE3!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = 1.0; a[1] = 30.0; - double[] b = new double[2]; + double* b = new double[2]; b[0] = 4.0; b[1] = 10.0; asm{ - movupd XMM0, a; - movupd XMM1, b; + mov EAX, a; + movupd XMM0, [EAX]; + mov EAX, b; + movupd XMM1, [EAX]; addsubpd XMM0, XMM1; - movupd b, XMM0; + movupd [EAX], XMM0; } b[0] += 3.0;
--- a/run/a/asm_addsubps_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_addsubps_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,23 +16,25 @@ int main(){ haveSSE3!()(); - float[] a = new float[4]; + float* a = new float[4]; a[0] = 1.0f; a[1] = 2.0f; a[2] = 3.0f; a[3] = 4.0f; - float[] b = new float[4]; + float* b = new float[4]; b[0] = 0.1f; b[1] = 0.2f; b[2] = 0.3f; b[3] = 0.4f; asm{ - movups XMM0, a; - movups XMM1, b; + mov EAX, a; + movups XMM0, [EAX]; + mov EAX, b; + movups XMM1, [EAX]; addsubps XMM0, XMM1; - movups b, XMM0; + movups [EAX], XMM0; } b[0] -= 0.9f;
--- a/run/a/asm_clflush_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_clflush_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ uint a; ubyte b = 1; @@ -34,8 +34,8 @@ } return 0; - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmpeqsd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpeqsd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpeqsd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + double a = 1.2; double b = 1.2; ulong res; @@ -16,11 +26,13 @@ movq res, XMM0; } - assert(res == res.max); + if(res != res.max){ + 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_cmpeqss_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpeqss_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -2,10 +2,20 @@ // $Date$ // $Author$ -module dstress.run.a.asm_cmpltss_01; +module dstress.run.a.asm_cmpeqss_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + float a = 1.2; float b = 1.2; uint res; @@ -16,11 +26,13 @@ movd res, XMM0; } - assert(res == res.max); + if(res != res.max){ + 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_cmpiss_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpiss_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -12,13 +12,13 @@ version(runTest){ int main(){ - float[] a = new float[4]; + float* a = new float[4]; a[0] = 1.0f; a[1] = 2.0f; a[2] = 3.0f; a[3] = -8.0f; - float[] b = new float[4]; + float* b = new float[4]; b[0] = 0.0f; b[1] = 4.0f; b[2] = 3.0f; @@ -27,8 +27,10 @@ uint i; asm{ - movdqu XMM0, a; - movdqu XMM1, b; + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; comiss XMM0, XMM1; mov EAX, 0; jnc done_1; @@ -44,10 +46,11 @@ } asm{ - movdqu XMM0, b; - movdqu XMM1, a; + mov EAX, b; + movdqu XMM0, [EAX]; + mov EAX, a; + movdqu XMM1, [EAX]; comiss XMM0, XMM1; - emms; mov EAX, 0; jnc done_2; jz done_2;
--- a/run/a/asm_cmplesd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmplesd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmplesd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + double a = 1.2; double b = 1.2; ulong res; @@ -16,11 +26,13 @@ movq res, XMM0; } - assert(res == res.max); + if(res != res.max){ + 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_cmpless_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpless_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpless_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + float a = 1.2; float b = 1.2; uint res; @@ -16,11 +26,13 @@ movd res, XMM0; } - assert(res == res.max); + if(res != res.max){ + 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_cmpltsd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpltsd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpltsd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + double a = 1.2; double b = 1.2; ulong res; @@ -16,11 +26,13 @@ movq res, XMM0; } - assert(res == 0); + if(res != 0){ + 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_cmpltss_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpltss_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpltss_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + float a = 1.2; float b = 1.2; uint res; @@ -16,11 +26,13 @@ movd res, XMM0; } - assert(res == 0); + if(res != 0){ + 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_cmpneqsd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpneqsd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpneqsd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + double a = 1.2; double b = 1.2; ulong res; @@ -16,11 +26,13 @@ movq res, XMM0; } - assert(res == 0); + if(res != 0){ + 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_cmpneqss_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpneqss_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpnltss_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + float a = 1.2; float b = 1.2; uint res; @@ -16,11 +26,13 @@ movd res, XMM0; } - assert(res == 0); + if(res != 0){ + 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_cmpnlesd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpnlesd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpnlesd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + double a = 1.2; double b = 1.2; ulong res; @@ -16,11 +26,13 @@ movq res, XMM0; } - assert(res == 0); + if(res != 0){ + 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_cmpnless_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpnless_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpnless_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + float a = 1.2; float b = 1.2; uint res; @@ -16,11 +26,13 @@ movd res, XMM0; } - assert(res == 0); + if(res != 0){ + 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_cmpnltsd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpnltsd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpnltsd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + double a = 1.2; double b = 1.2; ulong res; @@ -16,11 +26,13 @@ movq res, XMM0; } - assert(res == res.max); + if(res != res.max){ + 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_cmpnltss_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpnltss_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpnltss_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + float a = 1.2; float b = 1.2; uint res; @@ -16,11 +26,13 @@ movd res, XMM0; } - assert(res == res.max); + if(res != res.max){ + 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_cmpordsd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpordsd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpordsd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + double a = 1.2; double b = 1.2; ulong res; @@ -16,11 +26,13 @@ movq res, XMM0; } - assert(res == res.max); + if(res != res.max){ + 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_cmpordss_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpordss_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpordss_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + float a = 1.2; float b = 1.2; uint res; @@ -16,11 +26,13 @@ movd res, XMM0; } - assert(res == res.max); + if(res != res.max){ + 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_cmppd_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmppd_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,21 +16,24 @@ int main(){ haveSSE2!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = 1.0; a[1] = 2.0; - double[] b = new double[2]; + double* b = new double[2]; b[0] = 1.1; b[1] = 2.0; - ulong[] c = new ulong[2]; + ulong* c = new ulong[2]; asm{ - movupd XMM0, a; - movupd XMM1, b; + mov EAX, a; + movupd XMM0, [EAX]; + mov EAX, b; + movupd XMM1, [EAX]; cmppd XMM0, XMM1, 0; - movupd c, XMM0; + mov EAX, c; + movupd [EAX], XMM0; } if(c[0]){
--- a/run/a/asm_cmpps_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpps_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,25 +16,28 @@ int main(){ haveSSE!()(); - float[] a = new float[4]; + float* a = new float[4]; a[0] = 1.0f; a[1] = 2.0f; a[2] = 3.0f; a[3] = 4.0f; - float[] b = new float[4]; + float* b = new float[4]; b[0] = 1.1f; b[1] = 1.9f; b[2] = 3.0f; b[3] = 4.1f; - uint[] c = new uint[4]; + uint* c = new uint[4]; asm{ - movups XMM0, a; - movups XMM1, b; + mov EAX, a; + movups XMM0, [EAX]; + mov EAX, b; + movups XMM1, [EAX]; cmpps XMM0, XMM1, 0; - movups c, XMM0; + mov EAX, c; + movups [EAX], XMM0; } if(c[0]){
--- a/run/a/asm_cmpsd_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpsd_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,23 +16,27 @@ int main(){ haveSSE2!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = 1.0; a[1] = 2.0; - double[] b = new double[2]; + double* b = new double[2]; b[0] = 1.0; b[1] = 2.0; - ulong[] c = new ulong[2]; - double[] d = new double[2]; + ulong* c = new ulong[2]; + double* d = new double[2]; asm{ - movupd XMM0, a; - movupd XMM1, b; + mov EAX, a; + movupd XMM0, [EAX]; + mov EAX, b; + movupd XMM1, [EAX]; cmpsd XMM0, XMM1, 0; - movdqu c, XMM0; - movupd d, XMM0; + mov EAX, c; + movdqu [EAX], XMM0; + mov EAX, d; + movupd [EAX], XMM0; } if(c[0] != ulong.max){
--- a/run/a/asm_cmpsd_01_B.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpsd_01_B.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,19 +16,22 @@ int main(){ haveSSE2!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = 1.0; a[1] = 2.0; double b = 1.0; - ulong[] c = new ulong[2]; - double[] d = new double[2]; + ulong* c = new ulong[2]; + double* d = new double[2]; asm{ - movupd XMM0, a; + mov EAX, a; + movupd XMM0, [EAX]; cmpsd XMM0, b, 0; - movdqu c, XMM0; - movupd d, XMM0; + mov EAX, c; + movdqu [EAX], XMM0; + mov EAX, d; + movupd [EAX], XMM0; } if(c[0] != ulong.max){
--- a/run/a/asm_cmpss_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpss_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -10,36 +10,48 @@ version = runTest; } -int main(){ - version(runTest){ - static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; - uint[4] c; - float[4] f; +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + + float* a = new float[4]; + a[0] = 1.0f; + a[1] = 2.0f; + a[2] = 3.0f; + a[3] = 4.0f; + + uint* c = new uint[4]; + float* f = new float[4]; asm{ - movups XMM0, A; - movups XMM1, A; + mov EAX, a; + movups XMM0, [EAX]; + movups XMM1, [EAX]; cmpss XMM0, XMM1, 0; - movdqu c, XMM0; - movups f, XMM0; + mov EAX, c; + movdqu [EAX], XMM0; + mov EAX, f; + movups [EAX], XMM0; } if(c[0] != uint.max){ assert(0); } - if(f[1] != A[1]){ + if(f[1] != a[1]){ assert(0); } - if(f[2] != A[2]){ + if(f[2] != a[2]){ assert(0); } - if(f[3] != A[3]){ + if(f[3] != a[3]){ assert(0); } return 0; - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmpss_01_B.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpss_01_B.d Sun Aug 20 11:18:32 2006 +0000 @@ -10,36 +10,48 @@ version = runTest; } -int main(){ - version(runTest){ - static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; - static float B = 1.0f; - uint[4] c; - float[4] f; +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + + float* a = new float[4]; + a[0] = 1.0f; + a[1] = 2.0f; + a[2] = 3.0f; + a[3] = 4.0f; + + float b = 1.0f; + uint* c = new uint[4]; + float* f = new float[4]; asm{ - movups XMM0, A; - cmpss XMM0, B, 0; - movdqu c, XMM0; - movups f, XMM0; + mov EAX, a; + movups XMM0, [EAX]; + cmpss XMM0, b, 0; + mov EAX, c; + movdqu [EAX], XMM0; + mov EAX, f; + movups [EAX], XMM0; } if(c[0] != uint.max){ assert(0); } - if(f[1] != A[1]){ + if(f[1] != a[1]){ assert(0); } - if(f[2] != A[2]){ + if(f[2] != a[2]){ assert(0); } - if(f[3] != A[3]){ + if(f[3] != a[3]){ assert(0); } return 0; - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmpunordsd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpunordsd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmplesd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + double a = 1.2; double b = 1.1; ulong res; @@ -16,11 +26,13 @@ movq res, XMM0; } - assert(res == 0); + if(res != 0){ + 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_cmpunordss_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpunordss_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cmpunordss_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + float a = 1.2; float b = 1.2; uint res; @@ -16,11 +26,13 @@ movd res, XMM0; } - assert(res == 0); + if(res != 0){ + 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_cmpxch8b_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpxch8b_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_cmpxch8b_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(){ uint a = 1; uint d = 1; ulong c = 0; @@ -21,9 +27,15 @@ mov d, EDX; } - assert(c==c.max); - assert(a==0); - assert(d==0); + if(c != c.max){ + assert(0); + } + if(a != 0){ + assert(0); + } + if(d != 0){ + assert(0); + } c=1; @@ -39,14 +51,19 @@ mov d, EDX; } - - assert(c==1); - assert(a==1); - assert(d==0); + if(c != 1){ + assert(0); + } + if(a != 1){ + assert(0); + } + if(d != 0){ + 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_cmpxchg_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpxchg_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ ubyte a = 0; ubyte c = 3; asm{ @@ -46,8 +46,8 @@ } return 0; - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmpxchg_01_B.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpxchg_01_B.d Sun Aug 20 11:18:32 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ ushort a = 0; ushort c = 3; asm{ @@ -46,8 +46,8 @@ } return 0; - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmpxchg_01_C.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpxchg_01_C.d Sun Aug 20 11:18:32 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ uint a = 0; uint c = 3; asm{ @@ -46,8 +46,8 @@ } return 0; - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmpxchg_02_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpxchg_02_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -2,7 +2,7 @@ // $Date$ // $Author$ -module dstress.run.a.asm_cmpxchg_01_A; +module dstress.run.a.asm_cmpxchg_02_A; version(D_InlineAsm_X86){ version = runTest; @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ ubyte a = 0; ubyte c = 3; asm{ @@ -50,8 +50,8 @@ } return 0; - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmpxchg_02_B.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpxchg_02_B.d Sun Aug 20 11:18:32 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ ushort a = 0; ushort c = 3; asm{ @@ -50,8 +50,8 @@ } return 0; - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmpxchg_02_C.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cmpxchg_02_C.d Sun Aug 20 11:18:32 2006 +0000 @@ -2,7 +2,7 @@ // $Date$ // $Author$ -module dstress.run.a.asm_cmpxchg_01_C; +module dstress.run.a.asm_cmpxchg_02_C; version(D_InlineAsm_X86){ version = runTest; @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ uint a = 0; uint c = 3; asm{ @@ -50,8 +50,8 @@ } return 0; - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_comisd_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_comisd_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,17 +16,19 @@ int main(){ haveSSE2!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = 1.0; a[1] = 3.0; - double[] b = new double[2]; + double* b = new double[2]; b[0] = 4.0; b[1] = 3.0; asm{ - movupd XMM0, a; - movupd XMM1, b; + mov EAX, a; + movupd XMM0, [EAX]; + mov EAX, b; + movupd XMM1, [EAX]; comisd XMM0, XMM1; jz error; jp error;
--- a/run/a/asm_comiss_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_comiss_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,21 +16,23 @@ int main(){ haveSSE!()(); - float[] a = new float[4]; + float* a = new float[4]; a[0] = 0.0f; a[1] = 1.0f; a[2] = 3.0f; a[3] = 5.0f; - float[] b = new float[4]; + float* b = new float[4]; b[0] = 0.0f; b[1] = 2.0f; b[2] = 4.0f; b[3] = 6.0f; asm{ - movups XMM0, a; - movups XMM1, b; + mov EAX, a; + movups XMM0, [EAX]; + mov EAX, b; + movups XMM1, [EAX]; comiss XMM0, XMM1; jnz error; jp error;
--- a/run/a/asm_cvtdq2pd_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtdq2pd_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,18 +16,20 @@ int main(){ haveSSE2!()(); - int[] a = new int[4]; + int* a = new int[4]; a[0] = 0; a[1] = -1; a[2] = 2; a[3] = -3; - double[] b = new double[2]; + double* b = new double[2]; asm{ - movdqu XMM0, a; + mov EAX, a; + movdqu XMM0, [EAX]; cvtdq2pd XMM1, XMM0; - movdqu b, XMM1; + mov EAX, b; + movdqu [EAX], XMM1; } if(b[0] != 0){
--- a/run/a/asm_cvtdq2ps_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtdq2ps_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,18 +16,20 @@ int main(){ haveSSE2!()(); - int[] a = new int[4]; + int* a = new int[4]; a[0] = 0; a[1] = -1; a[2] = 2; a[3] = -3; - float[] b = new float[4]; + float* b = new float[4]; asm{ - movdqu XMM0, a; + mov EAX, a; + movdqu XMM0, [EAX]; cvtdq2ps XMM1, XMM0; - movdqu b, XMM1; + mov EAX, b; + movdqu [EAX], XMM1; } if(b[0] != 0.0f){
--- a/run/a/asm_cvtpd2dq_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtpd2dq_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -16,16 +16,18 @@ int main(){ haveSSE2!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = -2.0; a[1] = 4.0; - int[] b = new int[4]; + int* b = new int[4]; asm{ - movdqu XMM0, a; + mov EAX, a; + movdqu XMM0, [EAX]; cvtpd2dq XMM1, XMM0; - movdqu b, XMM1; + mov EAX, b; + movdqu [EAX], XMM1; } if(b[0] != -2){
--- a/run/a/asm_cvtpd2pi_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtpd2pi_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -17,15 +17,18 @@ haveSSE2!()(); haveMMX!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = -2.0; a[1] = 4.0; - int[] b = new int[2]; + + int* b = new int[2]; asm{ - movupd XMM0, a; + mov EAX, a; + movupd XMM0, [EAX]; cvtpd2pi MM0, XMM0; - movq b, MM0; + mov EAX, b; + movq [EAX], MM0; emms; }
--- a/run/a/asm_cvtpi2pd_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtpi2pd_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -17,16 +17,18 @@ haveSSE2!(); haveMMX!(); - int[] a = new int[2]; + int* a = new int[2]; a[0] = -3; a[1] = 2; - double[] b = new double[2]; + double* b = new double[2]; asm{ - movq MM0, a; + mov EAX, a; + movq MM0, [EAX]; cvtpi2pd XMM0, MM0; - movupd b, XMM0; + mov EAX, b; + movupd [EAX], XMM0; emms; }
--- a/run/a/asm_cvtpi2ps_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtpi2ps_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -17,23 +17,26 @@ haveSSE2!(); haveMMX!(); - int[] a = new int[2]; + int* a = new int[2]; a[0] = -3; a[1] = 2; - float[] b = new float[4]; + float* b = new float[4]; b[0] = 10.1f; b[1] = 20.2f; b[2] = 30.3f; b[3] = 40.4f; - float[] c = new float[4]; + float* c = new float[4]; asm{ - movq MM0, a; - movups XMM0, b; + mov EAX, a; + movq MM0, [EAX]; + mov EAX, b; + movups XMM0, [EAX]; cvtpi2ps XMM0, MM0; - movups c, XMM0; + mov EAX, c; + movups [EAX], XMM0; emms; }
--- a/run/a/asm_cvtps2pi_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtps2pi_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -17,18 +17,20 @@ haveSSE2!(); haveMMX!(); - float[] a = new float[4]; + float* a = new float[4]; a[0] = 1.0f; a[1] = 2.0f; a[2] = 3.0f; a[3] = 4.0f; - int[] b = new int[2]; + int* b = new int[2]; asm{ - movups XMM0, a; + mov EAX, a; + movups XMM0, [EAX]; cvtps2pi MM0, XMM0; - movq b, MM0; + mov EAX, b; + movq [EAX], MM0; emms; }
--- a/run/a/asm_cvtsd2si_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtsd2si_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cvtsd2si_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + uint i = 0; double f = 64.0f; @@ -14,12 +24,16 @@ mov i, EAX; } - assert(i==64); - assert(f==64.0f); + if(i != 64){ + assert(0); + } + if(f != 64.0f){ + 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_cvtsd2ss_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtsd2ss_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,23 +4,36 @@ module dstress.run.a.asm_cvtsd2ss_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + double d = 64.0f; float f = 0.0; - asm{ cvtsd2ss XMM0, d; movd f, XMM0; } - assert(d==64.0f); - assert(f==64.0f); + if(d != 64.0f){ + assert(0); + } + if(f != 64.0f){ + 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_cvtsi2sd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtsi2sd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cvtsi2sd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + int i = -23000; double d = 0.0f; @@ -14,12 +24,16 @@ movq d, XMM0; } - assert(d==-23000.0); - assert(i==-23000); + if(d != -23000.0){ + assert(0); + } + if(i != -23000){ + 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_cvtsi2ss_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtsi2ss_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cvtsi2ss_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + int i = -23000; float f = 0.0f; @@ -14,12 +24,16 @@ movd f, XMM0; } - assert(f==-23000.0); - assert(i==-23000); + if(f != -23000.0){ + assert(0); + } + if(i != -23000){ + 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_cvtss2sd_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtss2sd_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cvtss2sd_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + float f = -19.0f; double d = 0.0f; @@ -14,12 +24,16 @@ movq d, XMM0; } - assert(d==-19.0); - assert(f==-19.0); + if(d != -19.0){ + assert(0); + } + if(f != -19.0){ + 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_cvtss2si_01.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvtss2si_01.d Sun Aug 20 11:18:32 2006 +0000 @@ -4,8 +4,18 @@ module dstress.run.a.asm_cvtss2si_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + float f = -19.0f; int i = 0; @@ -14,12 +24,16 @@ mov i, EAX; } - assert(i==-19); - assert(f==-19.0); + if(i != -19){ + assert(0); + } + if(f != -19.0){ + 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_cvttpd2pi_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvttpd2pi_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -17,16 +17,18 @@ haveSSE2!()(); haveMMX!()(); - double[] a = new double[2]; + double* a = new double[2]; a[0] = -2.0; a[1] = 4.0; - int[] b = new int[2]; + int* b = new int[2]; asm{ - movupd XMM0, a; + mov EAX, a; + movupd XMM0, [EAX]; cvttpd2pi MM0, XMM0; - movq b, MM0; + mov EAX, b; + movq [EAX], MM0; emms; }
--- a/run/a/asm_cvttps2pi_01_A.d Fri Aug 18 07:16:20 2006 +0000 +++ b/run/a/asm_cvttps2pi_01_A.d Sun Aug 20 11:18:32 2006 +0000 @@ -17,18 +17,20 @@ haveSSE2!(); haveMMX!(); - float[] a = new float[4]; + float* a = new float[4]; a[0] = 1.0f; a[1] = 2.0f; a[2] = 3.0f; a[3] = 4.0f; - int[] b = new int[2]; + int* b = new int[2]; asm{ - movups XMM0, a; + mov EAX, a; + movups XMM0, [EAX]; cvttps2pi MM0, XMM0; - movq b, MM0; + mov EAX, b; + movq [EAX], MM0; emms; }