# HG changeset patch # User thomask # Date 1146494324 0 # Node ID 9acd7becc7534722d0ebd9ba0ac8f8af49816fa5 # Parent 642e3fea11a9a90e9084aeb05e206320ec586659 added 3DNow! tests - all of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115 diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pavgusb_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pavgusb_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pavgusb_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const ubyte[8] A = [1, 2, 3, 4, 5, 6, 7, 8]; + const ubyte[8] B = [5, 2, 1, 8, 15, 4, 1, 4]; + const ubyte[8] C = [3, 2, 2, 6, 10, 5, 4, 6]; + ubyte[8] d; + + asm{ + emms; + movq MM0, A; + pavgusb MM0, B; + movq d, MM0; + } + + for(size_t i = 0; i < C.length; i++){ + if(d[i] != C[i]){ + assert(0); + } + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pavgusb_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pavgusb_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,33 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pavgusb_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const ubyte[8] A = [1, 2, 3, 4, 5, 6, 7, 8]; + const ubyte[8] B = [5, 2, 1, 8, 15, 4, 1, 4]; + const ubyte[8] C = [3, 2, 2, 6, 10, 5, 4, 6]; + ubyte[8] d; + + asm{ + emms; + movq MM0, A; + movq MM1, B + pavgusb MM0, MM1; + movq d, MM0; + } + + for(size_t i = 0; i < C.length; i++){ + if(d[i] != C[i]){ + assert(0); + } + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pf2id_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pf2id_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,29 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pf2id_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, -456.0f]; + int[2] b; + + asm{ + pf2id MM0, A; + movq b, MM0; + } + + if(b[0] != A[0]){ + assert(0); + } + if(b[1] != A[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pf2id_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pf2id_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,30 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pf2id_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, -456.0f]; + int[2] b; + + asm{ + movq MM1, A; + pf2id MM0, MM1; + movq b, MM0; + } + + if(b[0] != A[0]){ + assert(0); + } + if(b[1] != A[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfacc_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfacc_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfacc_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, -456.0f]; + const float[2] B = [12.0f, 17.0f]; + float[2] c; + + asm{ + movq MM0, A; + pfacc MM0, B; + movq c, MM0; + } + + if(c[0] != -333.0f){ + assert(0); + } + if(c[1] != 29.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfacc_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfacc_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfacc_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, -456.0f]; + const float[2] B = [12.0f, 17.0f]; + float[2] c; + + asm{ + movq MM0, A; + movq MM1, B; + pfacc MM0, MM1; + movq c, MM0; + } + + if(c[0] != -333.0f){ + assert(0); + } + if(c[1] != 29.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfadd_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfadd_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfadd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, -456.0f]; + const float[2] B = [12.0f, 17.0f]; + float[2] c; + + asm{ + movq MM0, A; + pfadd MM0, B; + movq c, MM0; + } + + if(c[0] != 135.0f){ + assert(0); + } + if(c[1] != -449.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfadd_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfadd_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfadd_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, -456.0f]; + const float[2] B = [12.0f, 17.0f]; + float[2] c; + + asm{ + movq MM0, A; + movq MM1, B; + pfadd MM0, MM1; + movq c, MM0; + } + + if(c[0] != 135.0f){ + assert(0); + } + if(c[1] != -449.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfcmpeq_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfcmpeq_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfcmpeq_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, -456.0f]; + const float[2] B = [123.0f, 456.0f]; + uint[2] c; + + asm{ + movq MM0, A; + pfcmpeq MM0, B; + movq c, MM0; + } + + if(c[0] != uint.max){ + assert(0); + } + if(c[1] != 0){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfcmpeq_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfcmpeq_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfcmpeq_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, -456.0f]; + const float[2] B = [123.0f, 456.0f]; + uint[2] c; + + asm{ + movq MM0, A; + movq MM1, B + pfcmpeq MM0, MM1; + movq c, MM0; + } + + if(c[0] != uint.max){ + assert(0); + } + if(c[1] != 0){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfcmpge_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfcmpge_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfcmpge_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, 457.0f]; + const float[2] B = [124.0f, 456.0f]; + uint[2] c; + + asm{ + movq MM0, A; + pfcmpge MM0, B; + movq c, MM0; + } + + if(c[0] != 0){ + assert(0); + } + if(c[1] != 0xFFFF_FFFF){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfcmpge_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfcmpge_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfcmpge_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, 458.0f]; + const float[2] B = [124.0f, 456.0f]; + uint[2] c; + + asm{ + movq MM0, A; + movq MM1, B + pfcmpge MM0, MM1; + movq c, MM0; + } + + if(c[0] != 0){ + assert(0); + } + if(c[1] != 0xFFFF_FFFF){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfcmpgt_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfcmpgt_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfcmpgt_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, 457.0f]; + const float[2] B = [123.0f, 456.0f]; + uint[2] c; + + asm{ + movq MM0, A; + pfcmpgt MM0, B; + movq c, MM0; + } + + if(c[0] != 0xFFFF_FFFF){ + assert(0); + } + if(c[1] != 0xFFFF_FFFF){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfcmpgt_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfcmpgt_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfcmpgt_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [123.0f, 457.0f]; + const float[2] B = [123.0f, 456.0f]; + uint[2] c; + + asm{ + movq MM0, A; + movq MM1, B; + pfcmpgt MM0, MM1; + movq c, MM0; + } + + if(c[0] != 0xFFFF_FFFF){ + assert(0); + } + if(c[1] != 0xFFFF_FFFF){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfmax_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfmax_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfmax_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [-123.0f, 457.0f]; + const float[2] B = [123.0f, 456.0f]; + float[2] c; + + asm{ + movq MM0, A; + pfmax MM0, B; + movq c, MM0; + } + + if(c[0] != B[0]){ + assert(0); + } + if(c[1] != A[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfmax_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfmax_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfmax_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [-123.0f, 457.0f]; + const float[2] B = [123.0f, 456.0f]; + float[2] c; + + asm{ + movq MM0, A; + movq MM1, B; + pfmax MM0, MM1; + movq c, MM0; + } + + if(c[0] != B[0]){ + assert(0); + } + if(c[1] != A[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfmin_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfmin_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfmin_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [-123.0f, 457.0f]; + const float[2] B = [123.0f, 456.0f]; + float[2] c; + + asm{ + movq MM0, A; + pfmin MM0, B; + movq c, MM0; + } + + if(c[0] != A[0]){ + assert(0); + } + if(c[1] != B[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfmin_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfmin_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfmin_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [-123.0f, 457.0f]; + const float[2] B = [123.0f, 456.0f]; + float[2] c; + + asm{ + movq MM0, A; + movq MM1, B; + pfmin MM0, MM1; + movq c, MM0; + } + + if(c[0] != A[0]){ + assert(0); + } + if(c[1] != B[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfmul_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfmul_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfmul_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [-3.0f, 7.0f]; + const float[2] B = [2.0f, 8.0f]; + float[2] c; + + asm{ + movq MM0, A; + pfmul MM0, B; + movq c, MM0; + } + + if(c[0] != -6.0f){ + assert(0); + } + if(c[1] != 56.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfmul_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfmul_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfmul_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [-3.0f, 7.0f]; + const float[2] B = [2.0f, 8.0f]; + float[2] c; + + asm{ + movq MM0, A; + movq MM1, B; + pfmul MM0, MM1; + movq c, MM0; + } + + if(c[0] != -6.0f){ + assert(0); + } + if(c[1] != 56.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrcp_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrcp_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,38 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrcp_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [2.0f, -0.5f]; + float[2] c; + + asm{ + pfrcp MM0, A; + movq c, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 11)){ + assert(0); + } + + c[1] += 2.0f; + if(c[1] < 0.0f){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * (1 << 11)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrcp_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrcp_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,39 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrcp_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [2.0f, -0.5f]; + float[2] c; + + asm{ + movq MM1, A; + pfrcp MM0, MM1; + movq c, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 11)){ + assert(0); + } + + c[1] += 2.0f; + if(c[1] < 0.0f){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * (1 << 11)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrcpit1_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrcpit1_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,39 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrcpit1_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [2.0f, -0.5f]; + float[2] c; + + asm{ + pfrcp MM0, A; + pfrcpit1 MM0, A; + movq c, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 8)){ + assert(0); + } + + c[1] += 2.0f; + if(c[1] < 0.0f){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * (1 << 8)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrcpit1_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrcpit1_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrcpit1_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [2.0f, -0.5f]; + float[2] c; + + asm{ + movq MM1, A; + pfrcp MM0, MM1; + pfrcpit1 MM0, MM1; + movq c, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 11)){ + assert(0); + } + + c[1] += 2.0f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 11)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrcpit2_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrcpit2_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrcpit2_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [2.0f, -0.5f]; + float[2] c; + + asm{ + pfrcp MM0, A; + pfrcpit1 MM0, A; + pfrcpit2 MM0, A; + movq c, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 3)){ + assert(0); + } + + c[1] += 2.0f; + if(c[1] < 0.0f){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * (1 << 3)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrcpit2_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrcpit2_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,41 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrcpit2_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [2.0f, -0.5f]; + float[2] c; + + asm{ + movq MM1, A; + pfrcp MM0, MM1; + pfrcpit1 MM0, MM1; + pfrcpit2 MM0, MM1; + movq c, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 8)){ + assert(0); + } + + c[1] += 2.0f; + if(c[1] < 0.0f){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * (1 << 8)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrsqrt_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrsqrt_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,38 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrsqrt_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [4.0f, 0.5f]; + float[2] b; + + asm{ + pfrsqrt MM0, A; + movq b, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 11)){ + assert(0); + } + + c[1] -= 4.0f; + if(c[1] < 0.0f){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * (1 << 11)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrsqrt_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrsqrt_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,39 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrsqrt_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [4.0f, 0.5f]; + float[2] c; + + asm{ + movq MM1, A; + pfrsqrt MM0, MM1; + movq c, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 11)){ + assert(0); + } + + c[1] -= 4.0f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 11)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrsqrtit1_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrsqrtit1_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,39 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrsqrtit1_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [4.0f, 0.5f]; + float[2] c; + + asm{ + pfrsqrt MM0, A; + pfrsqit1 MM0, A; + movq c, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 8)){ + assert(0); + } + + c[1] -= 4.0f; + if(c[1] < 0.0f){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * (1 << 8)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfrsqrtit1_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfrsqrtit1_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfrsqrtit1_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [4.0f, 0.5f]; + float[2] c; + + asm{ + movq MM1, A; + pfrsqrt MM0, MM1; + pfrsqit1 MM0, MM1; + movq c, MM0; + } + + c[0] -= 0.5f; + if(c[0] < 0.0f){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * (1 << 8)){ + assert(0); + } + + c[1] -= 4.0f; + if(c[1] < 0.0f){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * (1 << 8)){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfsub_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfsub_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,33 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfsub_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [6.0f, 2.0f]; + const float[2] B = [2.0f, -1.0f]; + float[2] c; + + asm{ + movq MM0, A; + movq MM1, B; + pfsub MM0, MM1; + movq c, MM0; + } + + if(c[0] != 4.0f){ + assert(0); + } + + if(c[1] != 3.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfsub_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfsub_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfsub_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [6.0f, 2.0f]; + const float[2] B = [2.0f, -1.0f]; + float[2] c; + + asm{ + movq MM0, A; + pfsub MM0, B; + movq c, MM0; + } + + if(c[0] != 4.0f){ + assert(0); + } + + if(c[1] != 3.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfsubr_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfsubr_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,33 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfsubr_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [6.0f, 2.0f]; + const float[2] B = [2.0f, -1.0f]; + float[2] c; + + asm{ + movq MM0, A; + movq MM1, B; + pfsubr MM0, MM1; + movq c, MM0; + } + + if(c[0] != -4.0f){ + assert(0); + } + + if(c[1] != -3.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pfsubr_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pfsubr_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pfsubr_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[2] A = [6.0f, 2.0f]; + const float[2] B = [2.0f, -1.0f]; + float[2] c; + + asm{ + movq MM0, A; + pfsubr MM0, B; + movq c, MM0; + } + + if(c[0] != -4.0f){ + assert(0); + } + + if(c[1] != -3.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pi2fd_01_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pi2fd_01_A.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pi2fd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const int[2] A = [6, 2]; + float[2] b; + + asm{ + movq MM1, A; + pi2fd MM0, MM1; + movq b, MM0; + } + + if(b[0] != 6.0f){ + assert(0); + } + + if(b[1] != 2.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} diff -r 642e3fea11a9 -r 9acd7becc753 run/a/asm_pi2fd_01_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_pi2fd_01_B.d Mon May 01 14:38:44 2006 +0000 @@ -0,0 +1,30 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_pi2fd_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const int[2] A = [6, 2]; + float[2] b; + + asm{ + pi2fd MM0, A; + movq b, MM0; + } + + if(b[0] != 6.0f){ + assert(0); + } + + if(b[1] != 2.0f){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}