Mercurial > projects > dstress
changeset 1083:8d76f113a70c
fPIC fixes
author | thomask |
---|---|
date | Wed, 12 Jul 2006 14:03:00 +0000 |
parents | 36aa57f9a4b6 |
children | 91ff3e405be5 |
files | run/a/asm_cmpiss_01_A.d run/a/asm_cmpsd_01_B.d run/a/asm_cvtdq2pd_01_A.d run/a/asm_cvtdq2ps_01_A.d run/a/asm_cvtpd2dq_01_A.d run/a/asm_cvtpd2pi_01_A.d run/a/asm_cvtpi2pd_01_A.d run/a/asm_cvtpi2ps_01_A.d run/a/asm_cvtps2pi_01_A.d run/a/asm_cvttpd2pi_01_A.d run/a/asm_cvttps2pi_01_A.d run/a/asm_divpd_01_A.d run/a/asm_divps_01_A.d run/a/asm_divsd_01_A.d run/a/asm_divss_01_A.d run/a/asm_haddpd_01_A.d run/a/asm_haddps_01_A.d run/a/asm_offset_01_A.d |
diffstat | 18 files changed, 281 insertions(+), 121 deletions(-) [+] |
line wrap: on
line diff
--- a/run/a/asm_cmpiss_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cmpiss_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -4,18 +4,35 @@ module dstress.run.a.asm_cmpiss_01_A; -int main(){ - version(D_InlineAsm_X86){ - static float[4] A = [1.0f, 2.0f, 3.0f, -8.0f]; - static float[4] B = [0.0f, 4.0f, 3.0f, -4.0f]; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ + 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]; + b[0] = 0.0f; + b[1] = 4.0f; + b[2] = 3.0f; + b[3] = -4.0f; + uint i; asm{ - movdqu XMM0, A; - movdqu XMM1, B; + movdqu XMM0, a; + movdqu XMM1, b; comiss XMM0, XMM1; + emms; mov EAX, 0; - jc done_1; + jnc done_1; jz done_1; jp done_1; inc EAX; @@ -28,9 +45,10 @@ } asm{ - movdqu XMM0, B; - movdqu XMM1, A; + movdqu XMM0, b; + movdqu XMM1, a; comiss XMM0, XMM1; + emms; mov EAX, 0; jnc done_2; jz done_2; @@ -44,8 +62,8 @@ 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_cmpsd_01_B.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cmpsd_01_B.d Wed Jul 12 14:03:00 2006 +0000 @@ -10,30 +10,38 @@ version = runTest; } -int main(){ - version(runTest){ - static double[2] A = [1.0, 2.0]; - static double B = 1.0; - ulong[2] c; - double[2] d; +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + 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]; asm{ - movupd XMM0, A; - cmpsd XMM0, B, 0; + movupd XMM0, a; + cmpsd XMM0, b, 0; movdqu c, XMM0; movupd d, XMM0; + emms; } if(c[0] != ulong.max){ assert(0); } - if(d[1] != A[1]){ + if(d[1] != a[1]){ 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_cvtdq2pd_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cvtdq2pd_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -4,15 +4,31 @@ module dstress.run.a.asm_cvtdq2pd_01_A; -int main(){ - version(D_InlineAsm_X86){ - static int[4] A = [0, -1, 2, -3]; - double[2] b; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + int[] a = new int[4]; + a[0] = 0; + a[1] = -1; + a[2] = 2; + a[3] = -3; + + double[] b = new double[2]; asm{ - movdqu XMM0, A; + movdqu XMM0, a; cvtdq2pd XMM1, XMM0; movdqu b, XMM1; + emms; } if(b[0] != 0){ @@ -23,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_cvtdq2ps_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cvtdq2ps_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -4,15 +4,31 @@ module dstress.run.a.asm_cvtdq2ps_01_A; -int main(){ - version(D_InlineAsm_X86){ - static int[4] A = [0, -1, 2, -3]; - float[4] b; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + int[] a = new int[4]; + a[0] = 0; + a[1] = -1; + a[2] = 2; + a[3] = -3; + + float[] b = new float[4]; asm{ - movdqu XMM0, A; + movdqu XMM0, a; cvtdq2ps XMM1, XMM0; movdqu b, XMM1; + emms; } if(b[0] != 0.0f){ @@ -29,8 +45,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_cvtpd2dq_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cvtpd2dq_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -4,15 +4,29 @@ module dstress.run.a.asm_cvtpd2dq_01_A; -int main(){ - version(D_InlineAsm_X86){ - static double[2] A = [-2.0, 4.0]; - int[4] b; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + double[] a = new double[2]; + a[0] = -2.0; + a[1] = 4.0; + + int[] b = new int[4]; asm{ - movdqu XMM0, A; + movdqu XMM0, a; cvtpd2dq XMM1, XMM0; movdqu b, XMM1; + emms; } if(b[0] != -2){ @@ -29,8 +43,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_cvtpd2pi_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cvtpd2pi_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -17,11 +17,13 @@ haveSSE2!()(); haveMMX!()(); - static double[2] A = [-2.0, 4.0]; - int[2] b; + double[] a = new double[2]; + a[0] = -2.0; + a[1] = 4.0; + int[] b = new int[2]; asm{ - movupd XMM0, A; + movupd XMM0, a; cvtpd2pi MM0, XMM0; movq b, MM0; emms;
--- a/run/a/asm_cvtpi2pd_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cvtpi2pd_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -17,11 +17,14 @@ haveSSE2!(); haveMMX!(); - static int[2] A = [-3, 2]; - double[2] b; + int[] a = new int[2]; + a[0] = -3; + a[1] = 2; + + double[] b = new double[2]; asm{ - movq MM0, A; + movq MM0, a; cvtpi2pd XMM0, MM0; movupd b, XMM0; emms;
--- a/run/a/asm_cvtpi2ps_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cvtpi2ps_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -17,13 +17,21 @@ haveSSE2!(); haveMMX!(); - static int[2] A = [-3, 2]; - static float[4] B = [10.1f, 20.2f, 30.3f, 40.4f]; - float[4] c; + int[] a = new int[2]; + a[0] = -3; + a[1] = 2; + + 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]; asm{ - movq MM0, A; - movups XMM0, B; + movq MM0, a; + movups XMM0, b; cvtpi2ps XMM0, MM0; movups c, XMM0; emms; @@ -45,10 +53,10 @@ assert(0); } - if(c[2] != B[2]){ + if(c[2] != b[2]){ assert(0); } - if(c[3] != B[3]){ + if(c[3] != b[3]){ assert(0); } return 0;
--- a/run/a/asm_cvtps2pi_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cvtps2pi_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -17,11 +17,16 @@ haveSSE2!(); haveMMX!(); - static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; - int[2] b; + 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]; asm{ - movups XMM0, A; + movups XMM0, a; cvtps2pi MM0, XMM0; movq b, MM0; emms;
--- a/run/a/asm_cvttpd2pi_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cvttpd2pi_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -17,11 +17,14 @@ haveSSE2!()(); haveMMX!()(); - static double[2] A = [-2.0, 4.0]; - int[2] b; + double[] a = new double[2]; + a[0] = -2.0; + a[1] = 4.0; + + int[] b = new int[2]; asm{ - movupd XMM0, A; + movupd XMM0, a; cvttpd2pi MM0, XMM0; movq b, MM0; emms;
--- a/run/a/asm_cvttps2pi_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_cvttps2pi_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -17,11 +17,16 @@ haveSSE2!(); haveMMX!(); - static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; - int[2] b; + 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]; asm{ - movups XMM0, A; + movups XMM0, a; cvttps2pi MM0, XMM0; movq b, MM0; emms;
--- a/run/a/asm_divpd_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_divpd_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -10,15 +10,25 @@ version = runTest; } -int main(){ - version(runTest){ - static double[2] A = [-16.0, 12.0]; - static double[2] B = [2.0, 3.0]; - double[2] c; +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + double[] a = new double[2]; + a[0] = -16.0; + a[1] = 12.0; + + double[] b = new double[2]; + b[0] = 2.0; + b[1] = 3.0; + + double[] c = new double[2]; asm{ - movupd XMM0, A; - movupd XMM1, B; + movupd XMM0, a; + movupd XMM1, b; divpd XMM0, XMM1; movupd c, XMM0; } @@ -40,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_divps_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_divps_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -10,15 +10,27 @@ version = runTest; } -int main(){ - version(runTest){ - static float[4] A = [-16.0f, 12.0f, 3.3f, 0.0f]; - static float[4] B = [2.0f, 3.0f, 1.0f, 9.7f]; - float[4] c; +version(runTest){ + import addon.cpuinfo; + + int main(){ + float[] a = new float[4]; + a[0] = -16.0f; + a[1] = 12.0f; + a[2] = 3.3f; + a[3] = 0.0f; + + float[] b = new float[4]; + b[0] = 2.0f; + b[1] = 3.0f; + b[2] = 1.0f; + b[3] = 9.7f; + + float[] c = new float[4]; asm{ - movups XMM0, A; - movups XMM1, B; + movups XMM0, a; + movups XMM1, b; divps XMM0, XMM1; movups c, XMM0; } @@ -55,8 +67,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_divsd_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_divsd_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -10,17 +10,26 @@ version = runTest; } -int main(){ - version(runTest){ - static double[2] A = [-16.0f, 12.0]; - static double[2] B = [2.0f, 3.0f]; - double[2] c; +version(runTest){ + import addon.cpuinfo; + + int main(){ + double[] a = new double[2]; + a[0] = -16.0f; + a[1] = 12.0; + + double[] b = new double[2]; + b[0] = 2.0f; + b[1] = 3.0f; + + double[] c = new double[2]; asm{ - movupd XMM0, A; - movupd XMM1, B; + movupd XMM0, a; + movupd XMM1, b; divsd XMM0, XMM1; movupd c, XMM0; + emms; } c[0] += 8.0f; @@ -40,8 +49,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_divss_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_divss_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -10,15 +10,29 @@ version = runTest; } -int main(){ - version(runTest){ - static float[4] A = [-16.0f, 12.0f, 3.3f, 9.0f]; - static float[4] B = [2.0f, 3.0f, 1.0f, 2.0f]; - float[4] c; +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + + float[] a = new float[4]; + a[0] = -16.0f; + a[1] = 12.0f; + a[2] = 3.3f; + a[3] = 9.0f; + + float[] b = new float[4]; + b[0] = 2.0f; + b[1] = 3.0f; + b[2] = 1.0f; + b[3] = 2.0f; + + float[] c = new float[4]; asm{ - movups XMM0, A; - movups XMM1, B; + movups XMM0, a; + movups XMM1, b; divss XMM0, XMM1; movups c, XMM0; } @@ -55,8 +69,8 @@ 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_haddpd_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_haddpd_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -16,13 +16,19 @@ int main(){ haveSSE3!()(); - static double[2] A = [7.0, 11.0]; - static double[2] B = [2.0, 3.0]; - double[2] c; + double[] a = new double[2]; + a[0] = 7.0; + a[1] = 11.0; + + double[] b = new double[2]; + b[0] = 2.0; + b[1] = 3.0; + + double[] c = new double[2]; asm{ - movupd XMM0, A; - movupd XMM1, B; + movupd XMM0, a; + movupd XMM1, b; haddpd XMM0, XMM1; movupd c, XMM0; }
--- a/run/a/asm_haddps_01_A.d Wed Jul 12 14:02:36 2006 +0000 +++ b/run/a/asm_haddps_01_A.d Wed Jul 12 14:03:00 2006 +0000 @@ -16,15 +16,26 @@ int main(){ haveSSE3!()(); - static float[4] A = [6.1f, 7.2f, 8.3f, 9.4f]; - static float[4] B = [1.0f, 2.0f, 3.0f, 4.0f]; - float[4] c; + float[] a = new float[4]; + a[0] = 6.1f; + a[1] = 7.2f; + a[2] = 8.3f; + a[3] = 9.4f; + + float[] b = new float[4]; + b[0] = 1.0f; + b[1] = 2.0f; + b[2] = 3.0f; + b[3] = 4.0f; + + float[] c = new float[4]; asm{ - movups XMM0, A; - movups XMM1, B; + movups XMM0, a; + movups XMM1, b; haddps XMM0, XMM1; movups c, XMM0; + emms; } c[0] -= 13.3f;