changeset 973:8c327aff56f3

extended asm tests
author thomask
date Thu, 27 Apr 2006 11:29:22 +0000
parents 1429b206580f
children 000adc086356
files run/a/asm_adc_01_D.d run/a/asm_adc_01_E.d run/a/asm_adc_01_F.d run/a/asm_adc_01_H.d run/a/asm_adc_01_I.d run/a/asm_adc_01_J.d run/a/asm_add_01_A.d run/a/asm_add_01_B.d run/a/asm_movzx_01_A.d run/a/asm_movzx_01_B.d run/a/asm_not_02_A.d run/a/asm_not_02_B.d run/a/asm_or_02_A.d run/a/asm_or_02_B.d run/a/asm_pause_01_A.d run/a/asm_pextrw_01_A.d run/a/asm_pextrw_01_B.d run/a/asm_pinsrw_01_A.d run/a/asm_pinsrw_01_B.d run/a/asm_pinsrw_01_C.d run/a/asm_pinsrw_01_D.d run/a/asm_pmovmskb_01_A.d run/a/asm_pmovmskb_01_B.d run/a/asm_por_02_A.d run/a/asm_por_02_B.d run/a/asm_prefetchnta_01.d run/a/asm_prefetcht0_01.d run/a/asm_prefetcht1_01.d run/a/asm_prefetcht2_01.d run/a/asm_pslldq_01_A.d run/a/asm_psrldq_01_A.d run/a/asm_pxor_02_A.d run/a/asm_pxor_02_B.d
diffstat 33 files changed, 991 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_adc_01_D.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// __DSTRESS_REQUIRE__ D_InlineAsm_X86
+
+module dstress.run.a.asm_adc_01_D;
+
+int main(){
+	version(D_InlineAsm_X86){
+		byte a;
+				
+		asm{
+			clc;
+			mov AL, 3;
+			adc AL, 5;
+			mov a, AL;
+		}
+
+		if(a != 8){
+			assert(0);
+		}
+
+		asm{
+			stc;
+			mov AL, 3;
+			adc AL, 5;
+			mov a, AL;
+		}
+		
+		if(a != 9){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_adc_01_E.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// __DSTRESS_REQUIRE__ D_InlineAsm_X86
+
+module dstress.run.a.asm_adc_01_E;
+
+int main(){
+	version(D_InlineAsm_X86){
+		short a;
+				
+		asm{
+			clc;
+			mov AX, 3;
+			adc AX, 5;
+			mov a, AX;
+		}
+
+		if(a != 8){
+			assert(0);
+		}
+
+		asm{
+			stc;
+			mov AX, 3;
+			adc AX, 5;
+			mov a, AX;
+		}
+		
+		if(a != 9){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_adc_01_F.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// __DSTRESS_REQUIRE__ D_InlineAsm_X86
+
+module dstress.run.a.asm_adc_01_F;
+
+int main(){
+	version(D_InlineAsm_X86){
+		int a;
+				
+		asm{
+			clc;
+			mov EAX, 3;
+			adc EAX, 5;
+			mov a, EAX;
+		}
+
+		if(a != 8){
+			assert(0);
+		}
+
+		asm{
+			stc;
+			mov EAX, 3;
+			adc EAX, 5;
+			mov a, EAX;
+		}
+		
+		if(a != 9){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_adc_01_H.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// __DSTRESS_REQUIRE__ D_InlineAsm_X86
+
+module dstress.run.a.asm_adc_01_H;
+
+int main(){
+	version(D_InlineAsm_X86){
+		byte a;
+				
+		asm{
+			clc;
+			mov BL, 3;
+			adc BL, 5;
+			mov a, BL;
+		}
+
+		if(a != 8){
+			assert(0);
+		}
+
+		asm{
+			stc;
+			mov BL, 3;
+			adc BL, 5;
+			mov a, BL;
+		}
+		
+		if(a != 9){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_adc_01_I.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// __DSTRESS_REQUIRE__ D_InlineAsm_X86
+
+module dstress.run.a.asm_adc_01_I;
+
+int main(){
+	version(D_InlineAsm_X86){
+		short a;
+				
+		asm{
+			clc;
+			mov BX, 3;
+			adc BX, 5;
+			mov a, BX;
+		}
+
+		if(a != 8){
+			assert(0);
+		}
+
+		asm{
+			stc;
+			mov BX, 3;
+			adc BX, 5;
+			mov a, BX;
+		}
+		
+		if(a != 9){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_adc_01_J.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// __DSTRESS_REQUIRE__ D_InlineAsm_X86
+
+module dstress.run.a.asm_adc_01_J;
+
+int main(){
+	version(D_InlineAsm_X86){
+		int a;
+				
+		asm{
+			clc;
+			mov EBX, 3;
+			adc EBX, 5;
+			mov a, EBX;
+		}
+
+		if(a != 8){
+			assert(0);
+		}
+
+		asm{
+			stc;
+			mov EBX, 3;
+			adc EBX, 5;
+			mov a, EBX;
+		}
+		
+		if(a != 9){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- a/run/a/asm_add_01_A.d	Fri Apr 21 20:23:34 2006 +0000
+++ b/run/a/asm_add_01_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -13,13 +13,13 @@
 		assert(b==0xFFu);
 		
 		asm{
-			mov EAX, 0;
+			mov EAX, 0x98_76_54_32;
 			mov AH, b;
 			add AH, 1;
 			mov i, EAX;
 		}
 	
-		assert(i==0);
+		assert(i==0x98_76_00_32);
 		assert(b==0xFFu);
 		
 		return 0;
@@ -27,4 +27,4 @@
 		pragma(msg, "no Inline asm support");
 		static assert(0);
 	}
-}
\ No newline at end of file
+}
--- a/run/a/asm_add_01_B.d	Fri Apr 21 20:23:34 2006 +0000
+++ b/run/a/asm_add_01_B.d	Thu Apr 27 11:29:22 2006 +0000
@@ -13,13 +13,13 @@
 		assert(s==0xFFFFu);
 		
 		asm{
-			mov EAX, 0;
+			mov EAX, 0x98_76_54_32;
 			mov AX, s;
 			add AX, 1;
 			mov i, EAX;
 		}
 	
-		assert(i==0u);
+		assert(i==0x98_76_00_00u);
 		assert(s==0xFFFFu);
 		
 		return 0;
@@ -27,4 +27,4 @@
 		pragma(msg, "no Inline asm support");
 		static assert(0);
 	}
-}
\ No newline at end of file
+}
--- a/run/a/asm_movzx_01_A.d	Fri Apr 21 20:23:34 2006 +0000
+++ b/run/a/asm_movzx_01_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -5,7 +5,7 @@
 module dstress.run.a.asm_movzx_01_A;
 
 int main(){
-	version(D_InlineAsm){
+	version(D_InlineAsm_X86){
 		uint i = 0xFF_FF_FF_FFu;
 		ubyte b = 0xFF;
 		
@@ -19,8 +19,12 @@
 			mov i, EAX;
 		}
 	
-		assert(i==0xFF_FF_00_FFu);
-		assert(b==0xFF);
+		if(i != 0xFF_FF_00_FFu){
+			assert(0);
+		}
+		if(b != 0xFF){
+			assert(0);
+		}
 		
 		i=0xFF_FF_FF_FFu;
 		b=0x12;
@@ -32,12 +36,16 @@
 			mov i, EAX;
 		}
 		
-		assert(i==0xFF_FF_00_12u);
-		assert(b==0x12);
+		if(i != 0xFF_FF_00_12u){
+			assert(0);
+		}
+		if(b != 0x12){
+			assert(0);
+		}
 		
 		return 0;
 	}else{
 		pragma(msg, "no Inline asm support");
 		static assert(0);
 	}
-}
\ No newline at end of file
+}
--- a/run/a/asm_movzx_01_B.d	Fri Apr 21 20:23:34 2006 +0000
+++ b/run/a/asm_movzx_01_B.d	Thu Apr 27 11:29:22 2006 +0000
@@ -5,7 +5,7 @@
 module dstress.run.a.asm_movzx_01_B;
 
 int main(){
-	version(D_InlineAsm){
+	version(D_InlineAsm_X86){
 		uint i = 0xFF_FF_FF_FFu;
 		ubyte b = 0xFF;
 		
@@ -19,11 +19,15 @@
 			mov i, EAX;
 		}
 	
-		assert(i==0x00_00_00_FFu);
-		assert(b==0xFF);
+		if(i != 0x00_00_00_FFu){
+			assert(0);
+		}
+		if(b != 0xFF){
+			assert(0);
+		}
 		
 		i = 0xFF_FF_FF_FFu;
-		b=0x12;
+		b = 0x12;
 		
 		asm{
 			mov EAX, i;
@@ -32,12 +36,16 @@
 			mov i, EAX;
 		}
 		
-		assert(i==0x00_00_00_12u);
-		assert(b==0x12);
+		if(i != 0x00_00_00_12u){
+			assert(0);
+		}
+		if(b != 0x12){
+			assert(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_not_02_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,27 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_not_02_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		uint i;
+		
+		asm{
+			mov EAX, 0x12_FE_34_DC;
+			mov AL, 0b0110_1110;
+			not AL;
+			mov i, EAX;
+		}
+		
+		if(i != (0x12_FE_34_00 | 0b1001_0001)){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_not_02_B.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,27 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_not_02_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		uint i;
+		
+		asm{
+			mov EAX, 0x12_FE_34_DC;
+			mov AX, 0b1100_1001_0110_1110;
+			not AX;
+			mov i, EAX;
+		}
+		
+		if(i != (0x12_FE_00_00 | 0b0011_0110_1001_0001)){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_or_02_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,27 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_or_02_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		uint a;
+		
+		asm{
+			mov EAX, 0x45_FD_BC_67;
+			mov AL, 0b0100_0001;
+			or AL, 0b0001_1000;
+			mov a, EAX;
+		}
+		
+		if(a != (0x45_FD_BC_00 | 0b0101_1001)){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_or_02_B.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,27 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_or_02_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		uint a;
+		
+		asm{
+			mov EAX, 0x45_FD_BC_67;
+			mov AX, 0b0000_1111_0100_0001;
+			or AX,  0b1010_0001_0001_1000;
+			mov a, EAX;
+		}
+		
+		if(a != (0x45_FD_00_00 | 0b1010_1111_0101_1001)){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pause_01_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,20 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pause_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+
+		asm{
+			rep;
+			nop;
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pextrw_01_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pextrw_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static ushort[8] x = [1, 2, 3, 4, 5, 0xFFFF, 7, 0];
+		uint a;
+		uint b;
+		
+		asm{
+			movdqu XMM0, x;
+			pextrw EAX, XMM0, 5;
+			mov a, EAX;
+			pextrw EDX, XMM0, 1;
+			mov b, EDX;
+		}
+
+		if(a != 0xFFFF){
+			assert(0);
+		}
+		if(b != 2){
+			assert(0);
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pextrw_01_B.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pextrw_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		ulong x = 0x0500_FFFF_0707_1234;
+		uint a;
+		uint b;
+		
+		asm{
+			movq MM0, x;
+			pextrw EAX, MM0, 2;
+			mov a, EAX;
+			pextrw EDX, MM0, 1;
+			mov b, EDX;
+		}
+
+		if(a != 0xFFFF){
+			assert(0);
+		}
+		if(b != 0x0707){
+			assert(0);
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pinsrw_01_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,29 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pinsrw_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		ulong x = 0x0500_FFFF_0707_1234;
+		ulong y;
+		uint a = 0x1234_5678;
+		
+		asm{
+			movq MM0, x;
+			mov EAX, a;
+			pinsrw MM0, EAX, 0;
+			movq y, MM0;
+		}
+
+		if(y != 0x0500_FFFF_0707_5678){
+			assert(0);
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pinsrw_01_B.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,28 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pinsrw_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		ulong x = 0x0500_FFFF_0707_1234;
+		ulong y;
+		short a = 0x5678;
+		
+		asm{
+			movq MM0, x;
+			pinsrw MM0, a, 0;
+			movq y, MM0;
+		}
+
+		if(y != 0x0500_FFFF_0707_5678){
+			assert(0);
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pinsrw_01_C.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,57 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pinsrw_01_C;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static ushort[8] a = [1, 2, 3, 4, 5, 0xFFFF, 7, 0];
+		ushort[8] b;
+		
+		asm{
+			movdqu XMM0, a;
+			mov EAX, 0x12AB_34CD;
+			mov EBX, 0xFDCE_0010;
+			pinsrw XMM0, EAX, 0;
+			pinsrw XMM0, EBX, 7;
+			movdqu b, XMM0;
+		}
+
+		if(b[0] != 0x34CD){
+			assert(0);
+		}
+
+		if(b[1] != 2){
+			assert(0);
+		}
+
+		if(b[2] != 3){
+			assert(0);
+		}
+
+		if(b[3] != 4){
+			assert(0);
+		}
+
+		if(b[4] != 5){
+			assert(0);
+		}
+
+		if(b[5] != 0xFFFF){
+			assert(0);
+		}
+
+		if(b[6] != 7){
+			assert(0);
+		}
+
+		if(b[7] != 0x0010){
+			assert(0);
+		}
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pinsrw_01_D.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,58 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pinsrw_01_D;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static ushort[8] a = [1, 2, 3, 4, 5, 0xFFFF, 7, 0];
+		ushort[8] b;
+
+		ushort x = 0x34CD;
+		ushort y = 0x0010;
+		
+		asm{
+			movdqu XMM0, a;
+			pinsrw XMM0, x, 0;
+			pinsrw XMM0, y, 7;
+			movdqu b, XMM0;
+		}
+
+		if(b[0] != 0x34CD){
+			assert(0);
+		}
+
+		if(b[1] != 2){
+			assert(0);
+		}
+
+		if(b[2] != 3){
+			assert(0);
+		}
+
+		if(b[3] != 4){
+			assert(0);
+		}
+
+		if(b[4] != 5){
+			assert(0);
+		}
+
+		if(b[5] != 0xFFFF){
+			assert(0);
+		}
+
+		if(b[6] != 7){
+			assert(0);
+		}
+
+		if(b[7] != 0x0010){
+			assert(0);
+		}
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pmovmskb_01_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,28 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pmovmskb_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static ushort[8] a = [0x8000, 0x0800, 0x0080, 0x0008, 0x0888, 0x7FFF, 0xFFFF, 0];
+		uint i;
+		
+		asm{
+			movdqu XMM0, a;
+			mov EAX, 0xFF12_34BC;
+			pmovmskb EAX, XMM0;
+			mov i, EAX;
+		}
+
+		if(i != 0b0011_0101_0001_0010){
+			assert(0);
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pmovmskb_01_B.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,28 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pmovmskb_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		ulong a = 0x0888_7FFF_FFFF_0000;
+		uint i;
+		
+		asm{
+			movq MM0, a;
+			mov EAX, 0xFF12_34BC;
+			pmovmskb EAX, MM0;
+			mov i, EAX;
+		}
+
+		if(i != 0b0101_1100){
+			assert(0);
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_por_02_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_por_02_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static ushort[8] A = [0x1200, 0x0120, 0x0012, 0x2001, 0x0008, 0xFFFF, 0x0000, 0x1111];
+		static ushort[8] B = [0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0F00, 0x0102, 0x2222];
+		static ushort[8] C = [0x3300, 0x2120, 0x2112, 0x2101, 0x2108, 0xFFFF, 0x0102, 0x3333];
+
+		ushort[8] a = A;
+		ushort[8] b = B;
+		
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			por XMM1, XMM0;
+			movdqu a, XMM0;
+			movdqu b, XMM1;
+		}
+
+
+		foreach(size_t i, ushort s; A){
+			if(s != a[i]){
+				assert(0);
+			}
+		}
+		foreach(size_t i, ushort s; C){
+			if(s != b[i]){
+				assert(0);
+			}
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_por_02_B.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_por_02_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static ushort[8] A = [0x1200, 0x0120, 0x0012, 0x2001, 0x0008, 0xFFFF, 0x0000, 0x1111];
+		static ushort[8] B = [0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0F00, 0x0102, 0x2222];
+		static ushort[8] C = [0x3300, 0x2120, 0x2112, 0x2101, 0x2108, 0xFFFF, 0x0102, 0x3333];
+
+		ushort[8] a;
+		
+		asm{
+			movdqu XMM0, A;
+			por XMM0, B;
+			movdqu a, XMM0;
+		}
+
+
+		foreach(size_t i, ushort s; C){
+			if(s != a[i]){
+				assert(0);
+			}
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_prefetchnta_01.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,20 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_prefetchnta_01;
+
+int main(){
+	version(D_InlineAsm_X86){
+		byte b;
+		
+		asm{
+			prefetchnta b;
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_prefetcht0_01.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,20 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_prefetcht0_01;
+
+int main(){
+	version(D_InlineAsm_X86){
+		byte b;
+		
+		asm{
+			prefetcht0 b;
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_prefetcht1_01.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,20 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_prefetch1_01;
+
+int main(){
+	version(D_InlineAsm_X86){
+		byte b;
+		
+		asm{
+			prefetcht1 b;
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_prefetcht2_01.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,20 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_prefetch2_01;
+
+int main(){
+	version(D_InlineAsm_X86){
+		byte b;
+		
+		asm{
+			prefetcht2 b;
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pslldq_01_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pslldq_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const ubyte[16] a = [0, 1, 2, 3, 4, 5, 6, 7, 8 ,9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF];
+		ubyte[16] b;
+		
+		asm{
+			movdqu XMM0, a;
+			pslldq XMM0, 2;
+			movdqu b, XMM0;
+		}
+
+		for(size_t i = 0; i < c.length-2; i++){
+			if(b[i] != i+2){
+				assert(0);
+			}
+		}
+
+		if(b[b.length - 2] || b[b.length - 1]){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_psrldq_01_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_psrldq_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const ubyte[16] a = [0, 1, 2, 3, 4, 5, 6, 7, 8 ,9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF];
+		ubyte[16] b;
+		
+		asm{
+			movdqu XMM0, a;
+			psrldq XMM0, 2;
+			movdqu b, XMM0;
+		}
+
+		for(size_t i = 2; i < c.length; i++){
+			if(b[i] != i-2){
+				assert(0);
+			}
+		}
+
+		if(b[0] || b[1]){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pxor_02_A.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pxor_02_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static ushort[8] A = [0x1200, 0x0120, 0x0012, 0x2001, 0x0008, 0xFFFF, 0x0000, 0x1111];
+		static ushort[8] B = [0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0F00, 0x0102, 0x2222];
+		static ushort[8] C = [0x3300, 0x2020, 0x2112, 0x0101, 0x2108, 0xF0FF, 0x0102, 0x3333];
+
+		ushort[8] a = A;
+		ushort[8] b = B;
+		
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			pxor XMM1, XMM0;
+			movdqu a, XMM0;
+			movdqu b, XMM1;
+		}
+
+
+		foreach(size_t i, ushort s; A){
+			if(s != a[i]){
+				assert(0);
+			}
+		}
+		foreach(size_t i, ushort s; C){
+			if(s != b[i]){
+				assert(0);
+			}
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pxor_02_B.d	Thu Apr 27 11:29:22 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pxor_02_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static ushort[8] A = [0x1200, 0x0120, 0x0012, 0x2001, 0x0008, 0xFFFF, 0x0000, 0x1111];
+		static ushort[8] B = [0x2100, 0x2100, 0x2100, 0x2100, 0x2100, 0x0F00, 0x0102, 0x2222];
+		static ushort[8] C = [0x3300, 0x2020, 0x2112, 0x0101, 0x2108, 0xF0FF, 0x0102, 0x3333];
+
+		ushort[8] a;
+		
+		asm{
+			movdqu XMM0, A;
+			por XMM0, B;
+			movdqu a, XMM0;
+		}
+
+
+		foreach(size_t i, ushort s; C){
+			if(s != a[i]){
+				assert(0);
+			}
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}