changeset 988:052b82b4924c

inline ASM review
author thomask
date Sun, 07 May 2006 18:20:25 +0000
parents 1c9d1337cb77
children a468938b0160
files run/a/asm_clflush_01.d run/a/asm_cmc_01.d run/a/asm_cmova_01_A.d run/a/asm_cmova_01_B.d run/a/asm_cmova_02_A.d run/a/asm_cmova_02_B.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_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_comisd_01_B.d run/a/asm_comiss_01_A.d run/a/asm_comiss_01_B.d
diffstat 22 files changed, 718 insertions(+), 60 deletions(-) [+]
line wrap: on
line diff
--- a/run/a/asm_clflush_01.d	Sun May 07 15:37:44 2006 +0000
+++ b/run/a/asm_clflush_01.d	Sun May 07 18:20:25 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_clflush_01;
 
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
 int main(){
-	version(D_InlineAsm){
+	version(doTest){
 		uint a;
 		ubyte b = 1;
 		
@@ -23,11 +29,13 @@
 			mov a, 1;
 		}
 	
-		assert(a==0x20001 || a==1);
+		if((a != 0x20001) && (a != 1)){
+			assert(0);
+		}
 		
 		return 0;
 	}else{
-		pragma(msg, "no Inline asm support");
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
 		static assert(0);
 	}
 }
--- a/run/a/asm_cmc_01.d	Sun May 07 15:37:44 2006 +0000
+++ b/run/a/asm_cmc_01.d	Sun May 07 18:20:25 2006 +0000
@@ -4,33 +4,31 @@
 
 module dstress.run.a.asm_cmc_01;
 
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
 int main(){
-	version(D_InlineAsm){
+	version(doTest){
 		byte a = 0;
 				
 		asm{
 			clc;
 			cmc;
-			mov AL, 0;
-			adc AL, 0;
-			mov a, AL;
-		}
-
-		assert(a == 1);
-		
-		asm{
+			jnc error;
 			stc;
 			cmc;
-			mov AL, 0;
-			adc AL, 0;
-			mov a, AL;
+			jc error;
 		}
 		
-		assert(a == 0);
 		
 		return 0;
+	error:
+		assert(0);
 	}else{
-		pragma(msg, "no Inline asm support");
+		pragma(msg, "DSTRESS{XFAIL}: 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_cmova_01_A.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,50 @@
+ // $HeadURL$
+ // $Date$
+ // $Author$
+ 
+module dstress.run.a.asm_cmova_01_A;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		uint a;
+		asm{
+			mov ECX, 0xAB_CD_EF_01;
+			mov DX, 0x12_34;
+			mov AL, 1;
+			mov BL, 2;
+			cmp AL, BL;
+			cmova CX, DX;
+			mov a, ECX;
+		}
+
+		if(a != 0xAB_CD_EF_01){
+			assert(0);
+		}
+
+		asm{
+			mov ECX, 0xAB_CD_EF_01;
+			mov DX, 0x12_34;
+			mov AL, 2;
+			mov BL, 1;
+			cmp AL, BL;
+			cmova CX, DX;
+			mov a, ECX;
+		}
+		if(a != 0xAB_CD_12_34){
+			assert(0);
+		}
+		
+		return 0;
+	error:
+		assert(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_cmova_01_B.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,49 @@
+ // $HeadURL$
+ // $Date$
+ // $Author$
+ 
+module dstress.run.a.asm_cmova_01_B;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		uint a;
+		ushort d = 0x12_34;
+		asm{
+			mov ECX, 0xAB_CD_EF_01;
+			mov AL, 1;
+			mov BL, 2;
+			cmp AL, BL;
+			cmova CX, d;
+			mov a, ECX;
+		}
+
+		if(a != 0xAB_CD_EF_01){
+			assert(0);
+		}
+
+		asm{
+			mov ECX, 0xAB_CD_EF_01;
+			mov AL, 2;
+			mov BL, 1;
+			cmp AL, BL;
+			cmova CX, d;
+			mov a, ECX;
+		}
+		if(a != 0xAB_CD_12_34){
+			assert(0);
+		}
+		
+		return 0;
+	error:
+		assert(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_cmova_02_A.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,49 @@
+ // $HeadURL$
+ // $Date$
+ // $Author$
+ 
+module dstress.run.a.asm_cmova_02_A;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		uint a;
+		asm{
+			mov ECX, 0xAB_CD_EF_01;
+			mov EDX, 0x12_34_56_FE;
+			mov AL, 1;
+			mov BL, 2;
+			cmp AL, BL;
+			cmova ECX, EDX;
+			mov a, ECX;
+		}
+
+		if(a != 0xAB_CD_EF_01){
+			assert(0);
+		}
+
+		asm{
+			mov ECX, 0xAB_CD_EF_01;
+			mov AL, 2;
+			mov BL, 1;
+			cmp AL, BL;
+			cmova ECX, EDX;
+			mov a, ECX;
+		}
+		if(a != 0x12_34_56_FE){
+			assert(0);
+		}
+		
+		return 0;
+	error:
+		assert(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_cmova_02_B.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,49 @@
+ // $HeadURL$
+ // $Date$
+ // $Author$
+ 
+module dstress.run.a.asm_cmova_02_B;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		uint a;
+		uint d = 0x12_34_56_FE;
+		asm{
+			mov ECX, 0xAB_CD_EF_01;
+			mov AL, 1;
+			mov BL, 2;
+			cmp AL, BL;
+			cmova ECX, d;
+			mov a, ECX;
+		}
+
+		if(a != 0xAB_CD_EF_01){
+			assert(0);
+		}
+
+		asm{
+			mov ECX, 0xAB_CD_EF_01;
+			mov AL, 2;
+			mov BL, 1;
+			cmp AL, BL;
+			cmova ECX, d;
+			mov a, ECX;
+		}
+		if(a != 0x12_34_56_FE){
+			assert(0);
+		}
+		
+		return 0;
+	error:
+		assert(0);
+	}else{
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+		static assert(0);
+	}
+}
--- a/run/a/asm_cmppd_01_A.d	Sun May 07 15:37:44 2006 +0000
+++ b/run/a/asm_cmppd_01_A.d	Sun May 07 18:20:25 2006 +0000
@@ -4,17 +4,23 @@
 
 module dstress.run.a.asm_cmppd_01_A;
 
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
 int main(){
-	version(D_InlineAsm_X86){
+	version(doTest){
 		static double[2] A = [1.0, 2.0f];
 		static double[2] B = [1.1, 2.0f];
 		ulong[2] c;
 
 		asm{
-			movdqu XMM0, A;
-			movdqu XMM1, B;
+			movupd XMM0, A;
+			movupd XMM1, B;
 			cmppd XMM0, XMM1, 0;
-			movdqu c, XMM0;
+			movupd c, XMM0;
 		}
 
 		if(c[0]){
@@ -25,7 +31,7 @@
 		}
 		return 0;
 	}else{
-		pragma(msg, "no Inline asm support");
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
 		static assert(0);
 	}
 }
--- a/run/a/asm_cmpps_01_A.d	Sun May 07 15:37:44 2006 +0000
+++ b/run/a/asm_cmpps_01_A.d	Sun May 07 18:20:25 2006 +0000
@@ -4,6 +4,12 @@
 
 module dstress.run.a.asm_cmpps_01_A;
 
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
 int main(){
 	version(D_InlineAsm_X86){
 		static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f];
@@ -11,10 +17,10 @@
 		uint[4] c;
 
 		asm{
-			movdqu XMM0, A;
-			movdqu XMM1, B;
+			movups XMM0, A;
+			movups XMM1, B;
 			cmpps XMM0, XMM1, 0;
-			movdqu c, XMM0;
+			movups c, XMM0;
 		}
 
 		if(c[0]){
@@ -31,7 +37,7 @@
 		}
 		return 0;
 	}else{
-		pragma(msg, "no Inline asm support");
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
 		static assert(0);
 	}
 }
--- a/run/a/asm_cmpsd_01_A.d	Sun May 07 15:37:44 2006 +0000
+++ b/run/a/asm_cmpsd_01_A.d	Sun May 07 18:20:25 2006 +0000
@@ -4,19 +4,25 @@
 
 module dstress.run.a.asm_cmpsd_01_A;
 
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
 int main(){
-	version(D_InlineAsm_X86){
+	version(doTest){
 		static double[2] A = [1.0, 2.0];
 		static double[2] B = [1.0, 2.0];
 		ulong[2] c;
 		double[2] d;
 
 		asm{
-			movdqu XMM0, A;
-			movdqu XMM1, B;
+			movupd XMM0, A;
+			movupd XMM1, B;
 			cmpsd XMM0, XMM1, 0;
 			movdqu c, XMM0;
-			movdqu d, XMM0;
+			movupd d, XMM0;
 		}
 
 		if(c[0] != ulong.max){
@@ -28,7 +34,7 @@
 
 		return 0;
 	}else{
-		pragma(msg, "no Inline asm support");
+		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_cmpsd_01_B.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,39 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_cmpsd_01_B;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		static double[2] A = [1.0, 2.0];
+		static double B = 1.0;
+		ulong[2] c;
+		double[2] d;
+
+		asm{
+			movupd XMM0, A;
+			cmpsd XMM0, B, 0;
+			movdqu c, XMM0;
+			movupd d, XMM0;
+		}
+
+		if(c[0] != ulong.max){
+			assert(0);
+		}
+		if(d[1] != A[1]){
+			assert(0);
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+		static assert(0);
+	}
+}
--- a/run/a/asm_cmpss_01_A.d	Sun May 07 15:37:44 2006 +0000
+++ b/run/a/asm_cmpss_01_A.d	Sun May 07 18:20:25 2006 +0000
@@ -4,18 +4,24 @@
 
 module dstress.run.a.asm_cmpss_01_A;
 
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
 int main(){
-	version(D_InlineAsm_X86){
-		static float[4] A = [1.0f, 2.0f, 3.0f, 4.0];
+	version(doTest){
+		static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f];
 		uint[4] c;
 		float[4] f;
 
 		asm{
-			movdqu XMM0, A;
-			movdqu XMM1, A;
+			movups XMM0, A;
+			movups XMM1, A;
 			cmpss XMM0, XMM1, 0;
 			movdqu c, XMM0;
-			movdqu f, XMM0;
+			movups f, XMM0;
 		}
 
 		if(c[0] != uint.max){
@@ -33,7 +39,7 @@
 
 		return 0;
 	}else{
-		pragma(msg, "no Inline asm support");
+		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_cmpss_01_B.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,45 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_cmpss_01_B;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f];
+		static float B = 1.0f;
+		uint[4] c;
+		float[4] f;
+
+		asm{
+			movups XMM0, A;
+			cmpss XMM0, B, 0;
+			movdqu c, XMM0;
+			movups f, XMM0;
+		}
+
+		if(c[0] != uint.max){
+			assert(0);
+		}
+		if(f[1] != A[1]){
+			assert(0);
+		}
+		if(f[2] != A[2]){
+			assert(0);
+		}
+		if(f[3] != A[3]){
+			assert(0);
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+		static assert(0);
+	}
+}
--- a/run/a/asm_cmpxchg_01_A.d	Sun May 07 15:37:44 2006 +0000
+++ b/run/a/asm_cmpxchg_01_A.d	Sun May 07 18:20:25 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_cmpxchg_01_A;
 
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
 int main(){
-	version(D_InlineAsm){
+	version(doTest){
 		ubyte a = 0;
 		ubyte c = 3;
 		asm{
@@ -15,8 +21,12 @@
 			mov a, AL;
 		}
 	
-		assert(c==3);
-		assert(a==3);
+		if(c != 3){
+			assert(0);
+		}
+		if(a != 3){
+			assert(0);
+		}
 		
 		a = 0;
 		c = 3;
@@ -28,12 +38,16 @@
 			mov a, AL;
 		}
 		
-		assert(c==2);
-		assert(a==3);
+		if(c != 2){
+			assert(0);
+		}
+		if(a != 3){
+			assert(0);
+		}
 		
 		return 0;
 	}else{
-		pragma(msg, "no Inline asm support");
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
 		static assert(0);
 	}
-}
\ No newline at end of file
+}
--- a/run/a/asm_cmpxchg_01_B.d	Sun May 07 15:37:44 2006 +0000
+++ b/run/a/asm_cmpxchg_01_B.d	Sun May 07 18:20:25 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_cmpxchg_01_B;
 
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
 int main(){
-	version(D_InlineAsm){
+	version(doTest){
 		ushort a = 0;
 		ushort c = 3;
 		asm{
@@ -15,8 +21,12 @@
 			mov a, AX;
 		}
 	
-		assert(c==3);
-		assert(a==3);
+		if(c != 3){
+			assert(0);
+		}
+		if(a != 3){
+			assert(0);
+		}
 		
 		a = 0;
 		c = 3;
@@ -28,12 +38,16 @@
 			mov a, AX;
 		}
 		
-		assert(c==2);
-		assert(a==3);
+		if(c != 2){
+			assert(0);
+		}
+		if(a != 3){
+			assert(0);
+		}
 		
 		return 0;
 	}else{
-		pragma(msg, "no Inline asm support");
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
 		static assert(0);
 	}
-}
\ No newline at end of file
+}
--- a/run/a/asm_cmpxchg_01_C.d	Sun May 07 15:37:44 2006 +0000
+++ b/run/a/asm_cmpxchg_01_C.d	Sun May 07 18:20:25 2006 +0000
@@ -2,10 +2,16 @@
 // $Date$
 // $Author$
 
-module dstress.run.a.asm_cmpxchg_01_B;
+module dstress.run.a.asm_cmpxchg_01_C;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
 
 int main(){
-	version(D_InlineAsm){
+	version(doTest){
 		uint a = 0;
 		uint c = 3;
 		asm{
@@ -15,8 +21,12 @@
 			mov a, EAX;
 		}
 	
-		assert(c==3);
-		assert(a==3);
+		if(c != 3){
+			assert(0);
+		}
+		if(a != 3){
+			assert(0);
+		}
 		
 		a = 0;
 		c = 3;
@@ -28,12 +38,16 @@
 			mov a, EAX;
 		}
 		
-		assert(c==2);
-		assert(a==3);
+		if(c != 2){
+			assert(0);
+		}
+		if(a != 3){
+			assert(0);
+		}
 		
 		return 0;
 	}else{
-		pragma(msg, "no Inline asm support");
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
 		static assert(0);
 	}
-}
\ No newline at end of file
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_cmpxchg_02_A.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,57 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_cmpxchg_01_A;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		ubyte a = 0;
+		ubyte c = 3;
+		asm{
+			mov AL, 1;
+			mov BL, 2;
+			mov CL, c;
+			cmpxchg CL, BL;
+			mov a, AL;
+			mov c, CL;
+		}
+	
+		if(c != 3){
+			assert(0);
+		}
+		if(a != 3){
+			assert(0);
+		}
+		
+		a = 0;
+		c = 3;
+		
+		asm{
+			mov AL, 3;
+			mov BL, 2;
+			mov CL, c;
+			cmpxchg CL, BL;
+			mov a, AL;
+			mov c, CL;
+		}
+		
+		if(c != 2){
+			assert(0);
+		}
+		if(a != 3){
+			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_cmpxchg_02_B.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,57 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_cmpxchg_01_B;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		ushort a = 0;
+		ushort c = 3;
+		asm{
+			mov AX, 1;
+			mov BX, 2;
+			mov CX, c;
+			cmpxchg CX, BX;
+			mov a, AX;
+			mov c, CX;
+		}
+	
+		if(c != 3){
+			assert(0);
+		}
+		if(a != 3){
+			assert(0);
+		}
+		
+		a = 0;
+		c = 3;
+		
+		asm{
+			mov AX, 3;
+			mov BX, 2;
+			mov CX, c;
+			cmpxchg CX, BX;
+			mov a, AX;
+			mov c, CX;
+		}
+		
+		if(c != 2){
+			assert(0);
+		}
+		if(a != 3){
+			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_cmpxchg_02_C.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,57 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_cmpxchg_01_C;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		uint a = 0;
+		uint c = 3;
+		asm{
+			mov EAX, 1;
+			mov EBX, 2;
+			mov ECX, c;
+			cmpxchg ECX, EBX;
+			mov a, EAX;
+			mov c, ECX;
+		}
+	
+		if(c != 3){
+			assert(0);
+		}
+		if(a != 3){
+			assert(0);
+		}
+		
+		a = 0;
+		c = 3;
+		
+		asm{
+			mov EAX, 3;
+			mov EBX, 2;
+			mov ECX, c;
+			cmpxchg ECX, EBX;
+			mov a, EAX;
+			mov c, ECX;
+		}
+		
+		if(c != 2){
+			assert(0);
+		}
+		if(a != 3){
+			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_comisd_01_A.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,34 @@
+ // $HeadURL$
+ // $Date$
+ // $Author$
+ 
+module dstress.run.a.asm_comisd_01_A;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		const double[2] A = [1.0, 2.0];
+		const double[2] B = [1.0, 3.0];
+
+		asm{
+			movupd XMM0, A;
+			movupd XMM1, B;
+			comisd XMM0, XMM1;
+			jg error;
+			je error;
+			jnl error;
+		}
+
+		return 0;
+	error:
+		assert(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_comisd_01_B.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,33 @@
+ // $HeadURL$
+ // $Date$
+ // $Author$
+ 
+module dstress.run.a.asm_comisd_01_B;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		const double[2] A = [1.0, 2.0];
+		const double B = 3.0;
+
+		asm{
+			movupd XMM0, A;
+			comisd XMM0, B;
+			jg error;
+			je error;
+			jnl error;
+		}
+
+		return 0;
+	error:
+		assert(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_comiss_01_A.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,34 @@
+ // $HeadURL$
+ // $Date$
+ // $Author$
+ 
+module dstress.run.a.asm_comiss_01_A;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		const float[4] A = [10.0f, 20.0f, 19.0f, 2.0f];
+		const float[4] B = [5.0f, 5.0f, 5.0f, 3.0f];
+
+		asm{
+			movups XMM0, A;
+			movups XMM1, B;
+			comiss XMM0, XMM1;
+			jg error;
+			je error;
+			jnl error;
+		}
+
+		return 0;
+	error:
+		assert(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_comiss_01_B.d	Sun May 07 18:20:25 2006 +0000
@@ -0,0 +1,33 @@
+ // $HeadURL$
+ // $Date$
+ // $Author$
+ 
+module dstress.run.a.asm_comiss_01_B;
+
+version(D_InlineAsm_X86){
+	version = doTest;
+}else version(D_InlineAsm_X86_64){
+	version = doTest;
+}
+
+int main(){
+	version(doTest){
+		const float[4] A = [10.0f, 20.0f, 19.0f, 2.0f];
+		const float B = 3.0f;
+
+		asm{
+			movups XMM0, A;
+			comiss XMM0, B;
+			jg error;
+			je error;
+			jnl error;
+		}
+
+		return 0;
+	error:
+		assert(0);
+	}else{
+		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+		static assert(0);
+	}
+}