changeset 1046:01fb56fb4971

inline ASM review
author thomask
date Fri, 09 Jun 2006 10:33:25 +0000
parents b020c416b514
children 90fb42f640a4
files compile/a/asm_sti_01_A.d run/a/asm_sfence_01.d run/a/asm_sgdt_01.d run/a/asm_shld_01_A.d run/a/asm_shld_01_B.d run/a/asm_shld_01_C.d run/a/asm_shld_01_D.d run/a/asm_shld_02_A.d run/a/asm_shld_02_B.d run/a/asm_shld_02_C.d run/a/asm_shld_02_D.d run/a/asm_shrd_01_A.d run/a/asm_shrd_01_B.d run/a/asm_shrd_01_C.d run/a/asm_shrd_01_D.d run/a/asm_shrd_02_A.d run/a/asm_shrd_02_B.d run/a/asm_shrd_02_C.d run/a/asm_shrd_02_D.d run/a/asm_sidt_01.d run/a/asm_sldt_01.d run/a/asm_sldt_01_A.d run/a/asm_sldt_01_B.d run/a/asm_smsw_01.d run/a/asm_smsw_01_A.d run/a/asm_smsw_01_B.d run/a/asm_smsw_02_A.d run/a/asm_stc_01.d run/a/asm_sub_01_A.d run/a/asm_sub_01_B.d run/a/asm_sub_01_C.d run/a/asm_sub_02_A.d run/a/asm_sub_02_B.d run/a/asm_sub_02_C.d run/a/asm_sub_02_D.d run/a/asm_sub_02_E.d run/a/asm_sub_02_F.d run/a/asm_sub_02_G.d run/a/asm_sub_02_H.d run/a/asm_sub_02_I.d run/a/asm_sub_03_A.d run/a/asm_sub_03_B.d run/a/asm_sub_03_C.d run/a/asm_sub_03_D.d run/a/asm_sub_03_E.d run/a/asm_sub_03_F.d
diffstat 46 files changed, 1269 insertions(+), 145 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compile/a/asm_sti_01_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,23 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.compile.a.asm_sti_01_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	void foo(){
+		asm{
+			sti;
+			nop;
+		}
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_sfence_01.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_sfence_01.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,16 +4,22 @@
 
 module dstress.run.a.asm_sfence_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{
 			sfence;
 		}
 
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_sgdt_01.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_sgdt_01.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_sgdt_01;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
 
 		long u = 0;
 
@@ -13,11 +19,9 @@
 			sgdt u;
 		}
 
-		assert(u!=0);
-
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_shld_01_A.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_shld_01_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,9 +4,14 @@
 
 module dstress.run.a.asm_shld_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(){
 		ushort a = 0b0000_0000__1000_0000;
 		ushort b = 0b1010_0000__0000_0000;
 
@@ -16,12 +21,16 @@
 			mov b, BX;
 		}
 
-		assert(a == 0b0000_0100__0000_0101);
-		assert(b == 0b1010_0000__0000_0000);
+		if(a != 0b0000_0100__0000_0101){
+			assert(0);
+		}
+		if(b != 0b1010_0000__0000_0000){
+			assert(0);
+		}
 
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_shld_01_B.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_shld_01_B.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,9 +4,14 @@
 
 module dstress.run.a.asm_shld_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 = 0b0000_0000__1000_0000__0000_0000__0000_0000;
 		uint b = 0b1010_0000__0000_0000__0000_0000__0000_0000;
 
@@ -16,12 +21,16 @@
 			mov b, EBX;
 		}
 
-		assert(a == 0b0000_0100__0000_0000__0000_0000__0000_0101);
-		assert(b == 0b1010_0000__0000_0000__0000_0000__0000_0000);
+		if(a != 0b0000_0100__0000_0000__0000_0000__0000_0101){
+			assert(0);
+		}
+		if(b != 0b1010_0000__0000_0000__0000_0000__0000_0000){
+			assert(0);
+		}
 
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shld_01_C.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,38 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shld_01_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ushort a = 0b0000_0000__1000_0000;
+		ushort b = 0b1010_0000__0000_0000;
+
+		asm{
+			mov AX, a;
+			mov BX, b;
+			shld AX, BX, 3;
+			mov a, AX;
+			mov b, BX;
+		}
+
+		if(a != 0b0000_0100__0000_0101){
+			assert(0);
+		}
+		if(b != 0b1010_0000__0000_0000){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shld_01_D.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,38 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shld_01_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		uint a = 0b0000_0000__1000_0000__0000_0000__0000_0000;
+		uint b = 0b1010_0000__0000_0000__0000_0000__0000_0000;
+
+		asm{
+			mov EAX, a;
+			mov EBX, b;
+			shld EAX, EBX, 3;
+			mov a, EAX;
+			mov b, EBX;
+		}
+
+		if(a != 0b0000_0100__0000_0000__0000_0000__0000_0101){
+			assert(0);
+		}
+		if(b != 0b1010_0000__0000_0000__0000_0000__0000_0000){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shld_02_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,37 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shld_02_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ushort a = 0b0000_0000__1000_0000;
+		ushort b = 0b1010_0000__0000_0000;
+
+		asm{
+			mov BX, b;
+			mov CL, 3;
+			shld a, BX, CL;
+			mov b, BX;
+		}
+
+		if(a != 0b0000_0100__0000_0101){
+			assert(0);
+		}
+		if(b != 0b1010_0000__0000_0000){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shld_02_B.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,37 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shld_02_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		uint a = 0b0000_0000__1000_0000__0000_0000__0000_0000;
+		uint b = 0b1010_0000__0000_0000__0000_0000__0000_0000;
+
+		asm{
+			mov EBX, b;
+			mov CL, 3;
+			shld a, EBX, CL;
+			mov b, EBX;
+		}
+
+		if(a != 0b0000_0100__0000_0000__0000_0000__0000_0101){
+			assert(0);
+		}
+		if(b != 0b1010_0000__0000_0000__0000_0000__0000_0000){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shld_02_C.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,39 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shld_02_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ushort a = 0b0000_0000__1000_0000;
+		ushort b = 0b1010_0000__0000_0000;
+
+		asm{
+			mov AX, a;
+			mov BX, b;
+			mov CL, 3;
+			shld AX, BX, CL;
+			mov a, AX;
+			mov b, BX;
+		}
+
+		if(a != 0b0000_0100__0000_0101){
+			assert(0);
+		}
+		if(b != 0b1010_0000__0000_0000){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shld_02_D.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,39 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shld_02_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		uint a = 0b0000_0000__1000_0000__0000_0000__0000_0000;
+		uint b = 0b1010_0000__0000_0000__0000_0000__0000_0000;
+
+		asm{
+			mov EAX, a;
+			mov EBX, b;
+			mov CL, 3;
+			shld EAX, EBX, CL;
+			mov a, EAX;
+			mov b, EBX;
+		}
+
+		if(a != 0b0000_0100__0000_0000__0000_0000__0000_0101){
+			assert(0);
+		}
+		if(b != 0b1010_0000__0000_0000__0000_0000__0000_0000){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_shrd_01_A.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_shrd_01_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,9 +4,14 @@
 
 module dstress.run.a.asm_shrd_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(){
 		ushort a = 0b0000_0000__1000_0000;
 		ushort b = 0b1000_0000__0000_0101;
 
@@ -16,12 +21,16 @@
 			mov b, BX;
 		}
 
-		assert(a == 0b1010_0000__0001_0000);
-		assert(b == 0b1000_0000__0000_0101);
+		if(a != 0b1010_0000__0001_0000){
+			assert(0);
+		}
+		if(b != 0b1000_0000__0000_0101){
+			assert(0);
+		}
 
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_shrd_01_B.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_shrd_01_B.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,8 +4,14 @@
 
 module dstress.run.a.asm_shrd_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 = 0b0000_0000__1000_0000__0000_0000__0000_0000;
 		uint b = 0b1000_0000__0000_0000__0000_0000__0000_0101;
@@ -16,12 +22,16 @@
 			mov b, EBX;
 		}
 
-		assert(a == 0b1010_0000__0001_0000__0000_0000__0000_0000);
-		assert(b == 0b1000_0000__0000_0000__0000_0000__0000_0101);
+		if(a != 0b1010_0000__0001_0000__0000_0000__0000_0000){
+			assert(0);
+		}
+		if(b != 0b1000_0000__0000_0000__0000_0000__0000_0101){
+			assert(0);
+		}
 
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shrd_01_C.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,38 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shrd_01_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ushort a = 0b0000_0000__1000_0000;
+		ushort b = 0b1000_0000__0000_0101;
+
+		asm{
+			mov BX, b;
+			mov AX, a;
+			shrd AX, BX, 3;
+			mov a, AX;
+			mov b, BX;
+		}
+
+		if(a != 0b1010_0000__0001_0000){
+			assert(0);
+		}
+		if(b != 0b1000_0000__0000_0101){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shrd_01_D.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,39 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shrd_01_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+
+		uint a = 0b0000_0000__1000_0000__0000_0000__0000_0000;
+		uint b = 0b1000_0000__0000_0000__0000_0000__0000_0101;
+
+		asm{
+			mov EAX, a;
+			mov EBX, b;
+			shrd EAX, EBX, 3;
+			mov a, EAX;
+			mov b, EBX;
+		}
+
+		if(a != 0b1010_0000__0001_0000__0000_0000__0000_0000){
+			assert(0);
+		}
+		if(b != 0b1000_0000__0000_0000__0000_0000__0000_0101){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shrd_02_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,37 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shrd_02_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ushort a = 0b0000_0000__1000_0000;
+		ushort b = 0b1000_0000__0000_0101;
+
+		asm{
+			mov BX, b;
+			mov CL, 3;
+			shrd a, BX, CL;
+			mov b, BX;
+		}
+
+		if(a != 0b1010_0000__0001_0000){
+			assert(0);
+		}
+		if(b != 0b1000_0000__0000_0101){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shrd_02_B.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,38 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shrd_02_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+
+		uint a = 0b0000_0000__1000_0000__0000_0000__0000_0000;
+		uint b = 0b1000_0000__0000_0000__0000_0000__0000_0101;
+
+		asm{
+			mov EBX, b;
+			mov CL, 3;
+			shrd a, EBX, CL;
+			mov b, EBX;
+		}
+
+		if(a != 0b1010_0000__0001_0000__0000_0000__0000_0000){
+			assert(0);
+		}
+		if(b != 0b1000_0000__0000_0000__0000_0000__0000_0101){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shrd_02_C.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,39 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shrd_02_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ushort a = 0b0000_0000__1000_0000;
+		ushort b = 0b1000_0000__0000_0101;
+
+		asm{
+			mov BX, b;
+			mov AX, a;
+			mov CL, 3;
+			shrd AX, BX, CL;
+			mov a, AX;
+			mov b, BX;
+		}
+
+		if(a != 0b1010_0000__0001_0000){
+			assert(0);
+		}
+		if(b != 0b1000_0000__0000_0101){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_shrd_02_D.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_shrd_02_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+
+		uint a = 0b0000_0000__1000_0000__0000_0000__0000_0000;
+		uint b = 0b1000_0000__0000_0000__0000_0000__0000_0101;
+
+		asm{
+			mov EAX, a;
+			mov EBX, b;
+			mov CL, 3;
+			shrd EAX, EBX, CL;
+			mov a, EAX;
+			mov b, EBX;
+		}
+
+		if(a != 0b1010_0000__0001_0000__0000_0000__0000_0000){
+			assert(0);
+		}
+		if(b != 0b1000_0000__0000_0000__0000_0000__0000_0101){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_sidt_01.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_sidt_01.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,20 +4,23 @@
 
 module dstress.run.a.asm_sidt_01;
 
-int main(){
-	version(D_InlineAsm){
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
 
+version(runTest){
+	int main(){
 		ulong u = 0;
 
 		asm{
 			sidt u;
 		}
 
-		assert(u != 0);
-
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_sldt_01.d	Thu Jun 08 19:40:04 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.a.asm_sldt_01;
-
-int main(){
-	version(D_InlineAsm){
-
-		ushort u = 1;
-
-		asm{
-			sldt u;
-		}
-
-		assert(u == 0); // is this realy safe ?
-
-		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_sldt_01_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,27 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sldt_01_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+
+		ushort u = 1;
+
+		asm{
+			sldt u;
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sldt_01_B.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,24 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sldt_01_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		asm{
+			sldt AX;
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_smsw_01.d	Thu Jun 08 19:40:04 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.a.asm_smsw_01_A;
-
-int main(){
-	version(D_InlineAsm){
-
-		ushort a = 0;
-
-		asm{
-			smsw a;
-		}
-
-		assert(a != 0);
-
-		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
-	}
-}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_smsw_01_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_smsw_01_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+
+		ushort a = 0;
+
+		asm{
+			smsw a;
+		}
+
+		if(a == 0){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_smsw_01_B.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_smsw_01_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+
+		ushort a = 0;
+
+		asm{
+			smsw AX;
+			mov a, AX;
+		}
+
+		if(a == 0){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_smsw_02_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_smsw_02_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+
+		uint a = 0;
+
+		asm{
+			smsw EAX;
+			mov a, EAX;
+		}
+
+		if(a == 0){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_stc_01.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_stc_01.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,24 +4,24 @@
 
 module dstress.run.a.asm_stc_01;
 
-int main(){
-	version(D_InlineAsm){
-
-		ubyte a, b = 3;
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
 
+version(runTest){
+	int main(){
 		asm{
-			clc;
-			setc a;
 			stc;
-			setc b;
+			jnc error;
 		}
 
-		assert(a == 0);
-		assert(b == 1);
-
 		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{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_sub_01_A.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_sub_01_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,11 +4,15 @@
 
 module dstress.run.a.asm_sub_01_A;
 
-int main(){
-	version(D_InlineAsm){
-		uint i = 0x12_34_5F_00u;
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
 
-		assert(i==0x12_34_5F_00u);
+version(runTest){
+	int main(){
+		int i = 0x12_34_5F_00;
 
 		asm{
 			mov EAX, i;
@@ -16,11 +20,13 @@
 			mov i, EAX;
 		}
 
-		assert(i==0x12_34_5F_FFu);
+		if(i != 0x12_34_5F_FF){
+			assert(0);
+		}
 
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_sub_01_B.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_sub_01_B.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,11 +4,15 @@
 
 module dstress.run.a.asm_sub_01_B;
 
-int main(){
-	version(D_InlineAsm){
-		uint i = 0x12_3F_00_00u;
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
 
-		assert(i==0x12_3F_00_00u);
+version(runTest){
+	int main(){
+		int i = 0x12_3F_00_00;
 
 		asm{
 			mov EAX, i;
@@ -16,11 +20,13 @@
 			mov i, EAX;
 		}
 
-		assert(i==0x12_3F_FF_FFu);
+		if(i != 0x12_3F_FF_FF){
+			assert(0);
+		}
 
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_sub_01_C.d	Thu Jun 08 19:40:04 2006 +0000
+++ b/run/a/asm_sub_01_C.d	Fri Jun 09 10:33:25 2006 +0000
@@ -4,26 +4,29 @@
 
 module dstress.run.a.asm_sub_01_C;
 
-int main(){
-	version(D_InlineAsm){
-		uint i = 0x12_23_45_56u;
-		uint s = 0x0u;
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
 
-		assert(i==0x12_23_45_56u);
-		assert(s==0x0u);
+version(runTest){
+	int main(){
+		int i = 0;
 
 		asm{
-			mov EAX, s;
+			mov EAX, i;
 			sub EAX, 1;
 			mov i, EAX;
 		}
 
-		assert(i==0xFF_FF_FF_FFu);
-		assert(s==0x0u);
+		if(i != 0xFF_FF_FF_FF){
+			assert(0);
+		}
 
 		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
 	}
-}
\ No newline at end of file
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_02_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_02_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0x12_34_5F_00;
+
+		asm{
+			mov ECX, i;
+			sub CL, 1;
+			mov i, ECX;
+		}
+
+		if(i != 0x12_34_5F_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_02_B.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_02_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0x12_3F_00_00;
+
+		asm{
+			mov ECX, i;
+			sub CX, 1;
+			mov i, ECX;
+		}
+
+		if(i != 0x12_3F_FF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_02_C.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_02_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0;
+
+		asm{
+			mov ECX, i;
+			sub ECX, 1;
+			mov i, ECX;
+		}
+
+		if(i != 0xFF_FF_FF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_02_D.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_02_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0x12_34_5F_00;
+
+		asm{
+			mov ECX, i;
+			mov AL, 1;
+			sub CL, AL;
+			mov i, ECX;
+		}
+
+		if(i != 0x12_34_5F_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_02_E.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_02_E;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0x12_3F_00_00;
+
+		asm{
+			mov ECX, i;
+			mov AX, 1;
+			sub CX, AX;
+			mov i, ECX;
+		}
+
+		if(i != 0x12_3F_FF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_02_F.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_02_F;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0;
+
+		asm{
+			mov ECX, i;
+			mov EAX, 1;
+			sub ECX, EAX;
+			mov i, ECX;
+		}
+
+		if(i != 0xFF_FF_FF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_02_G.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_02_G;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0x12_34_5F_00;
+		byte b = 1;
+
+		asm{
+			mov ECX, i;
+			sub CL, b;
+			mov i, ECX;
+		}
+
+		if(i != 0x12_34_5F_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_02_H.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_02_H;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0x12_3F_00_00;
+		short s = 1;
+
+		asm{
+			mov ECX, i;
+			sub CX, s;
+			mov i, ECX;
+		}
+
+		if(i != 0x12_3F_FF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_02_I.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_02_I;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0;
+		int j = 1;
+
+		asm{
+			mov ECX, i;
+			sub ECX, j;
+			mov i, ECX;
+		}
+
+		if(i != 0xFF_FF_FF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_03_A.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,30 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_03_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ubyte i = 0x00;
+
+		asm{
+			sub i, 1;
+		}
+
+		if(i != 0xFF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_03_B.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,30 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_03_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ushort i = 0x00_00;
+
+		asm{
+			sub i, 1;
+		}
+
+		if(i != 0xFF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_03_C.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,30 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_03_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		uint i = 0;
+
+		asm{
+			sub i, 1;
+		}
+
+		if(i != 0xFF_FF_FF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_03_D.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_03_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ubyte i = 0;
+
+		asm{
+			mov AL, 1;
+			sub i, AL;
+		}
+
+		if(i != 0xFF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_03_E.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_03_E;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		ushort i = 0;
+
+		asm{
+			mov AX, 1;
+			sub i, AX;
+		}
+
+		if(i != 0xFF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_sub_03_F.d	Fri Jun 09 10:33:25 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_sub_03_F;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int i = 0;
+
+		asm{
+			mov EAX, 1;
+			sub i, EAX;
+		}
+
+		if(i != 0xFF_FF_FF_FF){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}