Mercurial > projects > dstress
changeset 1070:3c1400d94f60
pre 0.162 review
author | thomask |
---|---|
date | Tue, 04 Jul 2006 17:04:51 +0000 |
parents | eb15e24d4606 |
children | f9084d3862e8 |
files | run/a/asm_cmc_01.d run/a/asm_cmova_01_A.d run/a/asm_cmova_01_B.d run/a/asm_cmova_02_A.d run/a/asm_cmova_02_B.d run/a/asm_cmpeqsd_01.d run/a/asm_cmpisd_01_A.d run/a/asm_cmppd_01_A.d run/a/asm_cmpps_01_A.d run/a/asm_cmpsd_01_A.d run/a/asm_comisd_01_A.d run/a/asm_comiss_01_A.d run/a/asm_fld_02_A.d run/a/asm_fnsave_01.d run/a/asm_frstor_01.d run/a/asm_fsave_01.d run/a/asm_lddqu_01.d run/a/asm_movmskpd_01_A.d run/a/asm_movmskps_01_A.d |
diffstat | 19 files changed, 161 insertions(+), 136 deletions(-) [+] |
line wrap: on
line diff
--- a/run/a/asm_cmc_01.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_cmc_01.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ byte a = 0; asm{ @@ -27,8 +27,8 @@ return 0; error: assert(0); - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XPASS}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmova_01_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_cmova_01_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ uint a; asm{ mov ECX, 0xAB_CD_EF_01; @@ -43,8 +43,8 @@ return 0; error: assert(0); - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XPASS}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmova_01_B.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_cmova_01_B.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ uint a; ushort d = 0x12_34; asm{ @@ -42,8 +42,8 @@ return 0; error: assert(0); - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XPASS}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmova_02_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_cmova_02_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ uint a; asm{ mov ECX, 0xAB_CD_EF_01; @@ -42,8 +42,8 @@ return 0; error: assert(0); - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XPASS}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmova_02_B.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_cmova_02_B.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,8 +10,8 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + int main(){ uint a; uint d = 0x12_34_56_FE; asm{ @@ -42,8 +42,8 @@ return 0; error: assert(0); - }else{ - pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); - static assert(0); } +}else{ + pragma(msg, "DSTRESS{XPASS}: no inline ASM support"); + static assert(0); }
--- a/run/a/asm_cmpeqsd_01.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_cmpeqsd_01.d Tue Jul 04 17:04:51 2006 +0000 @@ -23,4 +23,4 @@ pragma(msg, "no Inline asm support"); static assert(0); } -} \ No newline at end of file +}
--- a/run/a/asm_cmpisd_01_A.d Tue Jul 04 17:04:39 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -// $HeadURL$ -// $Date$ -// $Author$ - -module dstress.run.a.asm_cmpisd_01_A; - -int main(){ - version(D_InlineAsm_X86){ - static double[2] A = [1.0, 2.0]; - static double[2] B = [0.0, 1.0]; - uint i; - - asm{ - movdqu XMM0, A; - movdqu XMM1, B; - comisd XMM0, XMM1; - mov EAX, 0; - jc done_1; - jz done_1; - jp done_1; - inc EAX; - done_1: - mov i, EAX; - } - - if(i != 1){ - assert(0); - } - - asm{ - movdqu XMM0, B; - movdqu XMM1, A; - comisd XMM0, XMM1; - mov EAX, 0; - jnc done_2; - jz done_2; - jp done_2; - inc EAX; - done_2: - mov i, EAX; - } - - if(i != 1){ - assert(0); - } - return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); - } -}
--- a/run/a/asm_cmppd_01_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_cmppd_01_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,15 +10,25 @@ version = runTest; } -int main(){ - version(runTest){ - static double[2] A = [1.0, 2.0f]; - static double[2] B = [1.1, 2.0f]; - ulong[2] c; +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + double[] a = new double[2]; + a[0] = 1.0; + a[1] = 2.0; + + double[] b = new double[2]; + b[0] = 1.1; + b[1] = 2.0; + + ulong[] c = new ulong[2]; asm{ - movupd XMM0, A; - movupd XMM1, B; + movupd XMM0, a; + movupd XMM1, b; cmppd XMM0, XMM1, 0; movupd c, XMM0; } @@ -30,8 +40,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_cmpps_01_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_cmpps_01_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,15 +10,29 @@ version = runTest; } -int main(){ - version(D_InlineAsm_X86){ - static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; - static float[4] B = [1.1f, 1.9f, 3.0f, 4.1f]; - uint[4] c; +version(D_InlineAsm_X86){ + 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 = new float[4]; + b[0] = 1.1f; + b[1] = 1.9f; + b[2] = 3.0f; + b[3] = 4.1f; + + uint[] c = new uint[4]; asm{ - movups XMM0, A; - movups XMM1, B; + movups XMM0, a; + movups XMM1, b; cmpps XMM0, XMM1, 0; movups c, XMM0; } @@ -36,8 +50,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_cmpsd_01_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_cmpsd_01_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,8 +10,12 @@ version = runTest; } -int main(){ - version(runTest){ +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + static double[2] A = [1.0, 2.0]; static double[2] B = [1.0, 2.0]; ulong[2] c;
--- a/run/a/asm_comisd_01_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_comisd_01_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,26 +10,35 @@ version = runTest; } -int main(){ - version(runTest){ - const double[2] A = [1.0, 3.0]; - const double[2] B = [4.0, 3.0]; +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE2!()(); + + double[] a = new double[2]; + a[0] = 1.0; + a[1] = 3.0; + + double[] b = new double[2]; + b[0] = 4.0; + b[1] = 3.0; asm{ - movupd XMM0, A; - movupd XMM1, B; + movupd XMM0, a; + movupd XMM1, b; comisd XMM0, XMM1; jz error; jp error; - jnc error; + jc error; } return 0; error: assert(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_comiss_01_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_comiss_01_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -10,14 +10,27 @@ version = runTest; } -int main(){ - version(runTest){ - const float[4] A = [0.0f, 1.0f, 3.0f, 5.0f]; - const float[4] B = [0.0f, 2.0f, 4.0f, 6.0f]; +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveSSE!()(); + + 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]; + b[0] = 0.0f; + b[1] = 2.0f; + b[2] = 4.0f; + b[3] = 6.0f; asm{ - movups XMM0, A; - movups XMM1, B; + movups XMM0, a; + movups XMM1, b; comiss XMM0, XMM1; jnz error; jp error; @@ -27,8 +40,8 @@ return 0; error: assert(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_fld_02_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_fld_02_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -2,6 +2,8 @@ // $Date$ // $Author$ +// __DSTRESS_TORTURE_BLOCK__ -fPIC + module dstress.run.a.asm_fld_02_A; version(D_InlineAsm_X86){
--- a/run/a/asm_fnsave_01.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_fnsave_01.d Tue Jul 04 17:04:51 2006 +0000 @@ -17,14 +17,14 @@ haveFPU!()(); static if(size_t.sizeof==4 || size_t.sizeof==6){ - const ubyte stateSize = 108; + ubyte stateSize = 108; }else static if(size_t.sizeof==2){ - const ubyte stateSize = 94; + ubyte stateSize = 94; }else{ static assert(0); } - ubyte[stateSize] state; + ubyte[] state = new ubyte[stateSize]; asm{ fnsave state;
--- a/run/a/asm_frstor_01.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_frstor_01.d Tue Jul 04 17:04:51 2006 +0000 @@ -17,14 +17,14 @@ haveFPU!()(); static if(size_t.sizeof==4 || size_t.sizeof==6){ - const ubyte stateSize = 108; + ubyte stateSize = 108; }else static if(size_t.sizeof==2){ - const ubyte stateSize = 94; + ubyte stateSize = 94; }else{ static assert(0); } - ubyte[stateSize] state; + ubyte[] state = new ubyte[stateSize]; asm{ frstor state;
--- a/run/a/asm_fsave_01.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_fsave_01.d Tue Jul 04 17:04:51 2006 +0000 @@ -17,14 +17,14 @@ haveFPU!()(); static if(size_t.sizeof==4 || size_t.sizeof==6){ - const ubyte stateSize = 108; + ubyte stateSize = 108; }else static if(size_t.sizeof==2){ - const ubyte stateSize = 94; + ubyte stateSize = 94; }else{ static assert(0); } - ubyte[stateSize] state; + ubyte[] state = new ubyte[stateSize]; asm{ fsave state;
--- a/run/a/asm_lddqu_01.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_lddqu_01.d Tue Jul 04 17:04:51 2006 +0000 @@ -16,21 +16,37 @@ int main(){ haveSSE3!()(); - const ubyte[16] A = [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; + ubyte[] a = new ubyte[16]; + a[0] = 1; + a[1] = 2; + a[2] = 3; + a[3] = 4; + a[4] = 5; + a[5] = 6; + a[6] = 7; + a[7] = 8; + a[8] = 9; + a[9] = 10; + a[10] = 11; + a[11] = 12; + a[12] = 13; + a[13] = 14; + a[14] = 15; + a[15] = 16; - ubyte[16] b; + ubyte[] b = new ubyte[16]; asm{ - lddqu XMM0, A; + lddqu XMM0, a; movdqu b, XMM0; } - if(A.length != b.length){ + if(a.length != b.length){ assert(0); } - for(size_t i = 0; i < A.length; i++){ - if(A[i] != b[i]){ + for(size_t i = 0; i < a.length; i++){ + if(a[i] != b[i]){ assert(0); } }
--- a/run/a/asm_movmskpd_01_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_movmskpd_01_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -16,7 +16,10 @@ int main(){ haveSSE2!()(); - const double[2] a = [1.0, -1.0]; + double[] a = new double[2]; + a[0] = 1.0; + a[1] = -1.0; + uint b; asm{
--- a/run/a/asm_movmskps_01_A.d Tue Jul 04 17:04:39 2006 +0000 +++ b/run/a/asm_movmskps_01_A.d Tue Jul 04 17:04:51 2006 +0000 @@ -16,11 +16,16 @@ int main(){ haveSSE!()(); - const float[4] A = [1.0f, -1.0f, -float.infinity, -0.0f]; + float[] a = new float[4]; + a[0] = 1.0f; + a[1] = -1.0f; + a[2] = -float.infinity; + a[3] = -0.0f; + uint b; asm{ - movdqu XMM0, A; + movdqu XMM0, a; mov EAX, 0x1234_5678; movmskps EAX, XMM0; mov b, EAX;