changeset 993:861fe190f7ef

inline ASM review
author thomask
date Fri, 12 May 2006 18:01:12 +0000
parents 4c6602a06f32
children 80c8f0058259
files addon/cpuinfo.d run/a/asm_fld_02_A.d run/a/asm_ftst_01_A.d run/a/asm_fucom_01_A.d run/a/asm_fucom_01_B.d run/a/asm_fucomp_01_A.d run/a/asm_fucomp_01_B.d run/a/asm_fucompp_01.d run/a/asm_fwait_01.d run/a/asm_fxam_01_A.d run/a/asm_fxch_01.d run/a/asm_fxch_01_A.d run/a/asm_fxch_01_B.d run/a/asm_fxrstor_01_A.d run/a/asm_fxtract_01.d run/a/asm_fyl2x_01.d run/a/asm_fyl2xp1_01.d run/a/asm_haddpd_01_A.d run/a/asm_haddps_01_A.d run/a/asm_hsubpd_01_A.d run/a/asm_hsubps_01_A.d run/a/asm_idiv_01_A.d run/a/asm_idiv_01_B.d run/a/asm_idiv_01_C.d run/a/asm_idiv_02_A.d run/a/asm_idiv_02_B.d run/a/asm_idiv_02_C.d run/a/asm_imul_01_A.d run/a/asm_imul_01_B.d run/a/asm_imul_01_C.d run/a/asm_imul_02_A.d run/a/asm_imul_02_B.d run/a/asm_imul_03_A.d run/a/asm_imul_03_B.d run/a/asm_imul_03_C.d run/a/asm_imul_04_A.d run/a/asm_imul_04_B.d run/a/asm_inc_01_A.d run/a/asm_inc_01_B.d run/a/asm_inc_01_C.d run/a/asm_inc_02_A.d run/a/asm_inc_02_B.d run/a/asm_inc_02_C.d run/a/asm_ja_01_A.d run/a/asm_ja_01_B.d run/a/asm_ja_01_C.d run/a/asm_jmp_01.d
diffstat 47 files changed, 1431 insertions(+), 267 deletions(-) [+]
line wrap: on
line diff
--- a/addon/cpuinfo.d	Wed May 10 19:00:54 2006 +0000
+++ b/addon/cpuinfo.d	Fri May 12 18:01:12 2006 +0000
@@ -129,19 +129,22 @@
 		throw new Exception("no X86 SSE2 support present");
 	}
 }
-	
-void haveSSE3(){
-	uint a = 0;
+
+template haveSSE3(){
+	void haveSSE3(){
+		uint a = 1;
+		uint b = 0;
 			
-	version(haveX86InlineAsm){
-		asm{
-			mov EAX, 1;
-			cpuid;
-			mov a, ECX;
+		version(haveX86InlineAsm){
+			asm{
+				mov EAX, a;
+				cpuid;
+				mov b, ECX;
+			}
+		}
+	
+		if(!(a & 1)){
+			throw new Exception("DSTRESS{XFAIL}: no SSE3 support present");
 		}
 	}
-	
-	if(!(a & 1)){
-		throw new Exception("no X86 SSE3 support present");
-	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_fld_02_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,36 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fld_02_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+
+		const float a = 1.2f;
+		float b;
+
+		asm{
+			fld a;
+			fst b;
+		}
+
+		if(b != 1.2f){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_ftst_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,54 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_ftst_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 f;
+		ushort s;
+				
+		asm{
+			fldpi;
+			fldpi;
+			fld1;
+			ftst;
+			fstsw s;
+			fstp f;
+		}
+
+		if(f != 1.0f){
+			assert(0);
+		}
+		
+		ushort C0 = 1 << 8;
+		ushort C2 = 1 << 10;
+		ushort C3 = 1 << 14;
+		
+		if(s & C0){
+			assert(0);
+		}
+		if(s & C2){
+			assert(0);
+		}
+		if(s & C3){
+			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_fucom_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,60 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fucom_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 f1 = float.nan;
+		float f2;
+		ushort s;
+				
+		asm{
+			fldz;
+			fldz;
+			fld1;
+			fld f1;
+			fucom;
+			fstsw s;
+			fstp f1;
+			fstp f2;
+		}
+
+		if(!(f1 !<>= 0.0f)){
+			assert(0);
+		}
+		if(f2 != 1.0f){
+			assert(0);
+		}
+		
+		ushort C0 = 1 << 8;
+		ushort C2 = 1 << 10;
+		ushort C3 = 1 << 14;
+		
+		if(!(s & C0)){
+			assert(0);
+		}
+		if(!(s & C2)){
+			assert(0);
+		}
+		if(!(s & C3)){
+			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_fucom_01_B.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,61 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fucom_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 f1 = float.nan;
+		float f2;
+		
+		ushort s;
+				
+		asm{
+			fldz;
+			fld f1;
+			fld1;
+			fldz;
+			fucom ST(2);
+			fstsw s;
+			fstp f1;
+			fstp f2;
+		}
+
+		if(f1 != 0.0f){
+			assert(0);
+		}
+		if(f2 != 1.0f){
+			assert(0);
+		}
+
+		ushort C0 = 1 << 8;
+		ushort C2 = 1 << 10;
+		ushort C3 = 1 << 14;
+		
+		if(!(s & C0)){
+			assert(0);
+		}
+		if(!(s & C2)){
+			assert(0);
+		}
+		if(!(s & C3)){
+			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_fucomp_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,60 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fucomp_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 f1 = float.nan;
+		float f2;
+		ushort s;
+				
+		asm{
+			fldz;
+			fld1;
+			fldz;
+			fld f1;
+			fucomp;
+			fstsw s;
+			fstp f1;
+			fstp f2;
+		}
+
+		if(f1 != 0.0f){
+			assert(0);
+		}
+		if(f2 != 1.0f){
+			assert(0);
+		}
+		
+		ushort C0 = 1 << 8;
+		ushort C2 = 1 << 10;
+		ushort C3 = 1 << 14;
+		
+		if(!(s & C0)){
+			assert(0);
+		}
+		if(!(s & C2)){
+			assert(0);
+		}
+		if(!(s & C3)){
+			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_fucomp_01_B.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,61 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fucomp_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 f1 = float.nan;
+		float f2;
+		
+		ushort s;
+				
+		asm{
+			fld f1;
+			fldz;
+			fld1;
+			fldz;
+			fucomp ST(3);
+			fstsw s;
+			fstp f1;
+			fstp f2;
+		}
+
+		if(f1 != 1.0f){
+			assert(0);
+		}
+		if(f2 != 0.0f){
+			assert(0);
+		}
+
+		ushort C0 = 1 << 8;
+		ushort C2 = 1 << 10;
+		ushort C3 = 1 << 14;
+		
+		if(!(s & C0)){
+			assert(0);
+		}
+		if(!(s & C2)){
+			assert(0);
+		}
+		if(!(s & C3)){
+			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_fucompp_01.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,60 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fucompp_01;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+		
+		float f1 = float.nan;
+		float f2;
+		ushort s;
+				
+		asm{
+			fldz;
+			fld1;
+			fld f1;
+			fldz;
+			fcompp;
+			fstsw s;
+			fstp f1;
+			fstp f2;
+		}
+
+		if(f1 != 1.0f){
+			assert(0);
+		}
+		if(f2 != 0.0f){
+			assert(0);
+		}
+		
+		ushort C0 = 1 << 8;
+		ushort C2 = 1 << 10;
+		ushort C3 = 1 << 14;
+		
+		if(!(s & C0)){
+			assert(0);
+		}
+		if(!(s & C2)){
+			assert(0);
+		}
+		if(!(s & C3)){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_fwait_01.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_fwait_01.d	Fri May 12 18:01:12 2006 +0000
@@ -4,15 +4,21 @@
 
 module dstress.run.a.asm_fwait_01;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		asm{
 			fwait;
 		}
 	
 		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_fxam_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,52 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fxam_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 f;
+		ushort s;
+				
+		asm{
+			fld1;
+			fxam;
+			fstsw s;
+			fstp f;
+		}
+
+		if(f != 1.0f){
+			assert(0);
+		}
+		
+		ushort C0 = 1 << 8;
+		ushort C2 = 1 << 10;
+		ushort C3 = 1 << 14;
+		
+		if(s & C0){
+			assert(0);
+		}
+		if(!(s & C2)){
+			assert(0);
+		}
+		if(s & C3){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_fxch_01.d	Wed May 10 19:00:54 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.a.asm_fxch_01;
-
-int main(){
-	version(D_InlineAsm){
-		real a = -1.0f;
-		real b = 3.5f;
-		
-		real a2, b2;
-		
-		asm{
-			finit;
-			fld a;
-			fld b;
-			fxch;
-			fstp b2;
-			fstp a2;
-		}
-		
-		assert(a2==b);
-		assert(b2==a);
-		
-		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_fxch_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,44 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fxch_01_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		haveFPU!()();
+
+		float a = -1.0f;
+		float b = 3.5f;
+		
+		float a2, b2;
+		
+		asm{
+			fld a;
+			fld b;
+			fxch;
+			fstp b2;
+			fst a2;
+		}
+		
+		if(a2 != b){
+			assert(0);
+		}
+		if(b2 != a){
+			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_fxch_01_B.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,49 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fxch_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 = -1.0f;
+		float b = 3.5f;
+		
+		float a2, b2, x2;
+		
+		asm{
+			fld a;
+			fld1;
+			fld b;
+			fxch ST(2);
+			fstp b2;
+			fstp x2;
+			fst a2;
+		}
+		
+		if(a2 != b){
+			assert(0);
+		}
+		if(x2 != 1.0f){
+			assert(0);
+		}
+		if(b2 != a){
+			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_fxrstor_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,44 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fxrstor_01_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		ubyte[512] state;
+
+		float a;
+		float b;
+
+		asm{
+			fld1;
+			fldz;
+			fxsave state;
+			fldpi;
+			fxrstor state;
+			fstp a;
+			fst 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_fxtract_01.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_fxtract_01.d	Fri May 12 18:01:12 2006 +0000
@@ -4,26 +4,45 @@
 
 module dstress.run.a.asm_fxtract_01;
 
-int main(){
-	version(D_InlineAsm){
-		real a = -8.0f;
-		
-		double exponent, significand;
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+
+		float a = -8.0f;
+		float exponent;
+		float significand;
+		float f;
 		
 		asm{
-			finit;
+			fldz;
 			fld a;
 			fxtract;
 			fstp significand;
 			fstp exponent;
+			fst f;
 		}
 		
-		assert(significand == -1.0f);
-		assert(exponent == 3.0f);
+		if(significand != -1.0f){
+			assert(0);
+		}
+		if(exponent != 3.0f){
+			assert(0);
+		}
+		if(f != 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_fyl2x_01.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_fyl2x_01.d	Fri May 12 18:01:12 2006 +0000
@@ -4,24 +4,40 @@
 
 module dstress.run.a.asm_fyl2x_01;
 
-int main(){
-	version(D_InlineAsm){
-		real a = -2.0L;
+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;
 		
 		asm{
-			finit;
+			fld a;
 			fld a;
 			fld1;
 			fyl2x;
-			fstp a;
-			fstp a;
+			fstp b;
+			fst a;
 		}
 		
-		assert(a == -0.0L);
+		if(b != -0.0f){
+			assert(0);
+		}
+		if(a != -2.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_fyl2xp1_01.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_fyl2xp1_01.d	Fri May 12 18:01:12 2006 +0000
@@ -4,12 +4,21 @@
 
 module dstress.run.a.asm_fyl2xp1_01;
 
-int main(){
-	version(D_InlineAsm){
-		real a = -0.0L;
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveFPU!()();
+
+		float a = -0.0f;
 		
 		asm{
-			finit;
 			fld a;
 			fld a;
 			fyl2xp1;
@@ -17,11 +26,13 @@
 			fstp a;
 		}
 		
-		assert(a == 0.0L);
+		if(a != 0.0L){
+			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_haddpd_01_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_haddpd_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -4,17 +4,27 @@
 
 module dstress.run.a.asm_haddpd_01_A;
 
-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(){
+		haveSSE3!()();
+
 		static double[2] A = [7.0, 11.0];
 		static double[2] B = [2.0, 3.0];
 		double[2] c;
 
 		asm{
-			movdqu XMM0, A;
-			movdqu XMM1, B;
+			movupd XMM0, A;
+			movupd XMM1, B;
 			haddpd XMM0, XMM1;
-			movdqu c, XMM0;
+			movupd c, XMM0;
 		}
 
 		c[0] -= 18.0;
@@ -34,8 +44,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_haddps_01_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_haddps_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -4,17 +4,27 @@
 
 module dstress.run.a.asm_haddps_01_A;
 
-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(){
+		haveSSE3!()();
+
 		static float[4] A = [6.1f, 7.2f, 8.3f, 9.4f];
 		static float[4] B = [1.0f, 2.0f, 3.0f, 4.0f];
 		float[4] c;
 
 		asm{
-			movdqu XMM0, A;
-			movdqu XMM1, B;
+			movups XMM0, A;
+			movups XMM1, B;
 			haddps XMM0, XMM1;
-			movdqu c, XMM0;
+			movups c, XMM0;
 		}
 
 		c[0] -= 13.3f;
@@ -49,8 +59,8 @@
 			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_hsubpd_01_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_hsubpd_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -4,17 +4,27 @@
 
 module dstress.run.a.asm_hsubpd_01_A;
 
-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(){
+		haveSSE3!()();
+
 		static double[2] A = [2.0, 3.0];
 		static double[2] B = [1.0, 4.0];
 		double[2] c;
 
 		asm{
-			movdqu XMM0, A;
-			movdqu XMM1, B;
+			movupd XMM0, A;
+			movupd XMM1, B;
 			hsubpd XMM0, XMM1;
-			movdqu c, XMM0;
+			movupd c, XMM0;
 		}
 
 		c[0] += 1.0;
@@ -34,8 +44,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_hsubps_01_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_hsubps_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -4,17 +4,27 @@
 
 module dstress.run.a.asm_hsubps_01_A;
 
-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(){
+		haveSSE3!()();
+		
 		static float[4] A = [2.0f, 3.0f, 6.0f, 8.0f];
 		static float[4] B = [1.0f, 4.0f, 5.0f, 9.0f];
 		float[4] c;
 
 		asm{
-			movdqu XMM0, A;
-			movdqu XMM1, B;
+			movups XMM0, A;
+			movups XMM1, B;
 			hsubps XMM0, XMM1;
-			movdqu c, XMM0;
+			movups c, XMM0;
 		}
 
 		c[0] += 1.0f;
@@ -49,8 +59,8 @@
 			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_idiv_01_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_idiv_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -4,41 +4,44 @@
 
 module dstress.run.a.asm_idiv_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(){
 		byte y = 2;
 		
-		byte a = 0x00;
-		byte b = - 0x7F;
+		ushort a = 0x00_81;
 		
 		asm{
-			mov AH, a;
-			mov AL, b;
+			mov AX, a;
 			idiv y;
-			mov a, AL;
-			mov b, AH;
+			mov a, AX;
 		}
-
-		assert(a==0x40);
-		assert(b==1);
+		if(a != 0x0140){
+			assert(0);
+		}
 		
-		a = 0x00_00;
-		b = - 0x7E;
+		a = 0x00_80;
 
 		asm{
-			mov AH, a;
-			mov AL, b;
+			mov AX, a;
 			idiv y;
-			mov a, AL;
-			mov b, AH;
+			mov a, AX;
 		}
 		
-		assert(a==0x41);
-		assert(b==0);
+		if(a != 0x0040){
+			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_idiv_01_B.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_idiv_01_B.d	Fri May 12 18:01:12 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_idiv_01_B;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		short y = 2;
 		
 		short a = 0x00_00;
@@ -19,8 +25,12 @@
 			mov b, DX;
 		}
 
-		assert(a==0x78_00);
-		assert(b==1);
+		if(a != 0x78_00){
+			assert(0);
+		}
+		if(b != 1){
+			assert(0);
+		}
 		
 		a = 0x00_00;
 		b = - 0x0F_FE;
@@ -33,12 +43,16 @@
 			mov b, DX;
 		}
 
-		assert(a==0x78_01);
-		assert(b==0);
+		if(a != 0x78_01){
+			assert(0);
+		}
+		if(b != 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_idiv_01_C.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_idiv_01_C.d	Fri May 12 18:01:12 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_idiv_01_C;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		int y = -2;
 		
 		int a = 0x00_00_00_00;
@@ -19,8 +25,12 @@
 			mov b, EDX;
 		}
 
-		assert(a==0x88_00_00_00u);
-		assert(b==1);
+		if(a != 0x88_00_00_00u){
+			assert(0);
+		}
+		if(b != 1){
+			assert(0);
+		}
 		
 		a = 0x00_00_00_00;
 		b = 0x0F_FF_FF_FE;
@@ -33,12 +43,16 @@
 			mov b, EDX;
 		}
 
-		assert(a==0xF8_00_00_01u);
-		assert(b==0);
+		if(a != 0xF8_00_00_01u){
+			assert(0);
+		}
+		if(b != 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_idiv_02_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_idiv_02_A.d	Fri May 12 18:01:12 2006 +0000
@@ -2,22 +2,48 @@
 // $Date$
 // $Author$
 
-module dstress.run.a.asm_neg_02_A;
+module dstress.run.a.asm_idiv_02_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(){
 		byte y = 2;
-				
+		
+		ushort a = 0x00_81;
+		
 		asm{
-			lock;
-			neg y;
+			mov AX, a;
+			mov CL, y;
+			idiv CL;
+			mov a, AX;
+		}
+		if(a != 0x0140){
+			assert(0);
 		}
+		
+		a = 0x00_80;
 
-		assert(y == -2);
+		asm{
+			mov AX, a;
+			mov CL, y;
+			idiv CL;
+			mov a, AX;
+		}
+		
+		if(a != 0x0040){
+			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_idiv_02_B.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,60 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_idiv_02_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		short y = 2;
+		
+		short a = 0x00_00;
+		short b = - 0x0F_FF;
+		
+		asm{
+			mov DX, a;
+			mov AX, b;
+			mov CX, y;
+			idiv CX;
+			mov a, AX;
+			mov b, DX;
+		}
+
+		if(a != 0x78_00){
+			assert(0);
+		}
+		if(b != 1){
+			assert(0);
+		}
+		
+		a = 0x00_00;
+		b = - 0x0F_FE;
+
+		asm{
+			mov DX, a;
+			mov AX, b;
+			mov CX, y;
+			idiv CX;
+			mov a, AX;
+			mov b, DX;
+		}
+
+		if(a != 0x78_01){
+			assert(0);
+		}
+		if(b != 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_idiv_02_C.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,60 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_idiv_02_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int y = -2;
+		
+		int a = 0x00_00_00_00;
+		int b = - 0x0F_FF_FF_FF;
+		
+		asm{
+			mov EDX, a;
+			mov EAX, b;
+			mov ECX, y;
+			idiv ECX;
+			mov a, EAX;
+			mov b, EDX;
+		}
+
+		if(a != 0x88_00_00_00u){
+			assert(0);
+		}
+		if(b != 1){
+			assert(0);
+		}
+		
+		a = 0x00_00_00_00;
+		b = 0x0F_FF_FF_FE;
+
+		asm{
+			mov EDX, a;
+			mov EAX, b;
+			mov ECX, y;
+			idiv ECX;
+			mov a, EAX;
+			mov b, EDX;
+		}
+
+		if(a != 0xF8_00_00_01u){
+			assert(0);
+		}
+		if(b != 0){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_imul_01_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_imul_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_imul_01_A;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		byte a = -2;
 		byte b = 3;
 		
@@ -15,11 +21,13 @@
 			mov b, AL;
 		}
 	
-		assert(b==-6);
+		if(b != -6){
+			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_imul_01_B.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_imul_01_B.d	Fri May 12 18:01:12 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_imul_01_B;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		short a = -2;
 		short b = 3;
 		
@@ -15,11 +21,13 @@
 			mov b, AX;
 		}
 
-		assert(b==-6);
+		if(b != -6){
+			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_imul_01_C.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_imul_01_C.d	Fri May 12 18:01:12 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_imul_01_C;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		int a = -2;
 		int b = 3;
 		
@@ -15,11 +21,13 @@
 			mov b, EAX;
 		}
 
-		assert(b==-6);
+		if(b != -6){
+			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_imul_02_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_imul_02_A.d	Fri May 12 18:01:12 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_imul_02_A;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		int a = -2;
 		int b = 3;
 		
@@ -15,11 +21,13 @@
 			mov b, EAX;
 		}
 
-		assert(b==-6);
+		if(b != -6){
+			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_imul_02_B.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_imul_02_B.d	Fri May 12 18:01:12 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_imul_02_B;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		short a = -2;
 		short b = 3;
 		
@@ -15,11 +21,13 @@
 			mov b, AX;
 		}
 
-		assert(b==-6);
+		if(b != -6){
+			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_imul_03_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,34 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_imul_03_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		byte a = -2;
+		byte b = 3;
+		
+		asm{
+			mov AL, a;
+			mov BL, b;
+			imul BL;
+			mov b, AL;
+		}
+	
+		if(b != -6){
+			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_imul_03_B.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,34 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_imul_03_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		short a = -2;
+		short b = 3;
+		
+		asm{
+			mov AX, a;
+			mov BX, b;
+			imul BX;
+			mov b, AX;
+		}
+
+		if(b != -6){
+			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_imul_03_C.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,34 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_imul_03_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int a = -2;
+		int b = 3;
+		
+		asm{
+			mov EAX, a;
+			mov EBX, b;
+			imul EBX;
+			mov b, EAX;
+		}
+
+		if(b != -6){
+			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_imul_04_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,34 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_imul_04_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int a = -2;
+		int b = 3;
+		
+		asm{
+			mov EAX, a;
+			mov EBX, b;
+			imul EAX, EBX;
+			mov b, EAX;
+		}
+
+		if(b != -6){
+			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_imul_04_B.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,34 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_imul_04_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		short a = -2;
+		short b = 3;
+		
+		asm{
+			mov AX, a;
+			mov BX, b;
+			imul AX, BX;
+			mov b, AX;
+		}
+
+		if(b != -6){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_inc_01_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_inc_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -4,23 +4,30 @@
 
 module dstress.run.a.asm_inc_01_A;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	int main(){
 		uint i = 0x12_34_5F_FFu;
 		
-		assert(i==0x12_34_5F_FFu);
-		
 		asm{
 			mov EAX, i;
 			inc AL;
 			mov i, EAX;
 		}
 	
-		assert(i==0x12_34_5F_00u);
+		if(i != 0x12_34_5F_00u){
+			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_inc_01_B.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_inc_01_B.d	Fri May 12 18:01:12 2006 +0000
@@ -4,23 +4,29 @@
 
 module dstress.run.a.asm_inc_01_B;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		uint i = 0x12_3F_FF_FFu;
 		
-		assert(i==0x12_3F_FF_FFu);
-		
 		asm{
 			mov EAX, i;
 			inc AX;
 			mov i, EAX;
 		}
 	
-		assert(i==0x12_3F_00_00u);
+		if(i != 0x12_3F_00_00u){
+			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_inc_01_C.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_inc_01_C.d	Fri May 12 18:01:12 2006 +0000
@@ -4,23 +4,29 @@
 
 module dstress.run.a.asm_inc_01_C;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		uint i = 0xFF_FF_FF_FFu;
 		
-		assert(i==0xFF_FF_FF_FFu);
-		
 		asm{
 			mov EAX, i;
 			inc EAX;
 			mov i, EAX;
 		}
 	
-		assert(i==0x00_00_00_00u);
+		if(i != 0x00_00_00_00u){
+			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_inc_02_A.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_inc_02_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	int main(){
+		byte b = 0x2F;
+		
+		asm{
+			inc b;
+		}
+	
+		if(b != 0x30){
+			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_inc_02_B.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_inc_02_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	int main(){
+		short b = 0x342F;
+		
+		asm{
+			inc b;
+		}
+	
+		if(b != 0x3430){
+			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_inc_02_C.d	Fri May 12 18:01:12 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_inc_02_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+
+version(runTest){
+	int main(){
+		int b = 0x12_FF_FF_FF;
+		
+		asm{
+			inc b;
+		}
+	
+		if(b != 0x13_00_00_00){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_ja_01_A.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_ja_01_A.d	Fri May 12 18:01:12 2006 +0000
@@ -4,24 +4,28 @@
 
 module dstress.run.a.asm_ja_01_A;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		uint a=5;
 		uint b=5;
 		
 		asm{
 			mov EAX, a;
 			cmp EAX, b;
-			ja save;
-			add EAX, 1;
-		save:	mov a, EAX;
+			ja error;
 		}
 		
-		assert(a == 6);
-		
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
+	error:
+		assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_ja_01_B.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_ja_01_B.d	Fri May 12 18:01:12 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_ja_01_B;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		uint a=5;
 		uint b=4;
 		
@@ -13,15 +19,14 @@
 			mov EAX, a;
 			cmp EAX, b;
 			ja save;
-			add EAX, 1;
-		save:	mov a, EAX;
 		}
 		
-		assert(a == 5);
-		
+		assert(0);
+	
+	save:
 		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_ja_01_C.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_ja_01_C.d	Fri May 12 18:01:12 2006 +0000
@@ -4,24 +4,29 @@
 
 module dstress.run.a.asm_ja_01_C;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		uint a=5;
 		uint b=6;
 		
 		asm{
 			mov EAX, a;
 			cmp EAX, b;
-			ja save;
-			add EAX, 1;
-		save:	mov a, EAX;
+			ja error;
 		}
 		
-		assert(a == 6);
+		return 0;
 		
-		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
+	error:
+		assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_jmp_01.d	Wed May 10 19:00:54 2006 +0000
+++ b/run/a/asm_jmp_01.d	Fri May 12 18:01:12 2006 +0000
@@ -4,14 +4,20 @@
 
 module dstress.run.a.asm_jmp_01;
 
-int main(){
-	version(D_InlineAsm_X86){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 		int a = 0;
 		
 		asm{
 			mov EAX, 0;
 			add EAX, 1;
-		save1:	mov a, EAX;
+			mov a, EAX;
 		}
 		
 		if(a != 1){
@@ -31,8 +37,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);
 }