changeset 978:4c5ccd0d4947

extended SSE asm tests
author thomask
date Fri, 28 Apr 2006 12:33:26 +0000
parents 1aba99b7f01c
children ee58e47a69b7
files run/a/asm_divpd_01_A.d run/a/asm_divps_01_A.d run/a/asm_divsd_01.d run/a/asm_divsd_01_A.d run/a/asm_divss_01.d run/a/asm_divss_01_A.d run/a/asm_haddpd_01_A.d run/a/asm_haddps_01_A.d run/a/asm_hsubpd_01_A.d run/a/asm_hsubps_01_A.d run/a/asm_maxpd_01_A.d run/a/asm_maxps_01_A.d run/a/asm_maxsd_01_A.d run/a/asm_maxss_01_A.d run/a/asm_minpd_01_A.d run/a/asm_minps_01_A.d run/a/asm_minsd_01_A.d run/a/asm_minss_01_A.d run/a/asm_movapd_01_A.d run/a/asm_movaps_01_A.d run/a/asm_movddup_01.d run/a/asm_movddup_01_A.d run/a/asm_movhlpd_01_A.d run/a/asm_movhlps_01_A.d
diffstat 24 files changed, 843 insertions(+), 81 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_divpd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_divpd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [-16.0, 12.0];
+		static double[2] B = [2.0, 3.0];
+		double[2] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			divpd XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		c[0] += 8.0;
+		if(c[0] < 0){
+			c[0] = -c[0];
+		}
+		if(c[0] > double.epsilon * 16){
+			assert(0);
+		}
+
+		c[1] -= 4.0;
+		if(c[1] < 0){
+			c[1] = -c[1];
+		}
+		if(c[1] > double.epsilon * 16){
+			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_divps_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,55 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_divps_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [-16.0f, 12.0f, 3.3f, 0.0f];
+		static float[4] B = [2.0f, 3.0f, 1.0f, 9.7f];
+		float[4] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			divps XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		c[0] += 8.0f;
+		if(c[0] < 0){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * 16){
+			assert(0);
+		}
+
+		c[1] -= 4.0f;
+		if(c[1] < 0){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * 16){
+			assert(0);
+		}
+		
+		c[2] -= 3.3f;
+		if(c[2] < 0){
+			c[2] = -c[2];
+		}
+		if(c[2] > float.epsilon * 16){
+			assert(0);
+		}
+		
+		if(c[3] < 0){
+			c[3] = -c[3];
+		}
+		if(c[3] > float.epsilon * 16){
+			assert(0);
+		}
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- a/run/a/asm_divsd_01.d	Fri Apr 28 09:54:50 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.a.asm_divsd_01;
-
-int main(){
-	version(D_InlineAsm){
-		double a = -4.2f;
-		double b = 2.0f;
-		
-		asm{
-			movq XMM0, a;
-			divsd XMM0, b;
-			movq b, XMM0;
-		}
-
-		b = b + 2.1f;
-		assert(b< b.epsilon*4);
-		
-		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_divsd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_divsd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [-16.0f, 12.0];
+		static double[2] B = [2.0f, 3.0f];
+		double[2] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			divsd XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		c[0] += 8.0f;
+		if(c[0] < 0){
+			c[0] = -c[0];
+		}
+		if(c[0] > double.epsilon * 16){
+			assert(0);
+		}
+
+		c[1] -= 12.0f;
+		if(c[1] < 0){
+			c[1] = -c[1];
+		}
+		if(c[1] > double.epsilon * 16){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- a/run/a/asm_divss_01.d	Fri Apr 28 09:54:50 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.a.asm_divss_01;
-
-int main(){
-	version(D_InlineAsm){
-		float a = -4.2f;
-		float b = 2.0f;
-		
-		asm{
-			movd XMM0, a;
-			divss XMM0, b;
-			movd b, XMM0;
-		}
-
-		b = b + 2.1f;
-		assert(b< b.epsilon*4);
-		
-		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_divss_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,56 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_divss_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [-16.0f, 12.0f, 3.3f, 9.0f];
+		static float[4] B = [2.0f, 3.0f, 1.0f, 2.0f];
+		float[4] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			divss XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		c[0] += 8.0f;
+		if(c[0] < 0){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * 16){
+			assert(0);
+		}
+
+		c[1] -= 12.0f;
+		if(c[1] < 0){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * 16){
+			assert(0);
+		}
+		
+		c[2] -= 3.3f;
+		if(c[2] < 0){
+			c[2] = -c[2];
+		}
+		if(c[2] > float.epsilon * 16){
+			assert(0);
+		}
+		
+		c[3] -= 9.0f;
+		if(c[3] < 0){
+			c[3] = -c[3];
+		}
+		if(c[3] > float.epsilon * 16){
+			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_haddpd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_haddpd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [7.0, 11.0];
+		static double[2] B = [2.0, 3.0];
+		double[2] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			haddpd XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		c[0] -= 18.0;
+		if(c[0] < 0){
+			c[0] = -c[0];
+		}
+		if(c[0] > double.epsilon * 16){
+			assert(0);
+		}
+		
+		c[1] -= 5.0;
+		if(c[1] < 0){
+			c[1] = -c[1];
+		}
+		if(c[1] > double.epsilon * 16){
+			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_haddps_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,56 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_haddps_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [6.1f, 7.2f, 8.3f, 9.4f];
+		static float[4] B = [1.0f, 2.0f, 3.0f, 4.0f];
+		float[4] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			haddps XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		c[0] -= 13.3f;
+		if(c[0] < 0){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * 16){
+			assert(0);
+		}
+		
+		c[1] -= 17.7;
+		if(c[1] < 0){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * 16){
+			assert(0);
+		}
+		
+		c[2] -= 3.0;
+		if(c[2] < 0){
+			c[2] = -c[2];
+		}
+		if(c[2] > float.epsilon * 16){
+			assert(0);
+		}
+
+		c[3] -= 7.0;
+		if(c[3] < 0){
+			c[3] = -c[3];
+		}
+		if(c[3] > float.epsilon * 16){
+			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_hsubpd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_hsubpd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [2.0, 3.0];
+		static double[2] B = [1.0, 4.0];
+		double[2] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			hsubpd XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		c[0] += 1.0;
+		if(c[0] < 0){
+			c[0] = -c[0];
+		}
+		if(c[0] > double.epsilon * 64){
+			assert(0);
+		}
+		
+		c[1] += 3.0;
+		if(c[1] < 0){
+			c[1] = -c[1];
+		}
+		if(c[1] > double.epsilon * 16){
+			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_hsubps_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,56 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_hsubps_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [2.0f, 3.0f, 6.0f, 8.0f];
+		static float[4] B = [1.0f, 4.0f, 5.0f, 9.0f];
+		float[4] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			hsubps XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		c[0] += 1.0f;
+		if(c[0] < 0){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * 16){
+			assert(0);
+		}
+		
+		c[1] += 2.0f;
+		if(c[1] < 0){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * 16){
+			assert(0);
+		}
+		
+		c[2] += 3.0;
+		if(c[2] < 0){
+			c[2] = -c[2];
+		}
+		if(c[2] > float.epsilon * 16){
+			assert(0);
+		}
+
+		c[3] += 4.0;
+		if(c[3] < 0){
+			c[3] = -c[3];
+		}
+		if(c[3] > float.epsilon * 16){
+			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_maxpd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_maxpd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [2.0, 3.0];
+		static double[2] B = [1.0, 4.0];
+		double[2] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			maxpd XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		if(c[0] != 2.0){
+			assert(0);
+		}
+
+		if(c[1] != 4.0){
+			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_maxps_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_maxps_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [2.0f, 3.0f, 16.0f, -1.0f];
+		static float[4] B = [1.0f, 4.0f, -17.0f, 1.0f];
+		float[4] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			maxps XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		if(c[0] != 2.0f){
+			assert(0);
+		}
+
+		if(c[1] != 4.0f){
+			assert(0);
+		}
+		
+		if(c[2] != 16.0f){
+			assert(0);
+		}
+
+		if(c[3] != 1.0f){
+			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_maxsd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_maxsd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [1.0, 3.0];
+		static double[2] B = [2.0, 4.0];
+		double[2] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			maxsd XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		if(c[0] != 2.0){
+			assert(0);
+		}
+
+		if(c[1] != 3.0){
+			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_maxss_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_maxss_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [1.0f, 3.0f, 16.0f, -1.0f];
+		static float[4] B = [2.0f, 4.0f, -17.0f, 1.0f];
+		float[4] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			maxss XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		if(c[0] != 2.0f){
+			assert(0);
+		}
+
+		if(c[1] != 3.0f){
+			assert(0);
+		}
+		
+		if(c[2] != 16.0f){
+			assert(0);
+		}
+
+		if(c[3] != -1.0f){
+			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_minpd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_minpd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [2.0, 4.0];
+		static double[2] B = [1.0, 3.0];
+		double[2] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			minpd XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		if(c[0] != 1.0){
+			assert(0);
+		}
+
+		if(c[1] != 3.0){
+			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_minps_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_maxps_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [2.0f, 3.0f, 17.0f, -1.0f];
+		static float[4] B = [1.0f, 4.0f, 16.0f, 1.0f];
+		float[4] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			minps XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		if(c[0] != 1.0f){
+			assert(0);
+		}
+
+		if(c[1] != 3.0f){
+			assert(0);
+		}
+		
+		if(c[2] != 16.0f){
+			assert(0);
+		}
+
+		if(c[3] != -1.0f){
+			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_minsd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_minsd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [2.0, 4.0];
+		static double[2] B = [1.0, 3.0];
+		double[2] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			minsd XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		if(c[0] != 1.0){
+			assert(0);
+		}
+
+		if(c[1] != 4.0){
+			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_minss_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_maxss_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [2.0f, 3.0f, 17.0f, -1.0f];
+		static float[4] B = [1.0f, 4.0f, 16.0f, 1.0f];
+		float[4] c;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, B;
+			minss XMM0, XMM1;
+			movdqu c, XMM0;
+		}
+
+		if(c[0] != 1.0f){
+			assert(0);
+		}
+
+		if(c[1] != 3.0f){
+			assert(0);
+		}
+		
+		if(c[2] != 17.0f){
+			assert(0);
+		}
+
+		if(c[3] != -1.0f){
+			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_movapd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_movapd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [2.0, 3.0];
+		double[2] b;
+
+		asm{
+			movdqu XMM0, A;
+			movapd XMM1, XMM0;
+			movdqu b, XMM1;
+		}
+
+		if(A[0] != b[0]){
+			assert(0);
+		}
+
+		if(A[1] != 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_movaps_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,38 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_movaps_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [2.0f, 3.0f, 0.0f, 0.5f];
+		float[4] b;
+
+		asm{
+			movdqu XMM0, A;
+			movaps XMM1, XMM0;
+			movdqu b, XMM1;
+		}
+
+		if(A[0] != b[0]){
+			assert(0);
+		}
+
+		if(A[1] != b[1]){
+			assert(0);
+		}
+		
+		if(A[2] != b[2]){
+			assert(0);
+		}
+
+		if(A[3] != b[3]){
+			assert(0);
+		}
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}
--- a/run/a/asm_movddup_01.d	Fri Apr 28 09:54:50 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.a.asm_movdup_01;
-
-int main(){
-	version(D_InlineAsm_X86){
-		double a = -3.5;
-		double[2] b;
-		
-		asm{
-			movddup XMM0, a;
-			movdqu f, XMM0;
-		}
-		
-		if(b[0] != a){
-			assert(0);
-		}
-
-		if(b[1] != a){
-			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_movddup_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_movddup_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [2.0, 3.0];
+		double[2] b;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, A;
+			movddup XMM1, XMM0;
+			movdqu b, XMM1;
+		}
+
+		if(A[0] != b[0]){
+			assert(0);
+		}
+
+		if(A[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_movhlpd_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_movhlpd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static double[2] A = [1.0, 2.0];
+		static double B = 4.0;
+		double[2] b;
+
+		asm{
+			movdqu XMM0, A;
+			movhpd XMM0, B;
+			movdqu b, XMM0;
+		}
+
+		if(b[0] != A[0]){
+			assert(0);
+		}
+
+		if(b[1] != B){
+			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_movhlps_01_A.d	Fri Apr 28 12:33:26 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_movhlps_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		static float[4] A = [1.0f, 2.0f, 3.0f , 4.0f];
+		float[4] b;
+
+		asm{
+			movdqu XMM0, A;
+			movdqu XMM1, A;
+			movhlps XMM1, XMM0;
+			movdqu b, XMM0;
+		}
+
+		if((b[0] != b[2]) || (A[2] != b[0])){
+			assert(0);
+		}
+
+		if((b[1] != b[3]) || (A[3] != b[1])){
+			assert(0);
+		}
+		
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}