changeset 1028:26ae51190cc3

partial dmd-0.158 review
author thomask
date Fri, 26 May 2006 18:13:37 +0000
parents 7ee2442b6bf4
children aab96ff8d6cd
files 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 run/a/asm_lddqu_01.d run/a/asm_movlhps_01_A.d run/a/asm_movmskps_01_A.d run/a/asm_movntpd_01_A.d run/a/asm_movshdup_01_A.d run/a/asm_movsldup_01_A.d run/a/asm_movss_01_B.d run/a/asm_mulpd_01_A.d run/a/asm_mulps_01_A.d run/a/asm_mulsd_01_A.d run/a/asm_mulsd_01_B.d run/a/asm_mulss_01_A.d run/a/asm_mulss_01_B.d
diffstat 17 files changed, 39 insertions(+), 190 deletions(-) [+]
line wrap: on
line diff
--- a/run/a/asm_comisd_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_comisd_01_A.d	Fri May 26 18:13:37 2006 +0000
@@ -12,17 +12,18 @@
 
 int main(){
 	version(runTest){
-		const double[2] A = [1.0, 2.0];
-		const double[2] B = [1.0, 3.0];
+		const double[2] A = [1.0, 3.0];
+		const double[2] B = [4.0, 3.0];
 
 		asm{
 			movupd XMM0, A;
 			movupd XMM1, B;
 			comisd XMM0, XMM1;
-			jg error;
-			je error;
-			jnl error;
+			jz error;
+			jp error;
+			jnc error;
 		}
+		
 
 		return 0;
 	error:
--- a/run/a/asm_comisd_01_B.d	Wed May 24 16:24:27 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
- // $HeadURL$
- // $Date$
- // $Author$
- 
-module dstress.run.a.asm_comisd_01_B;
-
-version(D_InlineAsm_X86){
-	version = runTest;
-}else version(D_InlineAsm_X86_64){
-	version = runTest;
-}
-
-int main(){
-	version(runTest){
-		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);
-	}
-}
--- a/run/a/asm_comiss_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_comiss_01_A.d	Fri May 26 18:13:37 2006 +0000
@@ -12,16 +12,16 @@
 
 int main(){
 	version(runTest){
-		const float[4] A = [10.0f, 20.0f, 19.0f, 2.0f];
-		const float[4] B = [5.0f, 5.0f, 5.0f, 3.0f];
+		const float[4] A = [0.0f, 1.0f, 3.0f, 5.0f];
+		const float[4] B = [0.0f, 2.0f, 4.0f, 6.0f];
 
 		asm{
 			movups XMM0, A;
 			movups XMM1, B;
 			comiss XMM0, XMM1;
-			jg error;
-			je error;
-			jnl error;
+			jnz error;
+			jp error;
+			jc error;
 		}
 
 		return 0;
--- a/run/a/asm_comiss_01_B.d	Wed May 24 16:24:27 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
- // $HeadURL$
- // $Date$
- // $Author$
- 
-module dstress.run.a.asm_comiss_01_B;
-
-version(D_InlineAsm_X86){
-	version = runTest;
-}else version(D_InlineAsm_X86_64){
-	version = runTest;
-}
-
-int main(){
-	version(runTest){
-		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);
-	}
-}
--- a/run/a/asm_lddqu_01.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_lddqu_01.d	Fri May 26 18:13:37 2006 +0000
@@ -29,7 +29,7 @@
 			assert(0);
 		}
 
-		for(size_t i = 0; i < A.lenght; i++){
+		for(size_t i = 0; i < A.length; i++){
 			if(A[i] != b[i]){
 				assert(0);
 			}
--- a/run/a/asm_movlhps_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_movlhps_01_A.d	Fri May 26 18:13:37 2006 +0000
@@ -27,19 +27,19 @@
 			movups c, XMM0;
 		}
 
-		if(c[0] != B[2]){
+		if(c[0] != A[0]){
 			assert(0);
 		}
 
-		if(c[1] != B[3]){
+		if(c[1] != A[1]){
 			assert(0);
 		}
 		
-		if(c[2] != A[2]){
+		if(c[2] != B[0]){
 			assert(0);
 		}
 
-		if(c[3] != A[3]){
+		if(c[3] != B[1]){
 			assert(0);
 		}
 		
--- a/run/a/asm_movmskps_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_movmskps_01_A.d	Fri May 26 18:13:37 2006 +0000
@@ -26,7 +26,7 @@
 			mov b, EAX;
 		}
 		
-		if(b != 0x0000_0004){
+		if(b != 0b1110){
 			assert(0);
 		}
 		
--- a/run/a/asm_movntpd_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_movntpd_01_A.d	Fri May 26 18:13:37 2006 +0000
@@ -17,13 +17,15 @@
 		haveSSE2!()();
 
 		const double[2] a = [1.0, -1.0];
-		double[2] b;
+		double[] b = aligned_new!(double)(2, 16);
 		
 		asm{
 			movupd XMM0, a;
 			movntpd b, XMM0;
+			sfence;
 		}
 		
+		printf("%lf\n", b[0], b[1]);
 		if(a[0] != b[0]){
 			assert(0);
 		}
--- a/run/a/asm_movshdup_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_movshdup_01_A.d	Fri May 26 18:13:37 2006 +0000
@@ -23,16 +23,16 @@
 			movups b, XMM1;
 		}
 		
-		if(a[0] != b[0]){
+		if(a[1] != b[0]){
 			assert(0);
 		}
-		if(a[0] != b[1]){
+		if(a[1] != b[1]){
 			assert(0);
 		}
-		if(a[2] != b[2]){
+		if(a[3] != b[2]){
 			assert(0);
 		}
-		if(a[2] != b[3]){
+		if(a[3] != b[3]){
 			assert(0);
 		}
 		
--- a/run/a/asm_movsldup_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_movsldup_01_A.d	Fri May 26 18:13:37 2006 +0000
@@ -17,7 +17,7 @@
 		haveSSE3!()();
 
 		const float[4] A = [1.0, -1.0f, -2.0f, 2.0f];
-		double[4] b;
+		float[4] b;
 		
 		asm{
 			movups XMM0, A;
@@ -25,16 +25,16 @@
 			movups b, XMM1;
 		}
 		
-		if(A[1] != b[0]){
+		if(A[0] != b[0]){
 			assert(0);
 		}
-		if(A[1] != b[1]){
+		if(A[0] != b[1]){
 			assert(0);
 		}
-		if(A[3] != b[2]){
+		if(A[2] != b[2]){
 			assert(0);
 		}
-		if(A[3] != b[3]){
+		if(A[2] != b[3]){
 			assert(0);
 		}
 		
--- a/run/a/asm_movss_01_B.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_movss_01_B.d	Fri May 26 18:13:37 2006 +0000
@@ -27,7 +27,7 @@
 			movups c, XMM0;
 		}
 		
-		if(c[0] != A[0]){
+		if(c[0] != B[0]){
 			assert(0);
 		}
 		if(c[1] != A[1]){
@@ -36,7 +36,7 @@
 		if(c[2] != A[2]){
 			assert(0);
 		}
-		if(c[3] != B[3]){
+		if(c[3] != A[3]){
 			assert(0);
 		}
 
--- a/run/a/asm_mulpd_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.a.asm_mulpd_01_A;
-
-version(D_InlineAsm_X86){
-	version = runTest;
-}else version(D_InlineAsm_X86_64){
-	version = runTest;
-}
-
-version(runTest){
-	import addon.cpuinfo;
-
-	int main(){
-		haveSSE2!()();
-
-		const double[2] A = [7.0, 4.0];
-		const double[2] B = [3.0, 2.0];
-		double[2] c;
-		
-		asm{
-			movupd XMM0, A;
-			mulpd XMM0, B;
-			movupd c, XMM0;
-		}
-		
-		if(c[0] != 21.0){
-			assert(0);
-		}
-		if(c[1] != 8.0){
-			assert(0);
-		}
-
-		return 0;
-	}
-}else{
-	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-	static assert(0);
-}
--- a/run/a/asm_mulps_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.a.asm_mulps_01_A;
-
-version(D_InlineAsm_X86){
-	version = runTest;
-}else version(D_InlineAsm_X86_64){
-	version = runTest;
-}
-
-version(runTest){
-	import addon.cpuinfo;
-	
-	int main(){
-		haveSSE!()();
-
-		const float[4] A = [7.0f, 4.0f, 1.0f, -2.0f];
-		const float[4] B = [3.0f, 2.0f, 0.0f, 5.0f];
-		float[4] c;
-		
-		asm{
-			movups XMM0, A;
-			mulps XMM0, B;
-			movups c, XMM0;
-		}
-		
-		if(c[0] != 21.0f){
-			assert(0);
-		}
-		if(c[1] != 8.0f){
-			assert(0);
-		}
-		if(c[2] != 0.0f){
-			assert(0);
-		}
-		if(c[3] != -10.0f){
-			assert(0);
-		}
-
-		return 0;
-	}
-}else{
-	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
-	static assert(0);
-}
--- a/run/a/asm_mulsd_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_mulsd_01_A.d	Fri May 26 18:13:37 2006 +0000
@@ -27,10 +27,10 @@
 			movupd c, XMM0;
 		}
 		
-		if(c[0] != 7.0){
+		if(c[0] != 21.0){
 			assert(0);
 		}
-		if(c[1] != 8.0){
+		if(c[1] != 4.0){
 			assert(0);
 		}
 
--- a/run/a/asm_mulsd_01_B.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_mulsd_01_B.d	Fri May 26 18:13:37 2006 +0000
@@ -26,10 +26,10 @@
 			movupd c, XMM0;
 		}
 		
-		if(c[0] != 7.0){
+		if(c[0] != 14.0){
 			assert(0);
 		}
-		if(c[1] != 8.0){
+		if(c[1] != 4.0){
 			assert(0);
 		}
 
--- a/run/a/asm_mulss_01_A.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_mulss_01_A.d	Fri May 26 18:13:37 2006 +0000
@@ -27,7 +27,7 @@
 			movups c, XMM0;
 		}
 		
-		if(c[0] != 7.0f){
+		if(c[0] != 21.0f){
 			assert(0);
 		}
 		if(c[1] != 4.0f){
@@ -36,7 +36,7 @@
 		if(c[2] != 1.0f){
 			assert(0);
 		}
-		if(c[3] != -10.0f){
+		if(c[3] != -2.0f){
 			assert(0);
 		}
 
--- a/run/a/asm_mulss_01_B.d	Wed May 24 16:24:27 2006 +0000
+++ b/run/a/asm_mulss_01_B.d	Fri May 26 18:13:37 2006 +0000
@@ -26,7 +26,7 @@
 			movups c, XMM0;
 		}
 		
-		if(c[0] != 7.0f){
+		if(c[0] != 35.0f){
 			assert(0);
 		}
 		if(c[1] != 4.0f){
@@ -35,7 +35,7 @@
 		if(c[2] != 1.0f){
 			assert(0);
 		}
-		if(c[3] != -10.0f){
+		if(c[3] != -2.0f){
 			assert(0);
 		}