changeset 992:4c6602a06f32

inline ASM review
author thomask
date Wed, 10 May 2006 19:00:54 +0000
parents fc296bd82895
children 861fe190f7ef
files run/a/asm_fimul_01_A.d run/a/asm_fimul_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_fld1_01.d run/a/asm_fldcw_01.d run/a/asm_fldl2e_01.d run/a/asm_fldl2t_01.d run/a/asm_fldlg2_01.d run/a/asm_fldln2_01.d run/a/asm_fldpi_01.d run/a/asm_fldz_01.d run/a/asm_fmul_01_A.d run/a/asm_fmul_01_B.d run/a/asm_fmul_01_C.d run/a/asm_fmul_01_D.d run/a/asm_fmulp_01.d run/a/asm_fmulp_01_A.d run/a/asm_fmulp_01_B.d run/a/asm_fnop_01.d run/a/asm_fnsave_01.d run/a/asm_fnstcw_01.d run/a/asm_fnstenv_01.d run/a/asm_fnstsw_01.d run/a/asm_fpatan_01.d run/a/asm_fprem1_01.d run/a/asm_fprem_01.d run/a/asm_fptan_01.d run/a/asm_frndint_01.d run/a/asm_frstor_01.d run/a/asm_fsave_01.d run/a/asm_fscale_01.d run/a/asm_fsin_01.d run/a/asm_fsincos_01.d run/a/asm_fsqrt_01.d run/a/asm_fst_01_A.d run/a/asm_fst_01_B.d run/a/asm_fst_01_C.d run/a/asm_fstcw_01.d run/a/asm_fstenv_01.d run/a/asm_fstp_01_A.d run/a/asm_fstp_01_B.d run/a/asm_fstp_01_C.d run/a/asm_fstp_01_D.d run/a/asm_fstsw_01.d run/a/asm_fsub_01_A.d run/a/asm_fsub_01_B.d run/a/asm_fsub_01_C.d run/a/asm_fsub_01_D.d run/a/asm_fsubp_01.d run/a/asm_fsubp_01_A.d run/a/asm_fsubp_01_B.d run/a/asm_fsubr_01_A.d run/a/asm_fsubr_01_B.d run/a/asm_fsubr_01_C.d run/a/asm_fsubr_01_D.d run/a/asm_fsubrp_01.d run/a/asm_fsubrp_01_A.d run/a/asm_fsubrp_01_B.d
diffstat 61 files changed, 1622 insertions(+), 629 deletions(-) [+]
line wrap: on
line diff
--- a/run/a/asm_fimul_01_A.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fimul_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -2,34 +2,42 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fimul_01_A;
 
-module dstress.run.a.asm_fimul_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 a = 2.0;
+		float a = 2.0f;
 		short b = -3;
 		
 		asm{
-			finit;
 			fld a;
 			fimul b;
-			fstp a;
+			fst a;
+		}
+		
+		a -= -6.0f;
+		
+		if(a < 0.0f){
+			a = -a;
 		}
 		
-		a -= -6.0;
-		
-		a = (a>0) ? a : -a;
-		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fimul_01_B.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fimul_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -2,34 +2,42 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fimul_01_B;
 
-module dstress.run.a.asm_fimul_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 a = 2.0;
+		float a = 2.0f;
 		int b = -3;
 		
 		asm{
-			finit;
 			fld a;
 			fimul b;
-			fstp a;
+			fst a;
+		}
+		
+		a -= -6.0f;
+		
+		if(a < 0.0f){
+			a = -a;
 		}
 		
-		a -= -6.0;
-		
-		a = (a>0) ? a : -a;
-		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fisub_01_A.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fisub_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -2,16 +2,21 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fisub_01_A;
 
-module dstress.run.a.asm_fisub_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 a = 2.4;
+		float a = 2.4f;
 		int b = 19;
 		
 		asm{
@@ -20,17 +25,19 @@
 			fstp a;
 		}
 		
-		assert(a<0);
-		
-		a += 16.6;
+		a += 16.6f;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fisub_01_B.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fisub_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -2,16 +2,21 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fisub_01_B;
 
-module dstress.run.a.asm_fisub_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 a = 2.4;
+		float a = 2.4f;
 		short b = 19;
 		
 		asm{
@@ -20,17 +25,19 @@
 			fstp a;
 		}
 		
-		assert(a<0);
-		
-		a += 16.6;
+		a += 16.6f;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fisubr_01_A.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fisubr_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -2,16 +2,21 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fisubr_01_A;
 
-module dstress.run.a.asm_fisubr_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 a = 2.4;
+		float a = 2.4f;
 		int b = 19;
 		
 		asm{
@@ -20,17 +25,19 @@
 			fstp a;
 		}
 		
-		assert(a>0);
-		
-		a -= 16.6;
+		a -= 16.6f;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fisubr_01_B.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fisubr_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -2,16 +2,21 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fisubr_01_B;
 
-module dstress.run.a.asm_fisubr_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 a = 2.4;
+		float a = 2.4f;
 		short b = 19;
 		
 		asm{
@@ -20,17 +25,19 @@
 			fstp a;
 		}
 		
-		assert(a>0);
-		
-		a -= 16.6;
+		a -= 16.6f;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fld1_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fld1_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,27 +2,34 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fld1_01;
 
-module dstress.run.a.asm_fld1_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!()();
 		
-		float f = -800.9;
+		double f = -800.9;
 		
 		asm{
 			fld1;
 			fstp f;
 		}
 		
-		assert(f == 1.0);
+		if(f != 1.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_fldcw_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fldcw_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,19 +2,24 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fldcw_01;
 
-module dstress.run.a.asm_fldcw_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;
 		
-		float a = 2.8;
-		float b = 2.1;
+		float a = 2.8f;
+		float b = 2.1f;
 		
 		short i1_a, i1_b;
 		short i2_a, i2_b;
@@ -37,6 +42,13 @@
 			fistp i1_b;
 		}
 		
+		if(i1_a != 2){
+			assert(0);
+		}
+		if(i1_b != 2){
+			assert(0);
+		}
+		
 		controll &= 0b1111_00_1111111111;
 		controll |= 0b0000_10_0000000000;
 		
@@ -48,6 +60,12 @@
 			fld b;
 			fistp i2_b;
 		}
+		if(i2_a != 3){
+			assert(0);
+		}
+		if(i2_b != 3){
+			assert(0);
+		}
 		
 		controll &= 0b1111_00_1111111111;
 		
@@ -59,19 +77,16 @@
 			fld b;
 			fistp i3_b;
 		}
-		
-		assert(i1_a == 2);
-		assert(i1_b == 2);
-		
-		assert(i2_a == 3);
-		assert(i2_b == 3);
-		
-		assert(i3_a == 3);
-		assert(i3_b == 2);
+		if(i3_a != 3){
+			assert(0);
+		}
+		if(i3_b != 2){
+			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_fldl2e_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fldl2e_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fld2e_01;
 
-module dstress.run.a.asm_fld2e_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!()();
 		
 		double f = -800.9;
@@ -20,13 +25,17 @@
 		
 		f -= 0x1.71547652B82fE178p+0;
 		
-		f = (f>0) ? f : -f;
+		if(f < 0.0){
+			f = -f;
+		}
 		
-		assert(f < f.epsilon * 4);
+		if(f > f.epsilon * 4.0){
+			assert(0);
+		}
 		
 		return 0;
-	}else{
-		pragma(msg, "no inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "no inline asm support");
+	static assert(0);
+}
--- a/run/a/asm_fldl2t_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fldl2t_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,31 +2,40 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fld2t_01;
 
-module dstress.run.a.asm_fld2t_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!()();
 		
-		real r = -800.9;
+		double f = -800.9;
 		
 		asm{
 			fldl2t;
-			fstp r;
+			fstp f;
+		}
+		
+		f -= 3.321928094887362347870319429489;
+		
+		if(f < 0.0){
+			f = -f;
 		}
 		
-		r -= 3.321928094887362347870319429489L;
-		
-		r = (r>0) ? r : -r;
-		
-		assert(r < r.epsilon * 4);
+		if(f > f.epsilon * 4.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_fldlg2_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fldlg2_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fldlg2_01;
 
-module dstress.run.a.asm_fldlg2_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!()();
 		
 		double f = -800.9;
@@ -18,15 +23,19 @@
 			fstp f;
 		}
 		
-		f -= 0.30102999566398119521373889472449L;
+		f -= 0.30102999566398119521373889472449;
 		
-		f = (f>0) ? f : -f;
+		if(f < 0.0){
+			f = -f;
+		}
 		
-		assert(f < f.epsilon * 4);
+		if(f > f.epsilon * 4.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_fldln2_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fldln2_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fldln2_01;
 
-module dstress.run.a.asm_fldln2_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!()();
 		
 		double f = -800.9;
@@ -18,15 +23,19 @@
 			fstp f;
 		}
 		
-		f -= 0.69314718055994530941723212145818L;
+		f -= 0.69314718055994530941723212145818;
 		
-		f = (f>0) ? f : -f;
+		if(f < 0.0){
+			f = -f;
+		}
 		
-		assert(f < f.epsilon * 4);
+		if(f > f.epsilon * 4.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_fldpi_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fldpi_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fldpi_01;
 
-module dstress.run.a.asm_fldpi_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!()();
 		
 		double f = -800.9;
@@ -20,13 +25,17 @@
 		
 		f -= 0x1.921FB54442D1846Ap+1;
 		
-		f = (f>0) ? f : -f;
+		if(f < 0.0){
+			f = -f;
+		}
 		
-		assert(f < f.epsilon * 4);
+		if(f > f.epsilon * 4.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_fldz_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fldz_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,27 +2,34 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fldz_01;
 
-module dstress.run.a.asm_fldz_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!()();
 		
-		float f = -800.9L;
+		double f = -800.9L;
 		
 		asm{
 			fldz;
 			fstp f;
 		}
 		
-		assert(f == 0.0);
+		if(f != 0.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_fmul_01_A.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fmul_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -2,34 +2,42 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fmul_01_A;
 
-module dstress.run.a.asm_fmul_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 a = 2.0;
-		float b = -3.0;
+		float a = 2.0f;
+		float b = -3.0f;
 		
 		asm{
-			finit;
 			fld a;
 			fmul b;
 			fst b;
 		}
 		
-		b -= -6.0;
+		b -= -6.0f;
 		
-		b = (b>0) ? b : -b;
+		if(b < 0.0f){
+			b = -b;
+		}
 		
-		assert(b < b.epsilon * 4);
+		if(b > b.epsilon * 4.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_fmul_01_B.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fmul_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -2,20 +2,24 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fmul_01_B;
 
-module dstress.run.a.asm_fmul_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 a = 2.0;
-		float b = -3.0;
+		double a = 2.0;
+		double b = -3.0;
 		
 		asm{
-			finit;
 			fld a;
 			fmul b;
 			fst b;
@@ -23,13 +27,17 @@
 		
 		b -= -6.0;
 		
-		b = (b>0) ? b : -b;
+		if(b < 0.0){
+			b = -b;
+		}
 		
-		assert(b < b.epsilon * 4);
+		if(b > b.epsilon * 4.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);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_fmul_01_C.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,44 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fmul_01_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+		
+		float a = 2.0f;
+		float b = -3.0f;
+		
+		asm{
+			fld a;
+			fld b;
+			fmul ST, ST(1);
+			fst b;
+		}
+		
+		b -= -6.0f;
+		
+		if(b < 0.0f){
+			b = -b;
+		}
+		
+		if(b > b.epsilon * 4.0f){
+			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_fmul_01_D.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,45 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fmul_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 = 2.0f;
+		float b = -3.0f;
+		
+		asm{
+			fld a;
+			fld b;
+			fmul ST(1), ST;
+			fdecstp;
+			fst b;
+		}
+		
+		b -= -6.0f;
+		
+		if(b < 0.0f){
+			b = -b;
+		}
+		
+		if(b > b.epsilon * 4.0f){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_fmulp_01.d	Wed May 10 19:00:12 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
-
-module dstress.run.a.asm_fmulp_01;
-import addon.cpuinfo;
-
-int main(){
-	version(D_InlineAsm){
-		haveFPU!()();
-		
-		float a = 2.0;
-		float b = -3.0;
-		
-		asm{
-			finit;
-			fld a;
-			fld b;
-			fmulp;
-			fstp a;
-		}
-		
-		a -= -6.0;
-		
-		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_fmulp_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,51 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fmulp_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 = 2.0f;
+		float b = -3.0f;
+		
+		asm{
+			fldz;
+			fld1;
+			fld a;
+			fld b;
+			fmulp;
+			fstp a;
+			fst b;
+		}
+		
+		a -= -6.0f;
+		
+		if(a < 0.0f){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0f){
+			assert(0);
+		}
+
+		if(b != 1.0f){
+			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_fmulp_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,52 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fmulp_01_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+		
+		float a = 2.0f;
+		float b = -3.0f;
+		
+		asm{
+			fldz;
+			fld1;
+			fld a;
+			fldz;
+			fld b;
+			fmulp ST(2), ST;
+			fstp b;
+			fst a;
+		}
+		
+		a -= -6.0f;
+		
+		if(a < 0.0f){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0f){
+			assert(0);
+		}
+
+		if(b != 0.0f){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_fnop_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fnop_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fnop_01;
 
-module dstress.run.a.asm_fnop_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!()();
 		
 		asm{
@@ -16,8 +21,8 @@
 		}
 		
 		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_fnsave_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fnsave_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fnsave_01;
 
-module dstress.run.a.asm_fnsave_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!()();
 		
 		static if(size_t.sizeof==4 || size_t.sizeof==6){
@@ -26,8 +31,8 @@
 		}
 		
 		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_fnstcw_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fnstcw_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fnstcw_01;
 
-module dstress.run.a.asm_fnstcw_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 b;
@@ -18,11 +23,13 @@
 			fnstcw b;
 		}
 		
-		assert(b == 0x037F);
+		if(b != 0x037F){
+			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_fnstenv_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fnstenv_01.d	Wed May 10 19:00:54 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_fnstenv_01;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+
 		byte[28] b;
 		
 		asm{
@@ -13,8 +23,8 @@
 		}
 		
 		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_fnstsw_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fnstsw_01.d	Wed May 10 19:00:54 2006 +0000
@@ -4,11 +4,21 @@
 
 module dstress.run.a.asm_fnstsw_01;
 
-int main(){
-	version(D_InlineAsm_X86){
-		ushort a;
-		uint b;
-		
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+
+		short a;
+		int b;
+
 		asm{
 			mov EAX, 0x1234_ABCD;
 			fnstsw a;
@@ -23,10 +33,11 @@
 		if(a != (b & 0xFFFF)){
 			assert(0);
 		}
+
 		
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_fpatan_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fpatan_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,17 +2,22 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fpatan_01;
 
-module dstress.run.a.asm_fpatan_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!()();
 		
-		float a = 2.2;
-		float b = -0.0;
+		float a = 2.2f;
+		float b = -0.0f;
 		
 		asm{
 			finit;
@@ -24,15 +29,19 @@
 			fstp b;
 		}
 		
-		a -= b/2;
+		a -= b / 2.0f;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			assert(0);
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fprem1_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fprem1_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,17 +2,22 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fprem1_01;
 
-module dstress.run.a.asm_fprem1_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!()();
 		
-		float a = 3.0;
-		float b = 8.0;
+		float a = 2.5f;
+		float b = -4.2f;
 		
 		asm{
 			finit;
@@ -22,15 +27,19 @@
 			fstp a;
 		}
 		
-		a += 1.0;
+		a -= 0.8f;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.0f){
+			assert(0);
+		}
 		
 		return 0;
-	}else{
-		pragma(msg, "no inline asm support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_fprem_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fprem_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,35 +2,43 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fprem_01;
 
-module dstress.run.a.asm_fprem_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!()();
 		
-		float a = 3.0;
-		float b = 8.0;
+		float a = 2.5f;
+		float b = -4.2f;
 		
 		asm{
-			finit;
 			fld a;
 			fld b;
 			fprem;
 			fstp a;
 		}
 		
-		a -= 2.0;
+		a += 1.7f;
+
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		a = (a>0) ? a : -a;
-		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fptan_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fptan_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,37 +2,47 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fptan_01;
 
-module dstress.run.a.asm_fptan_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!()();
 		
-		double a = 4.0L;
+		double a = 4.0;
 		double b;
 		
 		asm{
-			finit;
 			fld a;
 			fptan;
 			fstp b;
 			fstp a;
 		}
 		
-		assert(b == 1.0);
+		if(b != 1.0){
+			assert(0);
+		}
 		
-		a -= 1.1578212823495774852L;
+		a -= 1.1578212823495774852;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_frndint_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_frndint_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,16 +2,21 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_frndint_01;
 
-module dstress.run.a.asm_frndint_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!()();
 		
-		float a = 4.6;
+		float a = 4.6f;
 		
 		asm{
 			finit;
@@ -20,15 +25,19 @@
 			fstp a;
 		}
 				
-		a -= 5.0;
+		a -= 5.0f;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_frstor_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_frstor_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_frstor_01;
 
-module dstress.run.a.asm_frstor_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!()();
 		
 		static if(size_t.sizeof==4 || size_t.sizeof==6){
@@ -26,8 +31,8 @@
 		}
 		
 		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_fsave_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fsave_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fsave_01;
 
-module dstress.run.a.asm_fsave_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!()();
 		
 		static if(size_t.sizeof==4 || size_t.sizeof==6){
@@ -26,8 +31,8 @@
 		}
 		
 		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_fscale_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fscale_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,35 +2,43 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fscale_01;
 
-module dstress.run.a.asm_fscale_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!()();
 		
-		float a = 4.6;
-		float b = 1.0;
+		float a = 4.6f;
+		float b = 1.0f;
 		
 		asm{
-			finit;
 			fld a;
 			fld b;
 			fscale;
 			fstp a;
 		}
 			
-		a -= 16.0;
+		a -= 16.0f;
+
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		a = (a>0) ? a : -a;
-		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fsin_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fsin_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,31 +2,39 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fsin_01;
 
-module dstress.run.a.asm_fsin_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!()();
 		
-		float a = 2.2;
+		float a = 2.2f;
 		
 		asm{
-			finit;
 			fldpi;
 			fsin;
 			fstp a;
 		}
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fsincos_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fsincos_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,35 +2,46 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fsincos_01;
 
-module dstress.run.a.asm_fsincos_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!()();
 		
-		float a = 2.2;
-		float b = 2.2;
+		float a = 2.2f;
+		float b = 2.2f;
 		
 		asm{
-			finit;
 			fldz;
 			fsincos;
 			fstp a;
 			fstp b;
 		}
 		
-		a -= 1.0;
-		a = (a>0) ? a : -a;
-		assert(a < a.epsilon * 4);
+		a -= 1.0f;
+		if(a < 0.0f){
+			assert(0);
+		}
 		
-		assert(b == 0.0);
+		if(a > a.epsilon * 4.0f){
+			assert(0);
+		}
+		
+		if(b != 0.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_fsqrt_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fsqrt_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,32 +2,40 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fsqrt_01;
 
-module dstress.run.a.asm_fsqrt_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!()();
 		
-		float a = 9.0L;
+		float a = 9.0f;
 		
 		asm{
-			finit;
 			fld a;
 			fsqrt;
 			fstp a;
 		}
 		
-		a -= 3.0;
-		a = (a>0) ? a : -a;
+		a -= 3.0f;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.0f){
+			assert(0);
+		}
 		
 		return 0;
-	}else{
-		pragma(msg, "no inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "no inline asm support");
+	static assert(0);
+}
--- a/run/a/asm_fst_01_A.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fst_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fst_01_A;
 
-module dstress.run.a.asm_fst_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 a, b, c;
@@ -23,13 +28,19 @@
 			fstp c;
 		}
 		
-		assert(a == 1.0);
-		assert(b == 1.0);
-		assert(c == 0.0);
+		if(a != 1.0f){
+			assert(0);
+		}
+		if(b != 1.0f){
+			assert(0);
+		}
+		if(c != 0.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_fst_01_B.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fst_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fst_01_B;
 
-module dstress.run.a.asm_fst_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 a, b, c;
@@ -21,13 +26,19 @@
 			fstp b;
 		}
 		
-		assert(a == 1.0);
-		assert(b == 0.0);
-		assert(c == 1.0);
+		if(a != 1.0f){
+			assert(0);
+		}
+		if(b != 0.0f){
+			assert(0);
+		}
+		if(c != 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_fst_01_C.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fst_01_C.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fst_01_C;
 
-module dstress.run.a.asm_fst_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!()();
 		
 		double a, b, c;
@@ -21,13 +26,19 @@
 			fstp b;
 		}
 		
-		assert(a == 1.0);
-		assert(b == 0.0);
-		assert(c == 1.0);
+		if(a != 1.0){
+			assert(0);
+		}
+		if(b != 0.0){
+			assert(0);
+		}
+		if(c != 1.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_fstcw_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fstcw_01.d	Wed May 10 19:00:54 2006 +0000
@@ -2,13 +2,18 @@
 // $Date$
 // $Author$
 
-// __DSTRESS_DFLAGS__ addon/cpuinfo.d
+module dstress.run.a.asm_fstcw_01;
 
-module dstress.run.a.asm_fstcw_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 b;
@@ -18,11 +23,13 @@
 			fstcw b;
 		}
 		
-		assert(b == 0x037F);
+		if(b != 0x037F){
+			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_fstenv_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fstenv_01.d	Wed May 10 19:00:54 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_fstenv_01;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+
 		byte[28] b;
 		
 		asm{
@@ -13,8 +23,8 @@
 		}
 		
 		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_fstp_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fstp_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, b;
+		
+		asm{
+			fldz;
+			fldz;
+			fld1;
+			fstp a;
+			fstp b;
+		}
+		
+		if(a != 1.0f){
+			assert(0);
+		}
+		if(b != 0.0f){
+			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_fstp_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fstp_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, b;
+		
+		asm{
+			fldz;
+			fldz;
+			fld1;
+			fstp a;
+			fstp b;
+		}
+		
+		if(a != 1.0){
+			assert(0);
+		}
+		if(b != 0.0){
+			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_fstp_01_C.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fstp_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, b;
+		
+		asm{
+			fldz;
+			fldz;
+			fld1;
+			fstp a;
+			fstp b;
+		}
+		
+		if(a != 1.0L){
+			assert(0);
+		}
+		if(b != 0.0L){
+			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_fstp_01_D.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,42 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fstp_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, b;
+		
+		asm{
+			fldz;
+			fldz;
+			fld1;
+			fstp ST(2);
+			fstp a;
+			fstp b;
+		}
+		
+		if(a != 0.0f){
+			assert(0);
+		}
+		if(b != 1.0f){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_fstsw_01.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fstsw_01.d	Wed May 10 19:00:54 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_fstsw_01;
 
-int main(){
-	version(D_InlineAsm_X86){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+
 		short a;
 		int b;
 
@@ -26,8 +36,8 @@
 
 		
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_fsub_01_A.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fsub_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -4,10 +4,19 @@
 
 module dstress.run.a.asm_fsub_01_A;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
 		float a = 2.4f;
-		float b = -1.2;
+		float b = -1.2f;
 		
 		asm{
 			fld a;
@@ -15,17 +24,19 @@
 			fst a;
 		}
 		
-		assert(a>0);
-		
 		a -= 3.6f;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fsub_01_B.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fsub_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -2,12 +2,21 @@
 // $Date$
 // $Author$
 
-module dstress.run.a.asm_fsub_01_A;
+module dstress.run.a.asm_fsub_01_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
 
-int main(){
-	version(D_InlineAsm){
-		double a = 2.4L;
-		double b = -1.2L;
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		double a = 2.4;
+		double b = -1.2;
 		
 		asm{
 			fld a;
@@ -15,17 +24,19 @@
 			fst a;
 		}
 		
-		assert(a>0);
-		
-		a -= 3.6L;
+		a -= 3.6;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_fsub_01_C.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,43 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fsub_01_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		float a = 2.4f;
+		float b = -1.2f;
+		
+		asm{
+			fld b;
+			fld a;
+			fsub ST, ST(1);
+			fst a;
+		}
+		
+		a -= 3.6f;
+		
+		if(a < 0.0f){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0f){
+			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_fsub_01_D.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,44 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fsub_01_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		float a = 2.4f;
+		float b = -1.2f;
+		
+		asm{
+			fld b;
+			fld a;
+			fsub ST(1), ST;
+			fdecstp;
+			fst a;
+		}
+		
+		a -= 3.6f;
+		
+		if(a < 0.0f){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0f){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_fsubp_01.d	Wed May 10 19:00:12 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-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_fsubp_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,49 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fsubp_01_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		double a = 2.4;
+		double b = -1.2;
+		
+		asm{
+			fld1;
+			fldz;
+			fld a;
+			fld b;
+			fsubp;
+			fstp a;
+			fstp b;
+		}
+		
+		a -= 3.6;
+		
+		if(a < 0.0){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0){
+			assert(0);
+		}
+
+		if(b != 0.0){
+			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_fsubp_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,49 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fsubp_01_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		double a = 2.4;
+		double b = -1.2;
+		
+		asm{
+			fld1;
+			fld a;
+			fldz;
+			fld b;
+			fsubp ST(2), ST;
+			fstp b;
+			fstp a;
+		}
+		
+		a -= 3.6;
+		
+		if(a < 0.0){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0){
+			assert(0);
+		}
+
+		if(b != 0.0){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_fsubr_01_A.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fsubr_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -4,28 +4,39 @@
 
 module dstress.run.a.asm_fsubr_01_A;
 
-int main(){
-	version(D_InlineAsm){
-		float a = 2.4L;
-		float b = -1.2L;
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		float a = 2.4f;
+		float b = -1.2f;
 		
 		asm{
-			fld a;
-			fsubr b;
+			fld b;
+			fsubr a;
 			fst a;
 		}
 		
-		assert(a<0);
-		
-		a += 3.6L;
+		a -= 3.6f;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0f){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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_fsubr_01_B.d	Wed May 10 19:00:12 2006 +0000
+++ b/run/a/asm_fsubr_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -4,28 +4,39 @@
 
 module dstress.run.a.asm_fsubr_01_B;
 
-int main(){
-	version(D_InlineAsm){
-		double a = 2.4L;
-		double b = -1.2L;
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		double a = 2.4;
+		double b = -1.2;
 		
 		asm{
-			fld a;
-			fsubr b;
+			fld b;
+			fsubr a;
 			fst a;
 		}
 		
-		assert(a<0);
-		
-		a += 3.6L;
+		a -= 3.6;
 		
-		a = (a>0) ? a : -a;
+		if(a < 0.0){
+			a = -a;
+		}
 		
-		assert(a < a.epsilon * 4);
+		if(a > a.epsilon * 4.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);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_fsubr_01_C.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,43 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fsubr_01_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		float a = 2.4f;
+		float b = -1.2f;
+		
+		asm{
+			fld a;
+			fld b;
+			fsubr ST, ST(1);
+			fst a;
+		}
+		
+		a -= 3.6f;
+		
+		if(a < 0.0f){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0f){
+			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_fsubr_01_D.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,44 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fsubr_01_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		float a = 2.4f;
+		float b = -1.2f;
+		
+		asm{
+			fld a;
+			fld b;
+			fsubr ST(1), ST;
+			fdecstp;
+			fst a;
+		}
+		
+		a -= 3.6f;
+		
+		if(a < 0.0f){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0f){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_fsubrp_01.d	Wed May 10 19:00:12 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_fsubrp_01_A.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,49 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fsubrp_01_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		double a = 2.4;
+		double b = -1.2;
+		
+		asm{
+			fld1;
+			fldz;
+			fld b;
+			fld a;
+			fsubrp;
+			fstp a;
+			fstp b;
+		}
+		
+		a -= 3.6;
+		
+		if(a < 0.0){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0){
+			assert(0);
+		}
+
+		if(b != 0.0){
+			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_fsubrp_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,49 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fsubrp_01_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		double a = 2.4;
+		double b = -1.2;
+		
+		asm{
+			fld1;
+			fld b;
+			fldz;
+			fld a;
+			fsubrp ST(2), ST;
+			fstp b;
+			fstp a;
+		}
+		
+		a -= 3.6;
+		
+		if(a < 0.0){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0){
+			assert(0);
+		}
+
+		if(b != 0.0){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}