Mercurial > projects > dstress
changeset 983:642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
author | thomask |
---|---|
date | Mon, 01 May 2006 11:18:12 +0000 |
parents | 825b27e25a95 |
children | 9acd7becc753 |
files | run/a/asm_movmskpd_01_A.d run/a/asm_movmskps_01_A.d run/a/asm_movntpd_01_A.d run/a/asm_movntps_01_A.d run/a/asm_movshdup_01_A.d run/a/asm_movsldup_01_A.d run/a/asm_movss_01.d run/a/asm_movss_01_A.d run/a/asm_movss_01_B.d run/a/asm_movss_01_C.d run/a/asm_movupd_01_A.d run/a/asm_movupd_01_B.d run/a/asm_movupd_01_C.d run/a/asm_movups_01_A.d run/a/asm_movups_01_B.d run/a/asm_movups_01_C.d run/a/asm_mulpd_01_A.d run/a/asm_mulpd_01_B.d run/a/asm_mulps_01_A.d run/a/asm_mulps_01_B.d run/a/asm_mulss_01_A.d run/a/asm_mulss_01_B.d |
diffstat | 22 files changed, 704 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movmskpd_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,28 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movmskpd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const double[2] a = [1.0, -1.0]; + uint b; + + asm{ + movdqu XMM0, a; + mov EAX, 0xFFFF_FFFF; + movmskpd EAX, XMM0; + mov b, EAX; + } + + if(b != 0xFFFF_FF02){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movmskps_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,28 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movmskps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[4] a = [1.0, -1.0, +0.0, -0.0]; + uint b; + + asm{ + movdqu XMM0, a; + mov EAX, 0xFFFF_FFFF; + movmskps EAX, XMM0; + mov b, EAX; + } + + if(b != 0xFFFF_FF06){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movntpd_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,29 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movntpd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const double[2] a = [1.0, -1.0]; + double[2] b; + + asm{ + movdqu XMM0, a; + movntpd b, XMM0; + } + + if(a[0] != b[0]){ + assert(0); + } + if(a[1] != b[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movntps_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,35 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movntps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[4] a = [1.0, -1.0, 0.0, 0.1]; + float[4] b; + + asm{ + movdqu XMM0, a; + movntps b, XMM0; + } + + if(a[0] != b[0]){ + assert(0); + } + if(a[1] != b[1]){ + assert(0); + } + if(a[2] != b[2]){ + assert(0); + } + if(a[3] != b[3]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movshdup_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,36 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movshdup_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[4] a = [1.0, -1.0, -2.0, 2.0]; + double[4] b; + + asm{ + movdqu XMM0, a; + movshdup XMM1, XMM0; + movdqu b, XMM1; + } + + if(a[1] != b[0]){ + assert(0); + } + if(a[1] != b[1]){ + assert(0); + } + if(a[3] != b[2]){ + assert(0); + } + if(a[3] != b[3]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movsldup_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,36 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movsldup_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[4] a = [1.0, -1.0, -2.0, 2.0]; + double[4] b; + + asm{ + movdqu XMM0, a; + movsldup XMM1, XMM0; + movdqu b, XMM1; + } + + if(a[0] != b[0]){ + assert(0); + } + if(a[0] != b[1]){ + assert(0); + } + if(a[2] != b[2]){ + assert(0); + } + if(a[2] != b[3]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- a/run/a/asm_movss_01.d Mon May 01 09:06:06 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -// $HeadURL$ -// $Date$ -// $Author$ - -module dstress.run.a.asm_movss_01; - -int main(){ - version(D_InlineAsm_X86){ - - float a = -12.1L; - float b = 2.8L; - - asm{ - movss XMM0, a; - movss b, XMM0; - } - - if(a != b){ - assert(0); - } - - return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movss_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,37 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movss_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const float[4] A = [1.0, 2.0, 3.0, 4.0]; + const float B = 9.0; + float[4] c; + + asm{ + movdqu XMM0, A; + movss XMM0, B; + movdqu c, XMM0; + } + + if(c[0] != B){ + assert(0); + } + if(c[1] != 0.0){ + assert(0); + } + if(c[2] != 0.0){ + assert(0); + } + if(c[3] != 0.0){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movss_01_B.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,38 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movss_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[4] A = [1.0, 2.0, 3.0, 4.0]; + const float[4] B = [5.0, 6.0, 7.0, 9.0]; + float[4] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + movss XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != B[0]){ + assert(0); + } + if(c[1] != A[1]){ + assert(0); + } + if(c[2] != A[2]){ + assert(0); + } + if(c[3] != A[3]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movss_01_C.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,26 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movss_01_C; + +int main(){ + version(D_InlineAsm_X86){ + const float[4] A = [1.0, 2.0, 3.0, 4.0]; + float b; + + asm{ + movdqu XMM0, A; + movss b, XMM0; + } + + if(b != A[0]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movupd_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,29 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movupd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const double[2] A = [1.0, 4.0]; + double[2] b; + + asm{ + movdqu XMM0, A; + movupd b, XMM0; + } + + 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); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movupd_01_B.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,30 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movupd_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const double[2] A = [1.0, 4.0]; + double[2] b; + + asm{ + movdqu XMM0, A; + movupd XMM1, XMM0; + movdqu b, XMM1; + } + + 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); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movupd_01_C.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,29 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movupd_01_C; + +int main(){ + version(D_InlineAsm_X86){ + const double[2] A = [1.0, 4.0]; + double[2] b; + + asm{ + movupd XMM0, A; + movdqu b, XMM0; + } + + 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); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movups_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,35 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +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]; + float[4] b; + + asm{ + movdqu XMM0, A; + movups b, XMM0; + } + + if(b[0] != A[0]){ + assert(0); + } + if(b[1] != A[1]){ + assert(0); + } + if(b[2] != A[2]){ + assert(0); + } + if(b[3] != A[3]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movups_01_B.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,36 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +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]; + float[4] b; + + asm{ + movdqu XMM0, A; + movups XMM1, XMM0; + movdqu b, XMM1; + } + + if(b[0] != A[0]){ + assert(0); + } + if(b[1] != A[1]){ + assert(0); + } + if(b[2] != A[2]){ + assert(0); + } + if(b[3] != A[3]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movups_01_C.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,35 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +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]; + float[4] b; + + asm{ + movups XMM0, A; + movdqu b, XMM0; + } + + if(b[0] != A[0]){ + assert(0); + } + if(b[1] != A[1]){ + assert(0); + } + if(b[2] != A[2]){ + assert(0); + } + if(b[3] != A[3]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mulpd_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mulpd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + const double[2] A = [7.0, 4.0]; + const double[2] B = [3.0, 2.0]; + double[2] c; + + asm{ + movdqu XMM0, A; + mulpd XMM0, B; + movdqu c, XMM0; + } + + if(c[0] != 21.0){ + assert(0); + } + if(c[1] != 8.0){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mulpd_01_B.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mulpd_01_B; + +int main(){ + version(D_InlineAsm_X86){ + 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; + mulpd XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 21.0){ + assert(0); + } + if(c[1] != 8.0){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mulps_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,38 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mulps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + 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; + mulps XMM0, B; + movdqu c, XMM0; + } + + if(c[0] != 21.0f){ + assert(0); + } + if(c[1] != 8.0f){ + assert(0); + } + if(c[2] != 0.0f){ + assert(0); + } + if(c[3] != -10.0f){ + assert(0); + } + + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mulps_01_B.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,39 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mulps_01_B; + +int main(){ + version(D_InlineAsm_X86){ + 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; + mulps XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 21.0f){ + assert(0); + } + if(c[1] != 8.0f){ + assert(0); + } + if(c[2] != 0.0f){ + assert(0); + } + if(c[3] != -10.0f){ + assert(0); + } + + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mulss_01_A.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,39 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mulss_01_A; + +int main(){ + version(D_InlineAsm_X86){ + 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; + mulss XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 21.0f){ + assert(0); + } + if(c[1] != A[1]){ + assert(0); + } + if(c[2] != A[2]){ + assert(0); + } + if(c[3] != A[3]){ + assert(0); + } + + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_mulss_01_B.d Mon May 01 11:18:12 2006 +0000 @@ -0,0 +1,38 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_mulss_01_B; + +int main(){ + version(D_InlineAsm_X86){ + const float[4] A = [7.0f, 4.0f, 1.0f, -2.0f]; + const float B = 3.0f; + float[4] c; + + asm{ + movdqu XMM0, A; + mulss XMM0, B; + movdqu c, XMM0; + } + + if(c[0] != 21.0f){ + assert(0); + } + if(c[1] != A[1]){ + assert(0); + } + if(c[2] != A[2]){ + assert(0); + } + if(c[3] != A[3]){ + assert(0); + } + + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}