changeset 984:9acd7becc753

added 3DNow! tests - all of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
author thomask
date Mon, 01 May 2006 14:38:44 +0000
parents 642e3fea11a9
children d3038d8cb01c
files run/a/asm_pavgusb_01_A.d run/a/asm_pavgusb_01_B.d run/a/asm_pf2id_01_A.d run/a/asm_pf2id_01_B.d run/a/asm_pfacc_01_A.d run/a/asm_pfacc_01_B.d run/a/asm_pfadd_01_A.d run/a/asm_pfadd_01_B.d run/a/asm_pfcmpeq_01_A.d run/a/asm_pfcmpeq_01_B.d run/a/asm_pfcmpge_01_A.d run/a/asm_pfcmpge_01_B.d run/a/asm_pfcmpgt_01_A.d run/a/asm_pfcmpgt_01_B.d run/a/asm_pfmax_01_A.d run/a/asm_pfmax_01_B.d run/a/asm_pfmin_01_A.d run/a/asm_pfmin_01_B.d run/a/asm_pfmul_01_A.d run/a/asm_pfmul_01_B.d run/a/asm_pfrcp_01_A.d run/a/asm_pfrcp_01_B.d run/a/asm_pfrcpit1_01_A.d run/a/asm_pfrcpit1_01_B.d run/a/asm_pfrcpit2_01_A.d run/a/asm_pfrcpit2_01_B.d run/a/asm_pfrsqrt_01_A.d run/a/asm_pfrsqrt_01_B.d run/a/asm_pfrsqrtit1_01_A.d run/a/asm_pfrsqrtit1_01_B.d run/a/asm_pfsub_01_A.d run/a/asm_pfsub_01_B.d run/a/asm_pfsubr_01_A.d run/a/asm_pfsubr_01_B.d run/a/asm_pi2fd_01_A.d run/a/asm_pi2fd_01_B.d
diffstat 36 files changed, 1212 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_pavgusb_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pavgusb_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const ubyte[8] A = [1, 2, 3, 4, 5, 6, 7, 8];
+		const ubyte[8] B = [5, 2, 1, 8, 15, 4, 1, 4];
+		const ubyte[8] C = [3, 2, 2, 6, 10, 5, 4, 6];
+		ubyte[8] d;
+
+		asm{
+			emms;
+			movq MM0, A;
+			pavgusb MM0, B;
+			movq d, MM0;
+		}
+
+		for(size_t i = 0; i < C.length; i++){
+			if(d[i] != C[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_pavgusb_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pavgusb_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const ubyte[8] A = [1, 2, 3, 4, 5, 6, 7, 8];
+		const ubyte[8] B = [5, 2, 1, 8, 15, 4, 1, 4];
+		const ubyte[8] C = [3, 2, 2, 6, 10, 5, 4, 6];
+		ubyte[8] d;
+
+		asm{
+			emms;
+			movq MM0, A;
+			movq MM1, B
+			pavgusb MM0, MM1;
+			movq d, MM0;
+		}
+
+		for(size_t i = 0; i < C.length; i++){
+			if(d[i] != C[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_pf2id_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,29 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pf2id_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, -456.0f];
+		int[2] b;
+
+		asm{
+			pf2id MM0, A;
+			movq b, MM0;
+		}
+
+		if(b[0] != A[0]){
+			assert(0);
+		}
+		if(b[1] != A[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_pf2id_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,30 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pf2id_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, -456.0f];
+		int[2] b;
+
+		asm{
+			movq MM1, A;
+			pf2id MM0, MM1;
+			movq b, MM0;
+		}
+
+		if(b[0] != A[0]){
+			assert(0);
+		}
+		if(b[1] != A[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_pfacc_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfacc_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, -456.0f];
+		const float[2] B = [12.0f, 17.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			pfacc MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != -333.0f){
+			assert(0);
+		}
+		if(c[1] != 29.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_pfacc_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfacc_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, -456.0f];
+		const float[2] B = [12.0f, 17.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B;
+			pfacc MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != -333.0f){
+			assert(0);
+		}
+		if(c[1] != 29.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_pfadd_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfadd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, -456.0f];
+		const float[2] B = [12.0f, 17.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			pfadd MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != 135.0f){
+			assert(0);
+		}
+		if(c[1] != -449.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_pfadd_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfadd_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, -456.0f];
+		const float[2] B = [12.0f, 17.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B;
+			pfadd MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != 135.0f){
+			assert(0);
+		}
+		if(c[1] != -449.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_pfcmpeq_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfcmpeq_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, -456.0f];
+		const float[2] B = [123.0f, 456.0f];
+		uint[2] c;
+
+		asm{
+			movq MM0, A;
+			pfcmpeq MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != uint.max){
+			assert(0);
+		}
+		if(c[1] != 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_pfcmpeq_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfcmpeq_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, -456.0f];
+		const float[2] B = [123.0f, 456.0f];
+		uint[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B
+			pfcmpeq MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != uint.max){
+			assert(0);
+		}
+		if(c[1] != 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_pfcmpge_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfcmpge_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, 457.0f];
+		const float[2] B = [124.0f, 456.0f];
+		uint[2] c;
+
+		asm{
+			movq MM0, A;
+			pfcmpge MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != 0){
+			assert(0);
+		}
+		if(c[1] != 0xFFFF_FFFF){
+			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_pfcmpge_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfcmpge_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, 458.0f];
+		const float[2] B = [124.0f, 456.0f];
+		uint[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B
+			pfcmpge MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != 0){
+			assert(0);
+		}
+		if(c[1] != 0xFFFF_FFFF){
+			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_pfcmpgt_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfcmpgt_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, 457.0f];
+		const float[2] B = [123.0f, 456.0f];
+		uint[2] c;
+
+		asm{
+			movq MM0, A;
+			pfcmpgt MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != 0xFFFF_FFFF){
+			assert(0);
+		}
+		if(c[1] != 0xFFFF_FFFF){
+			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_pfcmpgt_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfcmpgt_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [123.0f, 457.0f];
+		const float[2] B = [123.0f, 456.0f];
+		uint[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B;
+			pfcmpgt MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != 0xFFFF_FFFF){
+			assert(0);
+		}
+		if(c[1] != 0xFFFF_FFFF){
+			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_pfmax_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfmax_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [-123.0f, 457.0f];
+		const float[2] B = [123.0f, 456.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			pfmax MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != B[0]){
+			assert(0);
+		}
+		if(c[1] != A[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_pfmax_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfmax_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [-123.0f, 457.0f];
+		const float[2] B = [123.0f, 456.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B;
+			pfmax MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != B[0]){
+			assert(0);
+		}
+		if(c[1] != A[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_pfmin_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfmin_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [-123.0f, 457.0f];
+		const float[2] B = [123.0f, 456.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			pfmin MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != A[0]){
+			assert(0);
+		}
+		if(c[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_pfmin_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfmin_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [-123.0f, 457.0f];
+		const float[2] B = [123.0f, 456.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B;
+			pfmin MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != A[0]){
+			assert(0);
+		}
+		if(c[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_pfmul_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfmul_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [-3.0f, 7.0f];
+		const float[2] B = [2.0f, 8.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			pfmul MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != -6.0f){
+			assert(0);
+		}
+		if(c[1] != 56.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_pfmul_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfmul_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [-3.0f, 7.0f];
+		const float[2] B = [2.0f, 8.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B;
+			pfmul MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != -6.0f){
+			assert(0);
+		}
+		if(c[1] != 56.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_pfrcp_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,38 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrcp_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [2.0f, -0.5f];
+		float[2] c;
+
+		asm{
+			pfrcp MM0, A;
+			movq c, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 11)){
+			assert(0);
+		}
+		
+		c[1] += 2.0f;
+		if(c[1] < 0.0f){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * (1 << 11)){
+			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_pfrcp_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,39 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrcp_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [2.0f, -0.5f];
+		float[2] c;
+
+		asm{
+			movq MM1, A;
+			pfrcp MM0, MM1;
+			movq c, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 11)){
+			assert(0);
+		}
+		
+		c[1] += 2.0f;
+		if(c[1] < 0.0f){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * (1 << 11)){
+			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_pfrcpit1_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,39 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrcpit1_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [2.0f, -0.5f];
+		float[2] c;
+
+		asm{
+			pfrcp MM0, A;
+			pfrcpit1 MM0, A;
+			movq c, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 8)){
+			assert(0);
+		}
+		
+		c[1] += 2.0f;
+		if(c[1] < 0.0f){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * (1 << 8)){
+			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_pfrcpit1_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrcpit1_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [2.0f, -0.5f];
+		float[2] c;
+
+		asm{
+			movq MM1, A;
+			pfrcp MM0, MM1;
+			pfrcpit1 MM0, MM1;
+			movq c, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 11)){
+			assert(0);
+		}
+		
+		c[1] += 2.0f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 11)){
+			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_pfrcpit2_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrcpit2_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [2.0f, -0.5f];
+		float[2] c;
+
+		asm{
+			pfrcp MM0, A;
+			pfrcpit1 MM0, A;
+			pfrcpit2 MM0, A;
+			movq c, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 3)){
+			assert(0);
+		}
+		
+		c[1] += 2.0f;
+		if(c[1] < 0.0f){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * (1 << 3)){
+			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_pfrcpit2_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,41 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrcpit2_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [2.0f, -0.5f];
+		float[2] c;
+
+		asm{
+			movq MM1, A;
+			pfrcp MM0, MM1;
+			pfrcpit1 MM0, MM1;
+			pfrcpit2 MM0, MM1;
+			movq c, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 8)){
+			assert(0);
+		}
+		
+		c[1] += 2.0f;
+		if(c[1] < 0.0f){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * (1 << 8)){
+			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_pfrsqrt_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,38 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrsqrt_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [4.0f, 0.5f];
+		float[2] b;
+
+		asm{
+			pfrsqrt MM0, A;
+			movq b, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 11)){
+			assert(0);
+		}
+		
+		c[1] -= 4.0f;
+		if(c[1] < 0.0f){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * (1 << 11)){
+			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_pfrsqrt_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,39 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrsqrt_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [4.0f, 0.5f];
+		float[2] c;
+
+		asm{
+			movq MM1, A;
+			pfrsqrt MM0, MM1;
+			movq c, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 11)){
+			assert(0);
+		}
+		
+		c[1] -= 4.0f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 11)){
+			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_pfrsqrtit1_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,39 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrsqrtit1_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [4.0f, 0.5f];
+		float[2] c;
+
+		asm{
+			pfrsqrt MM0, A;
+			pfrsqit1 MM0, A;
+			movq c, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 8)){
+			assert(0);
+		}
+		
+		c[1] -= 4.0f;
+		if(c[1] < 0.0f){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * (1 << 8)){
+			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_pfrsqrtit1_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,40 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfrsqrtit1_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [4.0f, 0.5f];
+		float[2] c;
+
+		asm{
+			movq MM1, A;
+			pfrsqrt MM0, MM1;
+			pfrsqit1 MM0, MM1;
+			movq c, MM0;
+		}
+
+		c[0] -= 0.5f;
+		if(c[0] < 0.0f){
+			c[0] = -c[0];
+		}
+		if(c[0] > float.epsilon * (1 << 8)){
+			assert(0);
+		}
+		
+		c[1] -= 4.0f;
+		if(c[1] < 0.0f){
+			c[1] = -c[1];
+		}
+		if(c[1] > float.epsilon * (1 << 8)){
+			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_pfsub_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfsub_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [6.0f, 2.0f];
+		const float[2] B = [2.0f, -1.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B;
+			pfsub MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != 4.0f){
+			assert(0);
+		}
+
+		if(c[1] != 3.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_pfsub_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfsub_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [6.0f, 2.0f];
+		const float[2] B = [2.0f, -1.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			pfsub MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != 4.0f){
+			assert(0);
+		}
+
+		if(c[1] != 3.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_pfsubr_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,33 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfsubr_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [6.0f, 2.0f];
+		const float[2] B = [2.0f, -1.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			movq MM1, B;
+			pfsubr MM0, MM1;
+			movq c, MM0;
+		}
+
+		if(c[0] != -4.0f){
+			assert(0);
+		}
+
+		if(c[1] != -3.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_pfsubr_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pfsubr_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const float[2] A = [6.0f, 2.0f];
+		const float[2] B = [2.0f, -1.0f];
+		float[2] c;
+
+		asm{
+			movq MM0, A;
+			pfsubr MM0, B;
+			movq c, MM0;
+		}
+
+		if(c[0] != -4.0f){
+			assert(0);
+		}
+
+		if(c[1] != -3.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_pi2fd_01_A.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,31 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pi2fd_01_A;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const int[2] A = [6, 2];
+		float[2] b;
+
+		asm{
+			movq MM1, A;
+			pi2fd MM0, MM1;
+			movq b, MM0;
+		}
+
+		if(b[0] != 6.0f){
+			assert(0);
+		}
+
+		if(b[1] != 2.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_pi2fd_01_B.d	Mon May 01 14:38:44 2006 +0000
@@ -0,0 +1,30 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_pi2fd_01_B;
+
+int main(){
+	version(D_InlineAsm_X86){
+		const int[2] A = [6, 2];
+		float[2] b;
+
+		asm{
+			pi2fd MM0, A;
+			movq b, MM0;
+		}
+
+		if(b[0] != 6.0f){
+			assert(0);
+		}
+
+		if(b[1] != 2.0f){
+			assert(0);
+		}
+
+		return 0;
+	}else{
+		pragma(msg, "no Inline asm support");
+		static assert(0);
+	}
+}