Mercurial > projects > dstress
changeset 699:9b960ca15583
extended^ iasm tests (mostly FPU related)
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpeqsd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpeqsd_01; + +int main(){ + version(D_InlineAsm){ + double a = 1.2; + double b = 1.2; + ulong res; + + asm{ + movq XMM0, a; + cmpsd XMM0, b, 0; + movq res, XMM0; + } + + assert(res == res.max); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpeqss_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpltss_01; + +int main(){ + version(D_InlineAsm){ + float a = 1.2; + float b = 1.2; + uint res; + + asm{ + movd XMM0, a; + cmpss XMM0, b, 0; + movd res, XMM0; + } + + assert(res == res.max); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmplesd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmplesd_01; + +int main(){ + version(D_InlineAsm){ + double a = 1.2; + double b = 1.2; + ulong res; + + asm{ + movq XMM0, a; + cmpsd XMM0, b, 2; + movq res, XMM0; + } + + assert(res == res.max); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpless_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpless_01; + +int main(){ + version(D_InlineAsm){ + float a = 1.2; + float b = 1.2; + uint res; + + asm{ + movd XMM0, a; + cmpss XMM0, b, 2; + movd res, XMM0; + } + + assert(res == res.max); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpltsd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpltsd_01; + +int main(){ + version(D_InlineAsm){ + double a = 1.2; + double b = 1.2; + ulong res; + + asm{ + movq XMM0, a; + cmpsd XMM0, b, 1; + movq res, XMM0; + } + + assert(res == 0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpltss_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpltss_01; + +int main(){ + version(D_InlineAsm){ + float a = 1.2; + float b = 1.2; + uint res; + + asm{ + movd XMM0, a; + cmpss XMM0, b, 1; + movd res, XMM0; + } + + assert(res == 0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpneqsd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpneqsd_01; + +int main(){ + version(D_InlineAsm){ + double a = 1.2; + double b = 1.2; + ulong res; + + asm{ + movq XMM0, a; + cmpsd XMM0, b, 4; + movq res, XMM0; + } + + assert(res == 0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpneqss_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpnltss_01; + +int main(){ + version(D_InlineAsm){ + float a = 1.2; + float b = 1.2; + uint res; + + asm{ + movd XMM0, a; + cmpss XMM0, b, 4; + movd res, XMM0; + } + + assert(res == 0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpnlesd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpnlesd_01; + +int main(){ + version(D_InlineAsm){ + double a = 1.2; + double b = 1.2; + ulong res; + + asm{ + movq XMM0, a; + cmpsd XMM0, b, 6; + movq res, XMM0; + } + + assert(res == 0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpnless_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpnless_01; + +int main(){ + version(D_InlineAsm){ + float a = 1.2; + float b = 1.2; + uint res; + + asm{ + movd XMM0, a; + cmpss XMM0, b, 6; + movd res, XMM0; + } + + assert(res == 0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpnltsd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpnltsd_01; + +int main(){ + version(D_InlineAsm){ + double a = 1.2; + double b = 1.2; + ulong res; + + asm{ + movq XMM0, a; + cmpsd XMM0, b, 5; + movq res, XMM0; + } + + assert(res == res.max); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpnltss_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpnltss_01; + +int main(){ + version(D_InlineAsm){ + float a = 1.2; + float b = 1.2; + uint res; + + asm{ + movd XMM0, a; + cmpss XMM0, b, 5; + movd res, XMM0; + } + + assert(res == res.max); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpordsd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpordsd_01; + +int main(){ + version(D_InlineAsm){ + double a = 1.2; + double b = 1.2; + ulong res; + + asm{ + movq XMM0, a; + cmpsd XMM0, b, 7; + movq res, XMM0; + } + + assert(res == res.max); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpordss_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpordss_01; + +int main(){ + version(D_InlineAsm){ + float a = 1.2; + float b = 1.2; + uint res; + + asm{ + movd XMM0, a; + cmpss XMM0, b, 7; + movd res, XMM0; + } + + assert(res == res.max); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpunordsd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmplesd_01; + +int main(){ + version(D_InlineAsm){ + double a = 1.2; + double b = 1.1; + ulong res; + + asm{ + movq XMM0, a; + cmpsd XMM0, b, 3; + movq res, XMM0; + } + + assert(res == 0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpunordss_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpunordss_01; + +int main(){ + version(D_InlineAsm){ + float a = 1.2; + float b = 1.2; + uint res; + + asm{ + movd XMM0, a; + cmpss XMM0, b, 3; + movd res, XMM0; + } + + assert(res == 0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpxch8b_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,52 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpxch8b_01_B; + +int main(){ + version(D_InlineAsm){ + uint a = 1; + uint d = 1; + ulong c = 0; + asm{ + mov EAX, 0; + mov EDX, 0; + + mov EBX, 0xFFFFFFFF; + mov ECX, 0xFFFFFFFF; + cmpxch8b c; + + mov a, EAX; + mov d, EDX; + } + + assert(c==c.max); + assert(a==0); + assert(d==0); + + c=1; + + asm{ + mov EAX, 0; + mov EDX, 0; + + mov EBX, 0xFFFFFFFF; + mov ECX, 0xFFFFFFFF; + cmpxch8b c; + + mov a, EAX; + mov d, EDX; + } + + + assert(c==1); + assert(a==1); + assert(d==0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpxchg_01_A.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,39 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpxchg_01_A; + +int main(){ + version(D_InlineAsm){ + ubyte a = 0; + ubyte c = 3; + asm{ + mov AL, 1; + mov BL, 2; + cmpxchg c, BL; + mov a, AL; + } + + assert(c==3); + assert(a==3); + + a = 0; + c = 3; + + asm{ + mov AL, 3; + mov BL, 2; + cmpxchg c, BL; + mov a, AL; + } + + assert(c==2); + assert(a==3); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpxchg_01_B.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,39 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpxchg_01_B; + +int main(){ + version(D_InlineAsm){ + ushort a = 0; + ushort c = 3; + asm{ + mov AX, 1; + mov BX, 2; + cmpxchg c, BX; + mov a, AX; + } + + assert(c==3); + assert(a==3); + + a = 0; + c = 3; + + asm{ + mov AX, 3; + mov BX, 2; + cmpxchg c, BX; + mov a, AX; + } + + assert(c==2); + assert(a==3); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cmpxchg_01_C.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,39 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cmpxchg_01_B; + +int main(){ + version(D_InlineAsm){ + uint a = 0; + uint c = 3; + asm{ + mov EAX, 1; + mov EBX, 2; + cmpxchg c, EBX; + mov a, EAX; + } + + assert(c==3); + assert(a==3); + + a = 0; + c = 3; + + asm{ + mov EAX, 3; + mov EBX, 2; + cmpxchg c, EBX; + mov a, EAX; + } + + assert(c==2); + assert(a==3); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cvtsd2si_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,25 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cvtsd2si_01; + +int main(){ + version(D_InlineAsm){ + uint i = 0; + double f = 64.0f; + + asm{ + cvtsd2si EAX, f; + mov i, EAX; + } + + assert(i==64); + assert(f==64.0f); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cvtsd2ss_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cvtsd2ss_01; + +int main(){ + version(D_InlineAsm){ + double d = 64.0f; + float f = 0.0; + + + asm{ + cvtsd2ss XMM0, d; + movd f, XMM0; + } + + assert(d==64.0f); + assert(f==64.0f); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cvtsi2sd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,25 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cvtsi2sd_01; + +int main(){ + version(D_InlineAsm){ + int i = -23000; + double d = 0.0f; + + asm{ + cvtsi2sd XMM0, i; + movq d, XMM0; + } + + assert(d==-23000.0); + assert(i==-23000); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cvtsi2ss_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,25 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cvtsi2ss_01; + +int main(){ + version(D_InlineAsm){ + int i = -23000; + float f = 0.0f; + + asm{ + cvtsi2ss XMM0, i; + movd f, XMM0; + } + + assert(f==-23000.0); + assert(i==-23000); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cvtss2sd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,25 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cvtss2sd_01; + +int main(){ + version(D_InlineAsm){ + float f = -19.0f; + double d = 0.0f; + + asm{ + cvtss2sd XMM0, f; + movq d, XMM0; + } + + assert(d==-19.0); + assert(f==-19.0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_cvtss2si_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,25 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_cvtss2si_01; + +int main(){ + version(D_InlineAsm){ + float f = -19.0f; + int i = 0; + + asm{ + cvtss2si EAX, f; + mov i, EAX; + } + + assert(i==-19); + assert(f==-19.0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_divsd_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_divsd_01; + +int main(){ + version(D_InlineAsm){ + double a = -4.2f; + double b = 2.0f; + + asm{ + movq XMM0, a; + divsd XMM0, b; + movq b, XMM0; + } + + b = b + 2.1f; + assert(b< b.epsilon*4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_divss_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,26 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_divss_01; + +int main(){ + version(D_InlineAsm){ + float a = -4.2f; + float b = 2.0f; + + asm{ + movd XMM0, a; + divss XMM0, b; + movd b, XMM0; + } + + b = b + 2.1f; + assert(b< b.epsilon*4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_emms_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,17 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_emms_01; + +int main(){ + version(D_InlineAsm){ + asm{ + emms; + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_enter_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,18 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_enter_01; + +int main(){ + version(D_InlineAsm){ + asm{ + enter 2048, 30; + leave; + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_f2xm1_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,48 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_f2xm1_01; + +int main(){ + version(D_InlineAsm){ + float f = -1.0f; + + asm{ + finit; + fld f; + f2xm1; + fst f; + } + + assert(f<0); + + f += 0.5f; + + f = (f>0) ? f : -f; + + assert(f < f.epsilon * 4); + + f = 1.0; + + asm{ + finit; + fld f; + f2xm1; + fst f; + } + + assert(f>0); + + f -= 1.0f; + + f = (f>0) ? f : -f; + + assert(f < f.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fabs_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,36 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fabs_01; + +int main(){ + version(D_InlineAsm){ + float f = -1.0f; + + asm{ + finit; + fld f; + fabs; + fst f; + } + + assert(f == 1.0); + + f = 2.0; + + asm{ + finit; + fld f; + fabs; + fst f; + } + + assert(f == 2.0); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fadd_01_A.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,32 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fadd_01_A; + +int main(){ + version(D_InlineAsm){ + float a = -1.0f; + float b = 3.5f; + + asm{ + finit; + fld a; + fadd b; + fst a; + } + + assert(a > 0); + + a -= 2.5f; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon*4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fadd_01_B.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,32 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fadd_01_B; + +int main(){ + version(D_InlineAsm){ + double a = -1.0f; + double b = 3.5f; + + asm{ + finit; + fld a; + fadd b; + fst a; + } + + assert(a > 0); + + a -= 2.5f; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon*4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_faddp_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,33 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_faddp_01; + +int main(){ + version(D_InlineAsm){ + double a = -1.0f; + double b = 3.5f; + + asm{ + finit; + fld a; + fld b; + faddp; + fst a; + } + + assert(a > 0); + + a -= 2.5f; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon*4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fchs_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,48 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fchs_01; + +int main(){ + version(D_InlineAsm){ + real a = -1.2L; + + asm{ + finit; + fld a; + fchs; + fstp a; + } + + assert(a > 0); + + a -= 1.2L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon*4); + + a = 1.2L; + + asm{ + finit; + fld a; + fchs; + fstp a; + } + + assert(a < 0); + + a += 1.2L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon*4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fiadd_01_A.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,32 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fiaddp_01_A; + +int main(){ + version(D_InlineAsm){ + double a = -1.2L; + int b = 34; + + asm{ + finit; + fld a; + fiadd b; + fst a; + } + + assert(a > 0); + + a -= 32.8l; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon*16); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fiadd_01_B.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,32 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fiaddp_01_B; + +int main(){ + version(D_InlineAsm){ + double a = -1.2L; + short b = 34; + + asm{ + finit; + fld a; + fiadd b; + fst a; + } + + assert(a > 0); + + a -= 32.8l; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon*16); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fisub_01_A.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,31 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fisub_01_A; + +int main(){ + version(D_InlineAsm){ + real a = 2.4L; + int b = 19; + + asm{ + fld a; + fisub b; + fstp a; + } + + assert(a<0); + + a += 16.6L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fisub_01_B.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,31 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fisub_01_B; + +int main(){ + version(D_InlineAsm){ + real a = 2.4L; + short b = 19; + + asm{ + fld a; + fisub b; + fstp a; + } + + assert(a<0); + + a += 16.6L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fisubr_01_A.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,31 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fisubr_01_A; + +int main(){ + version(D_InlineAsm){ + real a = 2.4L; + int b = 19; + + asm{ + fld a; + fisubr b; + fstp a; + } + + assert(a>0); + + a -= 16.6L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fisubr_01_B.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,31 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fisubr_01_B; + +int main(){ + version(D_InlineAsm){ + real a = 2.4L; + short b = 19; + + asm{ + fld a; + fisubr b; + fstp a; + } + + assert(a>0); + + a -= 16.6L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fnstcw_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,20 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fnstcw_01; + +int main(){ + version(D_InlineAsm){ + byte b; + + asm{ + fnstcw b; + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fnstenv_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,20 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fnstenv_01; + +int main(){ + version(D_InlineAsm){ + byte[28] b; + + asm{ + fnstenv b; + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fnstsw_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,20 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fnstsw_01; + +int main(){ + version(D_InlineAsm){ + short s; + + asm{ + fnstsw s; + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fstcw_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,20 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fstcw_01; + +int main(){ + version(D_InlineAsm){ + byte b; + + asm{ + fstcw b; + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fstenv_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,20 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fstenv_01; + +int main(){ + version(D_InlineAsm){ + byte[28] b; + + asm{ + fstenv b; + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fstsw_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,20 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fstsw_01; + +int main(){ + version(D_InlineAsm){ + short s; + + asm{ + fstsw s; + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fsub_01_A.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,31 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fsub_01_A; + +int main(){ + version(D_InlineAsm){ + float a = 2.4f; + float b = -1.2; + + asm{ + fld a; + fsub b; + fst a; + } + + assert(a>0); + + a -= 3.6f; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fsub_01_B.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,31 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fsub_01_A; + +int main(){ + version(D_InlineAsm){ + double a = 2.4L; + double b = -1.2L; + + asm{ + fld a; + fsub b; + fst a; + } + + assert(a>0); + + a -= 3.6L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fsubp_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,32 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fsubp_01; + +int main(){ + version(D_InlineAsm){ + double a = 2.4L; + double b = -1.2L; + + asm{ + fld a; + fld b; + fsubp; + fst a; + } + + assert(a>0); + + a -= 3.6L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fsubr_01_A.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,31 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fsubr_01_A; + +int main(){ + version(D_InlineAsm){ + float a = 2.4L; + float b = -1.2L; + + asm{ + fld a; + fsubr b; + fst a; + } + + assert(a<0); + + a += 3.6L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fsubr_01_B.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,31 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fsubr_01_B; + +int main(){ + version(D_InlineAsm){ + double a = 2.4L; + double b = -1.2L; + + asm{ + fld a; + fsubr b; + fst a; + } + + assert(a<0); + + a += 3.6L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_fsubrp_01.d Mon Oct 03 20:25:06 2005 +0000 @@ -0,0 +1,32 @@ +// $HeadURL: svn://dstress.kuehne.cn/run/a/asm_sub_01_C.d $ +// $Date: 2005-08-20 20:24:41 +0200 (Sat, 20 Aug 2005) $ +// $Author: thomask $ + +module dstress.run.a.asm_fsubrp_01; + +int main(){ + version(D_InlineAsm){ + double a = 2.4L; + double b = -1.2L; + + asm{ + fld a; + fld b; + fsubrp; + fst a; + } + + assert(a<0); + + a += 3.6L; + + a = (a>0) ? a : -a; + + assert(a < a.epsilon * 4); + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +} \ No newline at end of file