changeset 1116:5aa513911316

partial -fPIC fixes
author thomask
date Sun, 20 Aug 2006 11:18:32 +0000
parents 2ab97b330e94
children 9393c8f2bc1e
files run/a/asm_addpd_01_A.d run/a/asm_addps_01_A.d run/a/asm_addsd_01_A.d run/a/asm_addss_01_A.d run/a/asm_addsubpd_01_A.d run/a/asm_addsubps_01_A.d run/a/asm_clflush_01.d run/a/asm_cmpeqsd_01.d run/a/asm_cmpeqss_01.d run/a/asm_cmpiss_01_A.d run/a/asm_cmplesd_01.d run/a/asm_cmpless_01.d run/a/asm_cmpltsd_01.d run/a/asm_cmpltss_01.d run/a/asm_cmpneqsd_01.d run/a/asm_cmpneqss_01.d run/a/asm_cmpnlesd_01.d run/a/asm_cmpnless_01.d run/a/asm_cmpnltsd_01.d run/a/asm_cmpnltss_01.d run/a/asm_cmpordsd_01.d run/a/asm_cmpordss_01.d run/a/asm_cmppd_01_A.d run/a/asm_cmpps_01_A.d run/a/asm_cmpsd_01_A.d run/a/asm_cmpsd_01_B.d run/a/asm_cmpss_01_A.d run/a/asm_cmpss_01_B.d run/a/asm_cmpunordsd_01.d run/a/asm_cmpunordss_01.d run/a/asm_cmpxch8b_01.d run/a/asm_cmpxchg_01_A.d run/a/asm_cmpxchg_01_B.d run/a/asm_cmpxchg_01_C.d run/a/asm_cmpxchg_02_A.d run/a/asm_cmpxchg_02_B.d run/a/asm_cmpxchg_02_C.d run/a/asm_comisd_01_A.d run/a/asm_comiss_01_A.d run/a/asm_cvtdq2pd_01_A.d run/a/asm_cvtdq2ps_01_A.d run/a/asm_cvtpd2dq_01_A.d run/a/asm_cvtpd2pi_01_A.d run/a/asm_cvtpi2pd_01_A.d run/a/asm_cvtpi2ps_01_A.d run/a/asm_cvtps2pi_01_A.d run/a/asm_cvtsd2si_01.d run/a/asm_cvtsd2ss_01.d run/a/asm_cvtsi2sd_01.d run/a/asm_cvtsi2ss_01.d run/a/asm_cvtss2sd_01.d run/a/asm_cvtss2si_01.d run/a/asm_cvttpd2pi_01_A.d run/a/asm_cvttps2pi_01_A.d
diffstat 54 files changed, 719 insertions(+), 351 deletions(-) [+]
line wrap: on
line diff
--- a/run/a/asm_addpd_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_addpd_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,19 +16,21 @@
 	int main(){
 		haveSSE2!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = 1.123;
 		a[1] = 1234.5;
 
-		double[] b = new double[2];
+		double* b = new double[2];
 		b[0] = 0.0012;
 		b[1] = -2.4;
 
 		asm{
-			movupd XMM0, a;
-			movupd XMM1, b;
+			mov EAX, a;
+			movupd XMM0, [EAX];
+			mov EAX, b;
+			movupd XMM1, [EAX];
 			addpd XMM0, XMM1;
-			movupd b, XMM0;
+			movupd [EAX], XMM0;
 		}
 
 		b[0] -= 1.1242;
--- a/run/a/asm_addps_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_addps_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,23 +16,25 @@
 	int main(){
 		haveSSE!()();
 
-		float[] a = new float[4];
+		float* a = new float[4];
 		a[0] = 1.0f;
 		a[1] = 20.0f;
 		a[2] = 0.4f;
 		a[3] = 1.0f;
 
-		float[] b = new float[4];
+		float* b = new float[4];
 		b[0] = 4.0f;
 		b[1] = 10.0f;
 		b[2] = 4.0f;
 		b[3] = -1.0f;
 
 		asm{
-			movups XMM0, a;
-			movups XMM1, b;
+			mov EAX, a;
+			movups XMM0, [EAX];
+			mov EAX, b;
+			movups XMM1, [EAX];
 			addps XMM0, XMM1;
-			movups b, XMM0;
+			movups [EAX], XMM0;
 		}
 
 		b[0] -= 5.0f;
--- a/run/a/asm_addsd_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_addsd_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,19 +16,21 @@
 	int main(){
 		haveSSE2!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = 1.0;
 		a[1] = 20.0;
 
-		double[] b = new double[2];
+		double* b = new double[2];
 		b[0] = 4.0;
 		b[1] = 10.0;
 
 		asm{
-			movupd XMM0, a;
-			movupd XMM1, b;
+			mov EAX, a;
+			movupd XMM0, [EAX];
+			mov EAX, b;
+			movupd XMM1, [EAX];
 			addsd XMM0, XMM1;
-			movupd b, XMM0;
+			movupd [EAX], XMM0;
 		}
 
 		b[0] -= 5.0;
--- a/run/a/asm_addss_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_addss_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,23 +16,25 @@
 	int main(){
 		haveSSE!()();
 
-		float[] a = new float[4];
+		float* a = new float[4];
 		a[0] = 1.0f;
 		a[1] = 20.0f;
 		a[2] = 0.4f;
 		a[3] = 2.0f;
 
-		float[] b = new float[4];
+		float* b = new float[4];
 		b[0] = 4.0f;
 		b[1] = 10.0f;
 		b[2] = -4.0f;
 		b[3] = -0.4f;
 
 		asm{
-			movups XMM0, a;
-			movups XMM1, b;
+			mov EAX, a;
+			movups XMM0, [EAX];
+			mov EAX, b;
+			movups XMM1, [EAX];
 			addss XMM0, XMM1;
-			movups b, XMM0;
+			movups [EAX], XMM0;
 		}
 
 		b[0] -= 5.0f;
--- a/run/a/asm_addsubpd_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_addsubpd_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,19 +16,21 @@
 	int main(){
 		haveSSE3!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = 1.0;
 		a[1] = 30.0;
 
-		double[] b = new double[2];
+		double* b = new double[2];
 		b[0] = 4.0;
 		b[1] = 10.0;
 
 		asm{
-			movupd XMM0, a;
-			movupd XMM1, b;
+			mov EAX, a;
+			movupd XMM0, [EAX];
+			mov EAX, b;
+			movupd XMM1, [EAX];
 			addsubpd XMM0, XMM1;
-			movupd b, XMM0;
+			movupd [EAX], XMM0;
 		}
 
 		b[0] += 3.0;
--- a/run/a/asm_addsubps_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_addsubps_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,23 +16,25 @@
 	int main(){
 		haveSSE3!()();
 
-		float[] a = new float[4];
+		float* a = new float[4];
 		a[0] = 1.0f;
 		a[1] = 2.0f;
 		a[2] = 3.0f;
 		a[3] = 4.0f;
 
-		float[] b = new float[4];
+		float* b = new float[4];
 		b[0] = 0.1f;
 		b[1] = 0.2f;
 		b[2] = 0.3f;
 		b[3] = 0.4f;
 
 		asm{
-			movups XMM0, a;
-			movups XMM1, b;
+			mov EAX, a;
+			movups XMM0, [EAX];
+			mov EAX, b;
+			movups XMM1, [EAX];
 			addsubps XMM0, XMM1;
-			movups b, XMM0;
+			movups [EAX], XMM0;
 		}
 
 		b[0] -= 0.9f;
--- a/run/a/asm_clflush_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_clflush_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		uint a;
 		ubyte b = 1;
 
@@ -34,8 +34,8 @@
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmpeqsd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpeqsd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpeqsd_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(){
+		haveSSE2!()();
+
 		double a = 1.2;
 		double b = 1.2;
 		ulong res;
@@ -16,11 +26,13 @@
 			movq res, XMM0;
 		}
 
-		assert(res == res.max);
+		if(res != res.max){
+			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_cmpeqss_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpeqss_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -2,10 +2,20 @@
 // $Date$
 // $Author$
 
-module dstress.run.a.asm_cmpltss_01;
+module dstress.run.a.asm_cmpeqss_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(){
+		haveSSE!()();
+		
 		float a = 1.2;
 		float b = 1.2;
 		uint res;
@@ -16,11 +26,13 @@
 			movd res, XMM0;
 		}
 
-		assert(res == res.max);
+		if(res != res.max){
+			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_cmpiss_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpiss_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -12,13 +12,13 @@
 
 version(runTest){
 	int main(){
-		float[] a = new float[4];
+		float* a = new float[4];
 		a[0] = 1.0f;
 		a[1] = 2.0f;
 		a[2] = 3.0f;
 		a[3] = -8.0f;
 
-		float[] b = new float[4];
+		float* b = new float[4];
 		b[0] = 0.0f;
 		b[1] = 4.0f;
 		b[2] = 3.0f;
@@ -27,8 +27,10 @@
 		uint i;
 
 		asm{
-			movdqu XMM0, a;
-			movdqu XMM1, b;
+			mov EAX, a;
+			movdqu XMM0, [EAX];
+			mov EAX, b;
+			movdqu XMM1, [EAX];
 			comiss XMM0, XMM1;
 			mov EAX, 0;
 			jnc done_1;
@@ -44,10 +46,11 @@
 		}
 
 		asm{
-			movdqu XMM0, b;
-			movdqu XMM1, a;
+			mov EAX, b;
+			movdqu XMM0, [EAX];
+			mov EAX, a;	
+			movdqu XMM1, [EAX];
 			comiss XMM0, XMM1;
-			emms;
 			mov EAX, 0;
 			jnc done_2;
 			jz done_2;
--- a/run/a/asm_cmplesd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmplesd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmplesd_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(){
+		haveSSE!()();
+
 		double a = 1.2;
 		double b = 1.2;
 		ulong res;
@@ -16,11 +26,13 @@
 			movq res, XMM0;
 		}
 
-		assert(res == res.max);
+		if(res != res.max){
+			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_cmpless_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpless_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpless_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(){
+		haveSSE!()();
+
 		float a = 1.2;
 		float b = 1.2;
 		uint res;
@@ -16,11 +26,13 @@
 			movd res, XMM0;
 		}
 
-		assert(res == res.max);
+		if(res != res.max){
+			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_cmpltsd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpltsd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpltsd_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(){
+		haveSSE!()();
+
 		double a = 1.2;
 		double b = 1.2;
 		ulong res;
@@ -16,11 +26,13 @@
 			movq res, XMM0;
 		}
 
-		assert(res == 0);
+		if(res != 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_cmpltss_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpltss_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpltss_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(){
+		haveSSE!()();
+
 		float a = 1.2;
 		float b = 1.2;
 		uint res;
@@ -16,11 +26,13 @@
 			movd res, XMM0;
 		}
 
-		assert(res == 0);
+		if(res != 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_cmpneqsd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpneqsd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpneqsd_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(){
+		haveSSE2!()();
+
 		double a = 1.2;
 		double b = 1.2;
 		ulong res;
@@ -16,11 +26,13 @@
 			movq res, XMM0;
 		}
 
-		assert(res == 0);
+		if(res != 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_cmpneqss_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpneqss_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpnltss_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(){
+		haveSSE!()();
+		
 		float a = 1.2;
 		float b = 1.2;
 		uint res;
@@ -16,11 +26,13 @@
 			movd res, XMM0;
 		}
 
-		assert(res == 0);
+		if(res != 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_cmpnlesd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpnlesd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpnlesd_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(){
+		haveSSE2!()();
+
 		double a = 1.2;
 		double b = 1.2;
 		ulong res;
@@ -16,11 +26,13 @@
 			movq res, XMM0;
 		}
 
-		assert(res == 0);
+		if(res != 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_cmpnless_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpnless_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpnless_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(){
+		haveSSE!()();
+		
 		float a = 1.2;
 		float b = 1.2;
 		uint res;
@@ -16,11 +26,13 @@
 			movd res, XMM0;
 		}
 
-		assert(res == 0);
+		if(res != 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_cmpnltsd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpnltsd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpnltsd_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(){
+		haveSSE2!()();
+
 		double a = 1.2;
 		double b = 1.2;
 		ulong res;
@@ -16,11 +26,13 @@
 			movq res, XMM0;
 		}
 
-		assert(res == res.max);
+		if(res != res.max){
+			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_cmpnltss_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpnltss_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpnltss_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(){
+		haveSSE!()();
+
 		float a = 1.2;
 		float b = 1.2;
 		uint res;
@@ -16,11 +26,13 @@
 			movd res, XMM0;
 		}
 
-		assert(res == res.max);
+		if(res != res.max){
+			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_cmpordsd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpordsd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpordsd_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(){
+		haveSSE2!()();
+
 		double a = 1.2;
 		double b = 1.2;
 		ulong res;
@@ -16,11 +26,13 @@
 			movq res, XMM0;
 		}
 
-		assert(res == res.max);
+		if(res != res.max){
+			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_cmpordss_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpordss_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpordss_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(){
+		haveSSE!()();
+
 		float a = 1.2;
 		float b = 1.2;
 		uint res;
@@ -16,11 +26,13 @@
 			movd res, XMM0;
 		}
 
-		assert(res == res.max);
+		if(res != res.max){
+			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_cmppd_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmppd_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,21 +16,24 @@
 	int main(){
 		haveSSE2!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = 1.0;
 		a[1] = 2.0;
 
-		double[] b = new double[2];
+		double* b = new double[2];
 		b[0] = 1.1;
 		b[1] = 2.0;
 
-		ulong[] c = new ulong[2];
+		ulong* c = new ulong[2];
 
 		asm{
-			movupd XMM0, a;
-			movupd XMM1, b;
+			mov EAX, a;
+			movupd XMM0, [EAX];
+			mov EAX, b;
+			movupd XMM1, [EAX];
 			cmppd XMM0, XMM1, 0;
-			movupd c, XMM0;
+			mov EAX, c;
+			movupd [EAX], XMM0;
 		}
 
 		if(c[0]){
--- a/run/a/asm_cmpps_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpps_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,25 +16,28 @@
 	int main(){
 		haveSSE!()();
 
-		float[] a = new float[4];
+		float* a = new float[4];
 		a[0] = 1.0f;
 		a[1] = 2.0f;
 		a[2] = 3.0f;
 		a[3] = 4.0f;
 
-		float[] b = new float[4];
+		float* b = new float[4];
 		b[0] = 1.1f;
 		b[1] = 1.9f;
 		b[2] = 3.0f;
 		b[3] = 4.1f;
 
-		uint[] c = new uint[4];
+		uint* c = new uint[4];
 
 		asm{
-			movups XMM0, a;
-			movups XMM1, b;
+			mov EAX, a;
+			movups XMM0, [EAX];
+			mov EAX, b;
+			movups XMM1, [EAX];
 			cmpps XMM0, XMM1, 0;
-			movups c, XMM0;
+			mov EAX, c;
+			movups [EAX], XMM0;
 		}
 
 		if(c[0]){
--- a/run/a/asm_cmpsd_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpsd_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,23 +16,27 @@
 	int main(){
 		haveSSE2!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = 1.0;
 		a[1] = 2.0;
 
-		double[] b = new double[2];
+		double* b = new double[2];
 		b[0] = 1.0;
 		b[1] = 2.0;
 
-		ulong[] c = new ulong[2];
-		double[] d = new double[2];
+		ulong* c = new ulong[2];
+		double* d = new double[2];
 
 		asm{
-			movupd XMM0, a;
-			movupd XMM1, b;
+			mov EAX, a;
+			movupd XMM0, [EAX];
+			mov EAX, b;
+			movupd XMM1, [EAX];
 			cmpsd XMM0, XMM1, 0;
-			movdqu c, XMM0;
-			movupd d, XMM0;
+			mov EAX, c;
+			movdqu [EAX], XMM0;
+			mov EAX, d;
+			movupd [EAX], XMM0;
 		}
 
 		if(c[0] != ulong.max){
--- a/run/a/asm_cmpsd_01_B.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpsd_01_B.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,19 +16,22 @@
 	int main(){
 		haveSSE2!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = 1.0;
 		a[1] = 2.0;
 
 		double b = 1.0;
-		ulong[] c = new ulong[2];
-		double[] d = new double[2];
+		ulong* c = new ulong[2];
+		double* d = new double[2];
 
 		asm{
-			movupd XMM0, a;
+			mov EAX, a;
+			movupd XMM0, [EAX];
 			cmpsd XMM0, b, 0;
-			movdqu c, XMM0;
-			movupd d, XMM0;
+			mov EAX, c;
+			movdqu [EAX], XMM0;
+			mov EAX, d;
+			movupd [EAX], XMM0;
 		}
 
 		if(c[0] != ulong.max){
--- a/run/a/asm_cmpss_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpss_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -10,36 +10,48 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
-		static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f];
-		uint[4] c;
-		float[4] f;
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveSSE!()();
+
+		float* a = new float[4];
+		a[0] = 1.0f;
+		a[1] = 2.0f;
+		a[2] = 3.0f;
+		a[3] = 4.0f;
+		
+		uint* c = new uint[4];
+		float* f = new float[4];
 
 		asm{
-			movups XMM0, A;
-			movups XMM1, A;
+			mov EAX, a;
+			movups XMM0, [EAX];
+			movups XMM1, [EAX];
 			cmpss XMM0, XMM1, 0;
-			movdqu c, XMM0;
-			movups f, XMM0;
+			mov EAX, c;
+			movdqu [EAX], XMM0;
+			mov EAX, f;
+			movups [EAX], XMM0;
 		}
 
 		if(c[0] != uint.max){
 			assert(0);
 		}
-		if(f[1] != A[1]){
+		if(f[1] != a[1]){
 			assert(0);
 		}
-		if(f[2] != A[2]){
+		if(f[2] != a[2]){
 			assert(0);
 		}
-		if(f[3] != A[3]){
+		if(f[3] != a[3]){
 			assert(0);
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmpss_01_B.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpss_01_B.d	Sun Aug 20 11:18:32 2006 +0000
@@ -10,36 +10,48 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
-		static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f];
-		static float B = 1.0f;
-		uint[4] c;
-		float[4] f;
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		haveSSE!()();
+
+		float* a = new float[4];
+		a[0] = 1.0f;
+		a[1] = 2.0f;
+		a[2] = 3.0f;
+		a[3] = 4.0f;
+		
+		float b = 1.0f;
+		uint* c = new uint[4];
+		float* f = new float[4];
 
 		asm{
-			movups XMM0, A;
-			cmpss XMM0, B, 0;
-			movdqu c, XMM0;
-			movups f, XMM0;
+			mov EAX, a;
+			movups XMM0, [EAX];
+			cmpss XMM0, b, 0;
+			mov EAX, c;
+			movdqu [EAX], XMM0;
+			mov EAX, f;
+			movups [EAX], XMM0;
 		}
 
 		if(c[0] != uint.max){
 			assert(0);
 		}
-		if(f[1] != A[1]){
+		if(f[1] != a[1]){
 			assert(0);
 		}
-		if(f[2] != A[2]){
+		if(f[2] != a[2]){
 			assert(0);
 		}
-		if(f[3] != A[3]){
+		if(f[3] != a[3]){
 			assert(0);
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmpunordsd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpunordsd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmplesd_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(){
+		haveSSE2!()();
+
 		double a = 1.2;
 		double b = 1.1;
 		ulong res;
@@ -16,11 +26,13 @@
 			movq res, XMM0;
 		}
 
-		assert(res == 0);
+		if(res != 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_cmpunordss_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpunordss_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cmpunordss_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(){
+		haveSSE!()();
+
 		float a = 1.2;
 		float b = 1.2;
 		uint res;
@@ -16,11 +26,13 @@
 			movd res, XMM0;
 		}
 
-		assert(res == 0);
+		if(res != 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_cmpxch8b_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpxch8b_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_cmpxch8b_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 = 1;
 		uint d = 1;
 		ulong c = 0;
@@ -21,9 +27,15 @@
 			mov d, EDX;
 		}
 
-		assert(c==c.max);
-		assert(a==0);
-		assert(d==0);
+		if(c != c.max){
+			assert(0);
+		}
+		if(a != 0){
+			assert(0);
+		}
+		if(d != 0){
+			assert(0);
+		}
 
 		c=1;
 
@@ -39,14 +51,19 @@
 			mov d, EDX;
 		}
 
-
-		assert(c==1);
-		assert(a==1);
-		assert(d==0);
+		if(c != 1){
+			assert(0);
+		}
+		if(a != 1){
+			assert(0);
+		}
+		if(d != 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_cmpxchg_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpxchg_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		ubyte a = 0;
 		ubyte c = 3;
 		asm{
@@ -46,8 +46,8 @@
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmpxchg_01_B.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpxchg_01_B.d	Sun Aug 20 11:18:32 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		ushort a = 0;
 		ushort c = 3;
 		asm{
@@ -46,8 +46,8 @@
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmpxchg_01_C.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpxchg_01_C.d	Sun Aug 20 11:18:32 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		uint a = 0;
 		uint c = 3;
 		asm{
@@ -46,8 +46,8 @@
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmpxchg_02_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpxchg_02_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -2,7 +2,7 @@
 // $Date$
 // $Author$
 
-module dstress.run.a.asm_cmpxchg_01_A;
+module dstress.run.a.asm_cmpxchg_02_A;
 
 version(D_InlineAsm_X86){
 	version = runTest;
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		ubyte a = 0;
 		ubyte c = 3;
 		asm{
@@ -50,8 +50,8 @@
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmpxchg_02_B.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpxchg_02_B.d	Sun Aug 20 11:18:32 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		ushort a = 0;
 		ushort c = 3;
 		asm{
@@ -50,8 +50,8 @@
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmpxchg_02_C.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cmpxchg_02_C.d	Sun Aug 20 11:18:32 2006 +0000
@@ -2,7 +2,7 @@
 // $Date$
 // $Author$
 
-module dstress.run.a.asm_cmpxchg_01_C;
+module dstress.run.a.asm_cmpxchg_02_C;
 
 version(D_InlineAsm_X86){
 	version = runTest;
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		uint a = 0;
 		uint c = 3;
 		asm{
@@ -50,8 +50,8 @@
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_comisd_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_comisd_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,17 +16,19 @@
 	int main(){
 		haveSSE2!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = 1.0;
 		a[1] = 3.0;
 
-		double[] b = new double[2];
+		double* b = new double[2];
 		b[0] = 4.0;
 		b[1] = 3.0;
 
 		asm{
-			movupd XMM0, a;
-			movupd XMM1, b;
+			mov EAX, a;
+			movupd XMM0, [EAX];
+			mov EAX, b;
+			movupd XMM1, [EAX];
 			comisd XMM0, XMM1;
 			jz error;
 			jp error;
--- a/run/a/asm_comiss_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_comiss_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,21 +16,23 @@
 	int main(){
 		haveSSE!()();
 
-		float[] a = new float[4];
+		float* a = new float[4];
 		a[0] = 0.0f;
 		a[1] = 1.0f;
 		a[2] = 3.0f;
 		a[3] = 5.0f;
 
-		float[] b = new float[4];
+		float* b = new float[4];
 		b[0] = 0.0f;
 		b[1] = 2.0f;
 		b[2] = 4.0f;
 		b[3] = 6.0f;
 
 		asm{
-			movups XMM0, a;
-			movups XMM1, b;
+			mov EAX, a;
+			movups XMM0, [EAX];
+			mov EAX, b;
+			movups XMM1, [EAX];
 			comiss XMM0, XMM1;
 			jnz error;
 			jp error;
--- a/run/a/asm_cvtdq2pd_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtdq2pd_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,18 +16,20 @@
 	int main(){
 		haveSSE2!()();
 
-		int[] a = new int[4];
+		int* a = new int[4];
 		a[0] = 0;
 		a[1] = -1;
 		a[2] = 2;
 		a[3] = -3;
 
-		double[] b = new double[2];
+		double* b = new double[2];
 
 		asm{
-			movdqu XMM0, a;
+			mov EAX, a;
+			movdqu XMM0, [EAX];
 			cvtdq2pd XMM1, XMM0;
-			movdqu b, XMM1;
+			mov EAX, b;
+			movdqu [EAX], XMM1;
 		}
 
 		if(b[0] != 0){
--- a/run/a/asm_cvtdq2ps_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtdq2ps_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,18 +16,20 @@
 	int main(){
 		haveSSE2!()();
 
-		int[] a = new int[4];
+		int* a = new int[4];
 		a[0] = 0;
 		a[1] = -1;
 		a[2] = 2;
 		a[3] = -3;
 
-		float[] b = new float[4];
+		float* b = new float[4];
 
 		asm{
-			movdqu XMM0, a;
+			mov EAX, a;
+			movdqu XMM0, [EAX];
 			cvtdq2ps XMM1, XMM0;
-			movdqu b, XMM1;
+			mov EAX, b;
+			movdqu [EAX], XMM1;
 		}
 
 		if(b[0] != 0.0f){
--- a/run/a/asm_cvtpd2dq_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtpd2dq_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -16,16 +16,18 @@
 	int main(){
 		haveSSE2!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = -2.0;
 		a[1] = 4.0;
 
-		int[] b = new int[4];
+		int* b = new int[4];
 
 		asm{
-			movdqu XMM0, a;
+			mov EAX, a;
+			movdqu XMM0, [EAX];
 			cvtpd2dq XMM1, XMM0;
-			movdqu b, XMM1;
+			mov EAX, b;
+			movdqu [EAX], XMM1;
 		}
 
 		if(b[0] != -2){
--- a/run/a/asm_cvtpd2pi_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtpd2pi_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -17,15 +17,18 @@
 		haveSSE2!()();
 		haveMMX!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = -2.0;
 		a[1] = 4.0;
-		int[] b = new int[2];
+		
+		int* b = new int[2];
 
 		asm{
-			movupd XMM0, a;
+			mov EAX, a;
+			movupd XMM0, [EAX];
 			cvtpd2pi MM0, XMM0;
-			movq b, MM0;
+			mov EAX, b;
+			movq [EAX], MM0;
 			emms;
 		}
 
--- a/run/a/asm_cvtpi2pd_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtpi2pd_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -17,16 +17,18 @@
 		haveSSE2!();
 		haveMMX!();
 
-		int[] a = new int[2];
+		int* a = new int[2];
 		a[0] = -3;
 		a[1] = 2;
 
-		double[] b = new double[2];
+		double* b = new double[2];
 
 		asm{
-			movq MM0, a;
+			mov EAX, a;
+			movq MM0, [EAX];
 			cvtpi2pd XMM0, MM0;
-			movupd b, XMM0;
+			mov EAX, b;
+			movupd [EAX], XMM0;
 			emms;
 		}
 
--- a/run/a/asm_cvtpi2ps_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtpi2ps_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -17,23 +17,26 @@
 		haveSSE2!();
 		haveMMX!();
 
-		int[] a = new int[2];
+		int* a = new int[2];
 		a[0] = -3;
 		a[1] = 2;
 
-		float[] b = new float[4];
+		float* b = new float[4];
 		b[0] = 10.1f;
 		b[1] = 20.2f;
 		b[2] = 30.3f;
 		b[3] = 40.4f;
 
-		float[] c = new float[4];
+		float* c = new float[4];
 
 		asm{
-			movq MM0, a;
-			movups XMM0, b;
+			mov EAX, a;
+			movq MM0, [EAX];
+			mov EAX, b;
+			movups XMM0, [EAX];
 			cvtpi2ps XMM0, MM0;
-			movups c, XMM0;
+			mov EAX, c;
+			movups [EAX], XMM0;
 			emms;
 		}
 
--- a/run/a/asm_cvtps2pi_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtps2pi_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -17,18 +17,20 @@
 		haveSSE2!();
 		haveMMX!();
 
-		float[] a = new float[4];
+		float* a = new float[4];
 		a[0] = 1.0f;
 		a[1] = 2.0f;
 		a[2] = 3.0f;
 		a[3] = 4.0f;
 
-		int[] b = new int[2];
+		int* b = new int[2];
 
 		asm{
-			movups XMM0, a;
+			mov EAX, a;
+			movups XMM0, [EAX];
 			cvtps2pi MM0, XMM0;
-			movq b, MM0;
+			mov EAX, b;
+			movq [EAX], MM0;
 			emms;
 		}
 
--- a/run/a/asm_cvtsd2si_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtsd2si_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cvtsd2si_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(){
+		haveSSE2!()();
+
 		uint i = 0;
 		double f = 64.0f;
 
@@ -14,12 +24,16 @@
 			mov i, EAX;
 		}
 
-		assert(i==64);
-		assert(f==64.0f);
+		if(i != 64){
+			assert(0);
+		}
+		if(f != 64.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_cvtsd2ss_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtsd2ss_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,23 +4,36 @@
 
 module dstress.run.a.asm_cvtsd2ss_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(){
+		haveSSE2!()();
+
 		double d = 64.0f;
 		float f = 0.0;
 
-
 		asm{
 			cvtsd2ss XMM0, d;
 			movd f, XMM0;
 		}
 
-		assert(d==64.0f);
-		assert(f==64.0f);
+		if(d != 64.0f){
+			assert(0);
+		}
+		if(f != 64.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_cvtsi2sd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtsi2sd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cvtsi2sd_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(){
+		haveSSE2!()();
+
 		int i = -23000;
 		double d = 0.0f;
 
@@ -14,12 +24,16 @@
 			movq d, XMM0;
 		}
 
-		assert(d==-23000.0);
-		assert(i==-23000);
+		if(d != -23000.0){
+			assert(0);
+		}
+		if(i != -23000){
+			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_cvtsi2ss_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtsi2ss_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cvtsi2ss_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(){
+		haveSSE!()();
+
 		int i = -23000;
 		float f = 0.0f;
 
@@ -14,12 +24,16 @@
 			movd f, XMM0;
 		}
 
-		assert(f==-23000.0);
-		assert(i==-23000);
+		if(f != -23000.0){
+			assert(0);
+		}
+		if(i != -23000){
+			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_cvtss2sd_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtss2sd_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cvtss2sd_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(){
+		haveSSE2!()();
+		
 		float f = -19.0f;
 		double d = 0.0f;
 
@@ -14,12 +24,16 @@
 			movq d, XMM0;
 		}
 
-		assert(d==-19.0);
-		assert(f==-19.0);
+		if(d != -19.0){
+			assert(0);
+		}
+		if(f != -19.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_cvtss2si_01.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvtss2si_01.d	Sun Aug 20 11:18:32 2006 +0000
@@ -4,8 +4,18 @@
 
 module dstress.run.a.asm_cvtss2si_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(){
+		haveSSE!()();
+
 		float f = -19.0f;
 		int i = 0;
 
@@ -14,12 +24,16 @@
 			mov i, EAX;
 		}
 
-		assert(i==-19);
-		assert(f==-19.0);
+		if(i != -19){
+			assert(0);
+		}
+		if(f != -19.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_cvttpd2pi_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvttpd2pi_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -17,16 +17,18 @@
 		haveSSE2!()();
 		haveMMX!()();
 
-		double[] a = new double[2];
+		double* a = new double[2];
 		a[0] = -2.0;
 		a[1] = 4.0;
 
-		int[] b = new int[2];
+		int* b = new int[2];
 
 		asm{
-			movupd XMM0, a;
+			mov EAX, a;
+			movupd XMM0, [EAX];
 			cvttpd2pi MM0, XMM0;
-			movq b, MM0;
+			mov EAX, b;
+			movq [EAX], MM0;
 			emms;
 		}
 
--- a/run/a/asm_cvttps2pi_01_A.d	Fri Aug 18 07:16:20 2006 +0000
+++ b/run/a/asm_cvttps2pi_01_A.d	Sun Aug 20 11:18:32 2006 +0000
@@ -17,18 +17,20 @@
 		haveSSE2!();
 		haveMMX!();
 
-		float[] a = new float[4];
+		float* a = new float[4];
 		a[0] = 1.0f;
 		a[1] = 2.0f;
 		a[2] = 3.0f;
 		a[3] = 4.0f;
 
-		int[] b = new int[2];
+		int* b = new int[2];
 
 		asm{
-			movups XMM0, a;
+			mov EAX, a;
+			movups XMM0, [EAX];
 			cvttps2pi MM0, XMM0;
-			movq b, MM0;
+			mov EAX, b;
+			movq [EAX], MM0;
 			emms;
 		}