changeset 1070:3c1400d94f60

pre 0.162 review
author thomask
date Tue, 04 Jul 2006 17:04:51 +0000
parents eb15e24d4606
children f9084d3862e8
files 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_cmpeqsd_01.d run/a/asm_cmpisd_01_A.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_comisd_01_A.d run/a/asm_comiss_01_A.d run/a/asm_fld_02_A.d run/a/asm_fnsave_01.d run/a/asm_frstor_01.d run/a/asm_fsave_01.d run/a/asm_lddqu_01.d run/a/asm_movmskpd_01_A.d run/a/asm_movmskps_01_A.d
diffstat 19 files changed, 161 insertions(+), 136 deletions(-) [+]
line wrap: on
line diff
--- a/run/a/asm_cmc_01.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_cmc_01.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		byte a = 0;
 
 		asm{
@@ -27,8 +27,8 @@
 		return 0;
 	error:
 		assert(0);
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmova_01_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_cmova_01_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		uint a;
 		asm{
 			mov ECX, 0xAB_CD_EF_01;
@@ -43,8 +43,8 @@
 		return 0;
 	error:
 		assert(0);
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmova_01_B.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_cmova_01_B.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		uint a;
 		ushort d = 0x12_34;
 		asm{
@@ -42,8 +42,8 @@
 		return 0;
 	error:
 		assert(0);
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmova_02_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_cmova_02_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		uint a;
 		asm{
 			mov ECX, 0xAB_CD_EF_01;
@@ -42,8 +42,8 @@
 		return 0;
 	error:
 		assert(0);
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmova_02_B.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_cmova_02_B.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,8 +10,8 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	int main(){
 		uint a;
 		uint d = 0x12_34_56_FE;
 		asm{
@@ -42,8 +42,8 @@
 		return 0;
 	error:
 		assert(0);
-	}else{
-		pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-		static assert(0);
 	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
 }
--- a/run/a/asm_cmpeqsd_01.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_cmpeqsd_01.d	Tue Jul 04 17:04:51 2006 +0000
@@ -23,4 +23,4 @@
 		pragma(msg, "no Inline asm support");
 		static assert(0);
 	}
-}
\ No newline at end of file
+}
--- a/run/a/asm_cmpisd_01_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.a.asm_cmpisd_01_A;
-
-int main(){
-	version(D_InlineAsm_X86){
-		static double[2] A = [1.0, 2.0];
-		static double[2] B = [0.0, 1.0];
-		uint i;
-
-		asm{
-			movdqu XMM0, A;
-			movdqu XMM1, B;
-			comisd XMM0, XMM1;
-			mov EAX, 0;
-			jc done_1;
-			jz done_1;
-			jp done_1;
-			inc EAX;
-		done_1:
-			mov i, EAX;
-		}
-
-		if(i != 1){
-			assert(0);
-		}
-
-		asm{
-			movdqu XMM0, B;
-			movdqu XMM1, A;
-			comisd XMM0, XMM1;
-			mov EAX, 0;
-			jnc done_2;
-			jz done_2;
-			jp done_2;
-			inc EAX;
-		done_2:
-			mov i, EAX;
-		}
-
-		if(i != 1){
-			assert(0);
-		}
-		return 0;
-	}else{
-		pragma(msg, "no Inline asm support");
-		static assert(0);
-	}
-}
--- a/run/a/asm_cmppd_01_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_cmppd_01_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,15 +10,25 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
-		static double[2] A = [1.0, 2.0f];
-		static double[2] B = [1.1, 2.0f];
-		ulong[2] c;
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		haveSSE2!()();
+		
+		double[] a = new double[2];
+		a[0] = 1.0;
+		a[1] = 2.0;
+		
+		double[] b = new double[2];
+		b[0] = 1.1;
+		b[1] = 2.0;
+		
+		ulong[] c = new ulong[2];
 
 		asm{
-			movupd XMM0, A;
-			movupd XMM1, B;
+			movupd XMM0, a;
+			movupd XMM1, b;
 			cmppd XMM0, XMM1, 0;
 			movupd c, XMM0;
 		}
@@ -30,8 +40,8 @@
 			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_cmpps_01_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_cmpps_01_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,15 +10,29 @@
 	version = runTest;
 }
 
-int main(){
-	version(D_InlineAsm_X86){
-		static float[4] A = [1.0f, 2.0f, 3.0f, 4.0f];
-		static float[4] B = [1.1f, 1.9f, 3.0f, 4.1f];
-		uint[4] c;
+version(D_InlineAsm_X86){
+	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 = new float[4];
+		b[0] = 1.1f;
+		b[1] = 1.9f;
+		b[2] = 3.0f;
+		b[3] = 4.1f;
+
+		uint[] c = new uint[4];
 
 		asm{
-			movups XMM0, A;
-			movups XMM1, B;
+			movups XMM0, a;
+			movups XMM1, b;
 			cmpps XMM0, XMM1, 0;
 			movups c, XMM0;
 		}
@@ -36,8 +50,8 @@
 			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_cmpsd_01_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_cmpsd_01_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,8 +10,12 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		haveSSE2!()();
+
 		static double[2] A = [1.0, 2.0];
 		static double[2] B = [1.0, 2.0];
 		ulong[2] c;
--- a/run/a/asm_comisd_01_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_comisd_01_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,26 +10,35 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
-		const double[2] A = [1.0, 3.0];
-		const double[2] B = [4.0, 3.0];
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		haveSSE2!()();
+		
+		double[] a = new double[2];
+		a[0] = 1.0;
+		a[1] = 3.0;
+		
+		double[] b = new double[2];
+		b[0] = 4.0;
+		b[1] = 3.0;
 
 		asm{
-			movupd XMM0, A;
-			movupd XMM1, B;
+			movupd XMM0, a;
+			movupd XMM1, b;
 			comisd XMM0, XMM1;
 			jz error;
 			jp error;
-			jnc error;
+			jc error;
 		}
 
 
 		return 0;
 	error:
 		assert(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_comiss_01_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_comiss_01_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -10,14 +10,27 @@
 	version = runTest;
 }
 
-int main(){
-	version(runTest){
-		const float[4] A = [0.0f, 1.0f, 3.0f, 5.0f];
-		const float[4] B = [0.0f, 2.0f, 4.0f, 6.0f];
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		haveSSE!()();
+
+		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];
+		b[0] = 0.0f;
+		b[1] = 2.0f;
+		b[2] = 4.0f;
+		b[3] = 6.0f;
 
 		asm{
-			movups XMM0, A;
-			movups XMM1, B;
+			movups XMM0, a;
+			movups XMM1, b;
 			comiss XMM0, XMM1;
 			jnz error;
 			jp error;
@@ -27,8 +40,8 @@
 		return 0;
 	error:
 		assert(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_fld_02_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_fld_02_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -2,6 +2,8 @@
 // $Date$
 // $Author$
 
+// __DSTRESS_TORTURE_BLOCK__ -fPIC
+
 module dstress.run.a.asm_fld_02_A;
 
 version(D_InlineAsm_X86){
--- a/run/a/asm_fnsave_01.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_fnsave_01.d	Tue Jul 04 17:04:51 2006 +0000
@@ -17,14 +17,14 @@
 		haveFPU!()();
 
 		static if(size_t.sizeof==4 || size_t.sizeof==6){
-			const ubyte stateSize = 108;
+			ubyte stateSize = 108;
 		}else static if(size_t.sizeof==2){
-			const ubyte stateSize = 94;
+			ubyte stateSize = 94;
 		}else{
 			static assert(0);
 		}
 
-		ubyte[stateSize] state;
+		ubyte[] state = new ubyte[stateSize];
 
 		asm{
 			fnsave state;
--- a/run/a/asm_frstor_01.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_frstor_01.d	Tue Jul 04 17:04:51 2006 +0000
@@ -17,14 +17,14 @@
 		haveFPU!()();
 
 		static if(size_t.sizeof==4 || size_t.sizeof==6){
-			const ubyte stateSize = 108;
+			ubyte stateSize = 108;
 		}else static if(size_t.sizeof==2){
-			const ubyte stateSize = 94;
+			ubyte stateSize = 94;
 		}else{
 			static assert(0);
 		}
 
-		ubyte[stateSize] state;
+		ubyte[] state = new ubyte[stateSize];
 
 		asm{
 			frstor state;
--- a/run/a/asm_fsave_01.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_fsave_01.d	Tue Jul 04 17:04:51 2006 +0000
@@ -17,14 +17,14 @@
 		haveFPU!()();
 
 		static if(size_t.sizeof==4 || size_t.sizeof==6){
-			const ubyte stateSize = 108;
+			ubyte stateSize = 108;
 		}else static if(size_t.sizeof==2){
-			const ubyte stateSize = 94;
+			ubyte stateSize = 94;
 		}else{
 			static assert(0);
 		}
 
-		ubyte[stateSize] state;
+		ubyte[] state = new ubyte[stateSize];
 
 		asm{
 			fsave state;
--- a/run/a/asm_lddqu_01.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_lddqu_01.d	Tue Jul 04 17:04:51 2006 +0000
@@ -16,21 +16,37 @@
 	int main(){
 		haveSSE3!()();
 
-		const ubyte[16] A = [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
+		ubyte[] a = new ubyte[16];
+		a[0] = 1;
+		a[1] = 2;
+		a[2] = 3;
+		a[3] = 4;
+		a[4] = 5;
+		a[5] = 6;
+		a[6] = 7;
+		a[7] = 8;
+		a[8] = 9;
+		a[9] = 10;
+		a[10] = 11;
+		a[11] = 12;
+		a[12] = 13;
+		a[13] = 14;
+		a[14] = 15;
+		a[15] = 16;
 
-		ubyte[16] b;
+		ubyte[] b = new ubyte[16];
 
 		asm{
-			lddqu XMM0, A;
+			lddqu XMM0, a;
 			movdqu b, XMM0;
 		}
 
-		if(A.length != b.length){
+		if(a.length != b.length){
 			assert(0);
 		}
 
-		for(size_t i = 0; i < A.length; i++){
-			if(A[i] != b[i]){
+		for(size_t i = 0; i < a.length; i++){
+			if(a[i] != b[i]){
 				assert(0);
 			}
 		}
--- a/run/a/asm_movmskpd_01_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_movmskpd_01_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -16,7 +16,10 @@
 	int main(){
 		haveSSE2!()();
 
-		const double[2] a = [1.0, -1.0];
+		double[] a = new double[2];
+		a[0] = 1.0;
+		a[1] = -1.0;
+
 		uint b;
 
 		asm{
--- a/run/a/asm_movmskps_01_A.d	Tue Jul 04 17:04:39 2006 +0000
+++ b/run/a/asm_movmskps_01_A.d	Tue Jul 04 17:04:51 2006 +0000
@@ -16,11 +16,16 @@
 	int main(){
 		haveSSE!()();
 
-		const float[4] A = [1.0f, -1.0f, -float.infinity, -0.0f];
+		float[] a = new float[4];
+		a[0] = 1.0f;
+		a[1] = -1.0f;
+		a[2] = -float.infinity;
+		a[3] = -0.0f;
+
 		uint b;
 
 		asm{
-			movdqu XMM0, A;
+			movdqu XMM0, a;
 			mov EAX, 0x1234_5678;
 			movmskps EAX, XMM0;
 			mov b, EAX;