changeset 1064:2d96dd3c16c3

<thomas-dloop@kuehne.cn> 2006-07-02 news:bug-234-3@http.d.puremagic.com/issues/
author thomask
date Sun, 02 Jul 2006 14:07:55 +0000
parents 4c41b782a14e
children 389b935b78a0
files run/o/odd_bug_05_A.d run/o/odd_bug_05_B.d run/o/odd_bug_05_C.d run/o/odd_bug_05_D.d
diffstat 4 files changed, 220 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/o/odd_bug_05_A.d	Sun Jul 02 14:07:55 2006 +0000
@@ -0,0 +1,55 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<thomas-dloop@kuehne.cn>
+// @date@	2006-07-02
+// @uri@	news:bug-234-3@http.d.puremagic.com/issues/
+
+module dstress.run.o.odd_bug_05_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveSSE!()();
+
+		float[] a = new float[4];
+		a[0] = 1.0f;
+		a[1] = 0.2f;
+		a[2] = 3.0f;
+		a[3] = 0.4f;
+
+		float[] b = new float[4];
+
+		asm{
+			movups XMM0, a;
+			movups b, XMM0;
+			emms;
+		}
+
+		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, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/o/odd_bug_05_B.d	Sun Jul 02 14:07:55 2006 +0000
@@ -0,0 +1,55 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<thomas-dloop@kuehne.cn>
+// @date@	2006-07-02
+// @uri@	news:bug-234-3@http.d.puremagic.com/issues/
+
+module dstress.run.o.odd_bug_05_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveSSE!()();
+
+		float[4] a;
+		a[0] = 1.0f;
+		a[1] = 0.2f;
+		a[2] = 3.0f;
+		a[3] = 0.4f;
+
+		float[4] b;
+
+		asm{
+			movups XMM0, a;
+			movups b, XMM0;
+			emms;
+		}
+
+		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, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/o/odd_bug_05_C.d	Sun Jul 02 14:07:55 2006 +0000
@@ -0,0 +1,53 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<thomas-dloop@kuehne.cn>
+// @date@	2006-07-02
+// @uri@	news:bug-234-3@http.d.puremagic.com/issues/
+
+module dstress.run.o.odd_bug_05_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	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;
+
+		asm{
+			movups XMM0, a;
+			movups a, XMM0;
+			emms;
+		}
+
+		if(a[0] != 1.0f){
+			assert(0);
+		}
+		if(a[1] != 2.0f){
+			assert(0);
+		}
+		if(a[2] != 3.0f){
+			assert(0);
+		}
+		if(a[3] != 4.0f){
+			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/o/odd_bug_05_D.d	Sun Jul 02 14:07:55 2006 +0000
@@ -0,0 +1,57 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<thomas-dloop@kuehne.cn>
+// @date@	2006-07-02
+// @uri@	news:bug-234-3@http.d.puremagic.com/issues/
+
+module dstress.run.o.odd_bug_05_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveSSE!()();
+
+		float[] a = new float[4];
+		a[0] = 1.0f;
+		a[1] = 0.2f;
+		a[2] = 3.0f;
+		a[3] = 0.4f;
+
+		float[] b = new float[4];
+
+		float[] dummy = new float[4];
+
+		asm{
+			movups XMM0, a;
+			movups b, XMM0;
+			emms;
+		}
+
+		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, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}