changeset 699:9b960ca15583

extended^ iasm tests (mostly FPU related)
author thomask
date Mon, 03 Oct 2005 20:25:06 +0000
parents 5b99d1577b50
children 98e3d2ab382f
files run/a/asm_cmpeqsd_01.d run/a/asm_cmpeqss_01.d run/a/asm_cmplesd_01.d run/a/asm_cmpless_01.d run/a/asm_cmpltsd_01.d run/a/asm_cmpltss_01.d run/a/asm_cmpneqsd_01.d run/a/asm_cmpneqss_01.d run/a/asm_cmpnlesd_01.d run/a/asm_cmpnless_01.d run/a/asm_cmpnltsd_01.d run/a/asm_cmpnltss_01.d run/a/asm_cmpordsd_01.d run/a/asm_cmpordss_01.d run/a/asm_cmpunordsd_01.d run/a/asm_cmpunordss_01.d run/a/asm_cmpxch8b_01.d run/a/asm_cmpxchg_01_A.d run/a/asm_cmpxchg_01_B.d run/a/asm_cmpxchg_01_C.d run/a/asm_cvtsd2si_01.d run/a/asm_cvtsd2ss_01.d run/a/asm_cvtsi2sd_01.d run/a/asm_cvtsi2ss_01.d run/a/asm_cvtss2sd_01.d run/a/asm_cvtss2si_01.d run/a/asm_divsd_01.d run/a/asm_divss_01.d run/a/asm_emms_01.d run/a/asm_enter_01.d run/a/asm_f2xm1_01.d run/a/asm_fabs_01.d run/a/asm_fadd_01_A.d run/a/asm_fadd_01_B.d run/a/asm_faddp_01.d run/a/asm_fchs_01.d run/a/asm_fiadd_01_A.d run/a/asm_fiadd_01_B.d run/a/asm_fisub_01_A.d run/a/asm_fisub_01_B.d run/a/asm_fisubr_01_A.d run/a/asm_fisubr_01_B.d run/a/asm_fnstcw_01.d run/a/asm_fnstenv_01.d run/a/asm_fnstsw_01.d run/a/asm_fstcw_01.d run/a/asm_fstenv_01.d run/a/asm_fstsw_01.d run/a/asm_fsub_01_A.d run/a/asm_fsub_01_B.d run/a/asm_fsubp_01.d run/a/asm_fsubr_01_A.d run/a/asm_fsubr_01_B.d run/a/asm_fsubrp_01.d
diffstat 54 files changed, 1548 insertions(+), 0 deletions(-) [+]
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