Mercurial > projects > dstress
changeset 990:15b0469145fb
inline ASM review
author | thomask |
---|---|
date | Wed, 10 May 2006 05:30:02 +0000 |
parents | a468938b0160 |
children | fc296bd82895 |
files | addon/cpuinfo.d run/a/asm_ffree_01_A.d run/a/asm_ficom_01_A.d run/a/asm_ficom_01_B.d run/a/asm_ficomp_01_A.d run/a/asm_ficomp_01_B.d run/a/asm_fild_01_A.d run/a/asm_fild_01_B.d run/a/asm_fild_01_C.d run/a/asm_fincstp_01.d run/a/asm_finit_01.d run/a/asm_fist_01_A.d run/a/asm_fist_01_B.d run/a/asm_fistp_01_A.d run/a/asm_fistp_01_B.d run/a/asm_fisttp_01_A.d run/a/asm_fisttp_01_B.d run/a/asm_fisttp_01_C.d run/a/asm_fld_01_A.d run/a/asm_fld_01_B.d run/a/asm_fld_01_C.d run/a/asm_fld_01_D.d run/a/asm_fninit_01.d |
diffstat | 23 files changed, 598 insertions(+), 253 deletions(-) [+] |
line wrap: on
line diff
--- a/addon/cpuinfo.d Tue May 09 04:18:47 2006 +0000 +++ b/addon/cpuinfo.d Wed May 10 05:30:02 2006 +0000 @@ -20,24 +20,30 @@ }else version(D_InlineAsm_X86){ const bool haveX86InlineAsm = true; version = haveX86InlineAsm; +}else version(D_InlineAsm_X86_X64){ + const bool haveX86InlineAsm = true; + version = haveX86InlineAsm; }else{ pragma(msg, "no Inline ASM support"); const bool haveX86InlineAsm = false; } -void haveCMOV(){ - uint a = 0; + +template haveCMOV(){ + void haveCMOV(){ + uint a = 0; - version(haveX86InlineAsm){ - asm{ - mov EAX, 1; - cpuid; - mov a, EDX; + version(haveX86InlineAsm){ + asm{ + mov EAX, 1; + cpuid; + mov a, EDX; + } } - } - if(!((a >> 15) & 1)){ - throw new Exception("no X86 CMOV support present"); + if(!((a >> 15) & 1)){ + throw new Exception("DSTRESS{XFAIL}: no CMOV support present"); + } } } @@ -57,19 +63,21 @@ } } -void haveFPU(){ - uint a = 0; +template haveFPU(){ + void haveFPU(){ + uint a = 0; - version(haveX86InlineAsm){ - asm{ - mov EAX, 1; - cpuid; - mov a, EDX; + version(haveX86InlineAsm){ + asm{ + mov EAX, 1; + cpuid; + mov a, EDX; + } } - } - if(!(a & 1)){ - throw new Exception("no X86 FPU present"); + if(!(a & 1)){ + throw new Exception("DSTRESS{XFAIL}: no X86 FPU present"); + } } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_ffree_01_A.d Wed May 10 05:30:02 2006 +0000 @@ -0,0 +1,29 @@ + // $HeadURL$ + // $Date$ + // $Author$ + +module dstress.run.a.asm_ffree_01_A; + +version(D_InlineAsm_X86){ + version = doTest; +}else version(D_InlineAsm_X86_64){ + version = doTest; +} + +version(doTest){ + import addon.cpuinfo; + + int main(){ + haveFPU!()(); + + asm{ + finit; + ffree ST(1); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_ficom_01_A.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_ficom_01_A.d Wed May 10 05:30:02 2006 +0000 @@ -2,40 +2,54 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_ficom_01_A; -module dstress.run.a.asm_ficom_01_A; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - float f = 3.0; + float f = 3.0f; short i = -3; ushort s; asm{ + fld1; fld f; ficom i; fstsw s; fstp f; } - assert(f == 3.0); + if(f != 3.0f){ + assert(0); + } ushort C0 = 1 << 8; ushort C2 = 1 << 10; ushort C3 = 1 << 14; - assert(!(s & C0)); - assert(!(s & C2)); - assert(!(s & C3)); + if(s & C0){ + assert(0); + } + if(s & C2){ + assert(0); + } + if(s & C3){ + 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_ficom_01_B.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_ficom_01_B.d Wed May 10 05:30:02 2006 +0000 @@ -2,40 +2,54 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_ficom_01_B; -module dstress.run.a.asm_ficom_01_A; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - float f = -3.0; + float f = -3.0f; int i = 3; ushort s; asm{ + fld1; fld f; ficom i; fstsw s; fstp f; } - assert(f == -3.0); + if(f != -3.0f){ + assert(0); + } ushort C0 = 1 << 8; ushort C2 = 1 << 10; ushort C3 = 1 << 14; - assert(s & C0); - assert(!(s & C2)); - assert(!(s & C3)); + if(!(s & C0)){ + assert(0); + } + if(s & C2){ + assert(0); + } + if(s & C3){ + 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_ficomp_01_A.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_ficomp_01_A.d Wed May 10 05:30:02 2006 +0000 @@ -2,41 +2,54 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_ficomp_01_A; -module dstress.run.a.asm_ficomp_01_A; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - float f = -3.0; - short i = 3; + float f = 3.0f; + short i = -3; ushort s; asm{ - fldz; + fld1; fld f; ficomp i; fstsw s; fstp f; } - assert(f == 0.0); + if(f != 1.0f){ + assert(0); + } ushort C0 = 1 << 8; ushort C2 = 1 << 10; ushort C3 = 1 << 14; - assert(s & C0); - assert(!(s & C2)); - assert(!(s & C3)); + if(s & C0){ + assert(0); + } + if(s & C2){ + assert(0); + } + if(s & C3){ + 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_ficomp_01_B.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_ficomp_01_B.d Wed May 10 05:30:02 2006 +0000 @@ -2,41 +2,54 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_ficomp_01_B; -module dstress.run.a.asm_ficomp_01_B; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - float f = -3.0; + float f = -3.0f; int i = 3; ushort s; asm{ - fldz; + fld1; fld f; ficomp i; fstsw s; fstp f; } - assert(f == 0.0); + if(f != 1.0f){ + assert(0); + } ushort C0 = 1 << 8; ushort C2 = 1 << 10; ushort C3 = 1 << 14; - assert(s & C0); - assert(!(s & C2)); - assert(!(s & C3)); + if(!(s & C0)){ + assert(0); + } + if(s & C2){ + assert(0); + } + if(s & C3){ + 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_fild_01_A.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fild_01_A.d Wed May 10 05:30:02 2006 +0000 @@ -2,29 +2,36 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fild_01_A; -module dstress.run.a.asm_fild_01_A; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); short i = 800; - real r; + double d; asm{ finit; fild i; - fstp r; + fst d; } - assert(r == 800.0L); + if(d != 800.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_fild_01_B.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fild_01_B.d Wed May 10 05:30:02 2006 +0000 @@ -2,30 +2,36 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fild_01_B; -module dstress.run.a.asm_fild_01_B; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} +version(runTest){ + import addon.cpuinfo; -int main(){ - version(D_InlineAsm){ + int main(){ haveFPU!()(); int i = 800; - real r; + double d; asm{ finit; fild i; - fstp r; + fst d; } - assert(r == 800.0L); + if(d != 800.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_fild_01_C.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fild_01_C.d Wed May 10 05:30:02 2006 +0000 @@ -2,29 +2,36 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fild_01_C; -module dstress.run.a.asm_fild_01_A; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); long i = 800; - real r; + double d; asm{ finit; fild i; - fstp r; + fst d; } - assert(r == 800.0L); + if(d != 800.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_fincstp_01.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fincstp_01.d Wed May 10 05:30:02 2006 +0000 @@ -2,13 +2,18 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fincstp_01; -module dstress.run.a.asm_fincstp_01; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); ushort a, b; @@ -23,12 +28,16 @@ a = (a >> 11) & 0b111; b = (b >> 11) & 0b111; - assert(a == 0); - assert(b == 1); + if(a != 0){ + assert(0); + } + if(b != 1){ + 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_finit_01.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_finit_01.d Wed May 10 05:30:02 2006 +0000 @@ -2,13 +2,18 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_finit_01; -module dstress.run.a.asm_finit_01; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); ushort controll, status; @@ -18,12 +23,17 @@ fstsw status; } - assert(controll == 0x037F); - assert(status == 0); + if(controll != 0x037F){ + assert(0); + } + if(status != 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_fist_01_A.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fist_01_A.d Wed May 10 05:30:02 2006 +0000 @@ -2,29 +2,36 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fist_01_A; -module dstress.run.a.asm_fist_01_A; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - real r = -800.0L; + float f = -800.0f; short i; asm{ - finit; - fld r; + fld1; + fld f; fist i; } - assert(i == -800); + if(i != -800){ + 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_fist_01_B.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fist_01_B.d Wed May 10 05:30:02 2006 +0000 @@ -2,29 +2,36 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fist_01_B; -module dstress.run.a.asm_fist_01_B; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - real r = -800.0L; + float f = -800.0f; int i; asm{ - finit; - fld r; + fld1; + fld f; fist i; } - assert(i == -800); + if(i != -800){ + 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_fistp_01_A.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fistp_01_A.d Wed May 10 05:30:02 2006 +0000 @@ -2,32 +2,41 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fistp_01_A; -module dstress.run.a.asm_fistp_01_A; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - real r = -80.0L; - short a, b; + float f = -800.0f; + short i; asm{ - finit; fld1; - fld r; - fistp a; - fistp b; + fld f; + fistp i; + fst f; } - assert(a == -80); - assert(b == 1); + if(i != -800){ + assert(0); + } + + if(f != 1.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_fistp_01_B.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fistp_01_B.d Wed May 10 05:30:02 2006 +0000 @@ -2,32 +2,41 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fist_01_B; -module dstress.run.a.asm_fistp_01_B; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - real r = -800.0L; - int a, b; + float f = -800.0f; + int i; asm{ - finit; fld1; - fld r; - fistp a; - fistp b; + fld f; + fistp i; + fst f; } - assert(a == -800); - assert(b == 1); + if(i != -800){ + assert(0); + } + + if(f != 1.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_fisttp_01_A.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fisttp_01_A.d Wed May 10 05:30:02 2006 +0000 @@ -2,37 +2,46 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fistp_01_A; -module dstress.run.a.asm_fistp_01_A; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - real r = -800.9L; + float f = -800.9f; short i; asm{ - fld r; + fld f; fisttp i; } - assert(i == -800); + if(i != -800){ + assert(0); + } - r = -800.0L; + f = -800.0f; asm{ - fld r; + fld f; fisttp i; } - assert(i == -800); + if(i != -800){ + 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_fisttp_01_B.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fisttp_01_B.d Wed May 10 05:30:02 2006 +0000 @@ -2,37 +2,46 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fistp_01_B; -module dstress.run.a.asm_fistp_01_B; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - real r = -800.9L; + float f = -800.9f; int i; asm{ - fld r; + fld f; fisttp i; } - assert(i == -800); + if(i != -800){ + assert(0); + } - r = -800.0L; + f = -800.0f; asm{ - fld r; + fld f; fisttp i; } - assert(i == -800); + if(i != -800){ + 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_fisttp_01_C.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fisttp_01_C.d Wed May 10 05:30:02 2006 +0000 @@ -2,37 +2,46 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fistp_01_C; -module dstress.run.a.asm_fistp_01_C; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); - real r = -800.9L; + float f = -800.9f; long i; asm{ - fld r; + fld f; fisttp i; } - assert(i == -800); + if(i != -800){ + assert(0); + } - r = -800.0L; + f = -800.0f; asm{ - fld r; + fld f; fisttp i; } - assert(i == -800); + if(i != -800){ + 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); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fld_01_A.d Wed May 10 05:30:02 2006 +0000 @@ -0,0 +1,36 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_fld_01_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveFPU!()(); + + float a = 1.2f; + float b; + + asm{ + fld a; + fst b; + } + + if(b != 1.2f){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fld_01_B.d Wed May 10 05:30:02 2006 +0000 @@ -0,0 +1,36 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_fld_01_B; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveFPU!()(); + + double a = 1.2; + double b; + + asm{ + fld a; + fst b; + } + + if(b != 1.2){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fld_01_C.d Wed May 10 05:30:02 2006 +0000 @@ -0,0 +1,36 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_fld_01_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveFPU!()(); + + real a = 1.2L; + double b; + + asm{ + fld a; + fst b; + } + + if(b != 1.2){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fld_01_D.d Wed May 10 05:30:02 2006 +0000 @@ -0,0 +1,38 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_fld_01_D; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + import addon.cpuinfo; + + int main(){ + haveFPU!()(); + + float a = 1.2f; + float b; + + asm{ + fld1; + fld a; + fld ST(1); + fst b; + } + + if(b != 1.0f){ + assert(0); + } + + return 0; + } +}else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + static assert(0); +}
--- a/run/a/asm_fninit_01.d Tue May 09 04:18:47 2006 +0000 +++ b/run/a/asm_fninit_01.d Wed May 10 05:30:02 2006 +0000 @@ -2,13 +2,18 @@ // $Date$ // $Author$ -// __DSTRESS_DFLAGS__ addon/cpuinfo.d +module dstress.run.a.asm_fninit_01; -module dstress.run.a.asm_fninit_01; -import addon.cpuinfo; +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} -int main(){ - version(D_InlineAsm){ +version(runTest){ + import addon.cpuinfo; + + int main(){ haveFPU!()(); ushort controll, status; @@ -18,12 +23,17 @@ fstsw status; } - assert(controll == 0x037F); - assert(status == 0); + if(controll != 0x037F){ + assert(0); + } + if(status != 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); +}