changeset 1268:93511f726375

partial review
author thomask
date Thu, 21 Dec 2006 15:12:10 +0000
parents 409746d4e240
children c99e8aac0e0c
files nocompile/a/abstract_14.d nocompile/a/alias_36_E.d nocompile/a/arrayOp_01.d nocompile/argument_03.d nocompile/argument_04.d nocompile/argument_05.d run/a/alias_31_C.d run/a/alias_31_D.d run/a/array_initialization_27_D.d run/a/asm_cmpss_01_B.d run/a/asm_comisd_01_A.d run/a/asm_comiss_01_A.d run/a/asm_cvtpd2pi_01_B.d run/a/asm_cvtpi2pd_01_A.d run/a/asm_cvtpi2ps_01_A.d run/a/asm_cvtps2pi_01_A.d run/a/asm_cvtps2pi_01_B.d run/a/asm_cvttpd2pi_01_A.d run/a/asm_cvttps2pi_01_A.d run/a/asm_divpd_01_A.d run/a/asm_divps_01_A.d run/a/asm_divsd_01_A.d run/a/asm_divss_01_A.d run/b/bug_optimize_294_A.d run/e/ExpressionStatement_10_A.d
diffstat 25 files changed, 232 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- a/nocompile/a/abstract_14.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/nocompile/a/abstract_14.d	Thu Dec 21 15:12:10 2006 +0000
@@ -8,7 +8,7 @@
 
 // :23 is tested in abstract_08
 
-// __DSTRESS_ELINE__ 16
+// __DSTRESS_ELINE__ 19
 
 module dstress.nocompile.a.abstract_14;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/a/alias_36_E.d	Thu Dec 21 15:12:10 2006 +0000
@@ -0,0 +1,24 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<h3r3tic@mat.uni.torun.pl>
+// @date@	2006-05-23
+// @uri@	news:bug-153-3@http.d.puremagic.com/bugzilla/
+
+// __DSTRESS_ELINE__ 19
+
+module dstress.nocompile.a.alias_36_E;
+
+template bar(T) {
+	void foo() {
+	}
+}
+
+alias bar!(long).foo foo;
+alias bar!(char).foo foo;
+
+void main() {
+	foo();
+}
+
--- a/nocompile/a/arrayOp_01.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/nocompile/a/arrayOp_01.d	Thu Dec 21 15:12:10 2006 +0000
@@ -6,7 +6,7 @@
 // @date@	2005-12-12
 // @uri@	news:dnjnqe$16sv$1@digitaldaemon.com
 
-// __DSTRESS_ELINE__ 14
+// __DSTRESS_ELINE__ 15
 
 module dstress.nocompile.a.arrayOp_01;
 
--- a/nocompile/argument_03.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/nocompile/argument_03.d	Thu Dec 21 15:12:10 2006 +0000
@@ -6,7 +6,7 @@
 // @uri@	news:pan.2005.02.21.10.56.53.306812@yahoo.com
 // @date@	2005-02-21
 
-// __DSTRESS_ELINE__ 15
+// __DSTRESS_ELINE__ 16
 
 module dstress.nocompile.argument_03;
 
--- a/nocompile/argument_04.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/nocompile/argument_04.d	Thu Dec 21 15:12:10 2006 +0000
@@ -6,7 +6,7 @@
 // @author@	John Reimer <brk_6502@yahoo.com>
 // @date@	2005-02-21
 
-// __DSTRESS_ELINE__ 15
+// __DSTRESS_ELINE__ 16
 
 module dstress.nocompile.argument_04;
 
--- a/nocompile/argument_05.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/nocompile/argument_05.d	Thu Dec 21 15:12:10 2006 +0000
@@ -6,7 +6,7 @@
 // @uri@	news:pan.2005.02.21.10.56.53.306812@yahoo.com
 // @date@	2005-02-21
 
-// __DSTRESS_ELINE__ 15
+// __DSTRESS_ELINE__ 16
 
 module dstress.nocompile.argument_05;
 
--- a/run/a/alias_31_C.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/alias_31_C.d	Thu Dec 21 15:12:10 2006 +0000
@@ -8,7 +8,7 @@
 
 module dstress.run.a.alias_31_C;
 
-class ClassOf(Type){
+template ClassOf(Type){
 	class ClassOf{
 		Type val;
 
--- a/run/a/alias_31_D.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/alias_31_D.d	Thu Dec 21 15:12:10 2006 +0000
@@ -8,7 +8,7 @@
 
 module dstress.run.a.alias_31_D;
 
-struct StructOf(Type){
+template StructOf(Type){
 	struct StructOf{
 		Type val;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/array_initialization_27_D.d	Thu Dec 21 15:12:10 2006 +0000
@@ -0,0 +1,25 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.array_initialization_27_D;
+
+auto a = [[1, 2], [3, 4]];
+
+int main(){
+	static if(!is(typeof(a[0][0]) == int)){
+		static assert(0);
+	}
+
+	if(a.length != 2){
+		assert(0);
+	}
+	if((a[0].length != 2) || (a[1].length != 2)){
+		assert(0);
+	}
+	if((a[0][0] != 1) || (a[0][1] != 2) || (a[1][0] != 3) || (a[1][1] != 4)){
+		assert(0);
+	}
+
+	return 0;
+}
--- a/run/a/asm_cmpss_01_B.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_cmpss_01_B.d	Thu Dec 21 15:12:10 2006 +0000
@@ -16,15 +16,15 @@
 	int main(){
 		haveSSE!()();
 
-		float* a = new float[4];
+		float* a = (new float[4]).ptr;
 		a[0] = 1.0f;
 		a[1] = 2.0f;
 		a[2] = 3.0f;
 		a[3] = 4.0f;
 		
 		float b = 1.0f;
-		uint* c = new uint[4];
-		float* f = new float[4];
+		uint* c = (new uint[4]).ptr;
+		float* f = (new float[4]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- a/run/a/asm_comisd_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_comisd_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -16,23 +16,38 @@
 	int main(){
 		haveSSE2!()();
 
-		double* a = new double[2];
+		double* a = (new double[2]).ptr;
 		a[0] = 1.0;
 		a[1] = 3.0;
 
-		double* b = new double[2];
+		double* b = (new double[2]).ptr;
 		b[0] = 4.0;
 		b[1] = 3.0;
 
-		asm{
-			mov EAX, a;
-			movupd XMM0, [EAX];
-			mov EAX, b;
-			movupd XMM1, [EAX];
-			comisd XMM0, XMM1;
-			jz error;
-			jp error;
-			jc error;
+		static if(size_t.sizeof == 4){
+			asm{
+				mov EAX, a;
+				movupd XMM0, [EAX];
+				mov EAX, b;
+				movupd XMM1, [EAX];
+				comisd XMM0, XMM1;
+				jz error;
+				jp error;
+				jc error;
+			}
+		}else static if(size_t.sizeof == 8){
+			asm{
+				mov RAX, a;
+				movupd XMM0, [RAX];
+				mov RAX, b;
+				movupd XMM1, [RAX];
+				comisd XMM0, XMM1;
+				jz error;
+				jp error;
+				jc error;
+			}
+		}else{
+			static assert(0, "unhandled pointer size");
 		}
 
 
--- a/run/a/asm_comiss_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_comiss_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -16,13 +16,13 @@
 	int main(){
 		haveSSE!()();
 
-		float* a = new float[4];
+		float* a = (new float[4]).ptr;
 		a[0] = 0.0f;
 		a[1] = 1.0f;
 		a[2] = 3.0f;
 		a[3] = 5.0f;
 
-		float* b = new float[4];
+		float* b = (new float[4]).ptr;
 		b[0] = 0.0f;
 		b[1] = 2.0f;
 		b[2] = 4.0f;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_cvtpd2pi_01_B.d	Thu Dec 21 15:12:10 2006 +0000
@@ -0,0 +1,58 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_cvtpd2pi_01_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveSSE2!()();
+		haveMMX!()();
+
+		double* a = (new double[2]).ptr;
+		a[0] = -2.0;
+		a[1] = 4.0;
+		
+		int* b = (new int[2]).ptr;
+
+		static if(size_t.sizeof == 4){
+			asm{
+				mov EAX, a;
+				cvtpd2pi MM0, [EAX];
+				mov EAX, b;
+				movq [EAX], MM0;
+				emms;
+			}
+		}else static if(size_t.sizeof == 8){
+			asm{
+				mov RAX, a;
+				cvtpd2pi MM0, [RAX];
+				mov RAX, b;
+				movq [RAX], MM0;
+				emms;
+			}
+		}else{
+			static assert(0, "unhandled pointer size");
+		}
+
+		if(b[0] != -2){
+			assert(0);
+		}
+		if(b[1] != 4){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_cvtpi2pd_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_cvtpi2pd_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -17,11 +17,11 @@
 		haveSSE2!();
 		haveMMX!();
 
-		int* a = new int[2];
+		int* a = (new int[2]).ptr;
 		a[0] = -3;
 		a[1] = 2;
 
-		double* b = new double[2];
+		double* b = (new double[2]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- a/run/a/asm_cvtpi2ps_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_cvtpi2ps_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -17,17 +17,17 @@
 		haveSSE2!();
 		haveMMX!();
 
-		int* a = new int[2];
+		int* a = (new int[2]).ptr;
 		a[0] = -3;
 		a[1] = 2;
 
-		float* b = new float[4];
+		float* b = (new float[4]).ptr;
 		b[0] = 10.1f;
 		b[1] = 20.2f;
 		b[2] = 30.3f;
 		b[3] = 40.4f;
 
-		float* c = new float[4];
+		float* c = (new float[4]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- a/run/a/asm_cvtps2pi_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_cvtps2pi_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -17,13 +17,13 @@
 		haveSSE2!();
 		haveMMX!();
 
-		float* a = new float[4];
+		float* a = (new float[4]).ptr;
 		a[0] = 1.0f;
 		a[1] = 2.0f;
 		a[2] = 3.0f;
 		a[3] = 4.0f;
 
-		int* b = new int[2];
+		int* b = (new int[2]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_cvtps2pi_01_B.d	Thu Dec 21 15:12:10 2006 +0000
@@ -0,0 +1,61 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_cvtps2pi_01_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+
+	int main(){
+		haveSSE2!();
+		haveMMX!();
+
+		float* a = (new float[4]).ptr;
+		a[0] = 1.0f;
+		a[1] = 2.0f;
+		a[2] = 3.0f;
+		a[3] = 4.0f;
+
+		int* b = (new int[2]).ptr;
+
+		static if(size_t.sizeof == 4){
+			asm{
+				mov EAX, a;
+				cvtps2pi MM0, [EAX];
+				mov EAX, b;
+				movq [EAX], MM0;
+				emms;
+			}
+		}else static if(size_t.sizeof == 8){
+			asm{
+				mov RAX, a;
+				cvtps2pi MM0, [RAX];
+				mov RAX, b;
+				movq [RAX], MM0;
+				emms;
+			}
+		}else{
+			static assert(0, "unhandled pointer size");
+		}
+
+		if(b[0] != 1){
+			assert(0);
+		}
+
+		if(b[1] != 2){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XPASS}: no inline ASM support");
+	static assert(0);
+}
--- a/run/a/asm_cvttpd2pi_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_cvttpd2pi_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -17,11 +17,11 @@
 		haveSSE2!()();
 		haveMMX!()();
 
-		double* a = new double[2];
+		double* a = (new double[2]).ptr;
 		a[0] = -2.0;
 		a[1] = 4.0;
 
-		int* b = new int[2];
+		int* b = (new int[2]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- a/run/a/asm_cvttps2pi_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_cvttps2pi_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -17,13 +17,13 @@
 		haveSSE2!();
 		haveMMX!();
 
-		float* a = new float[4];
+		float* a = (new float[4]).ptr;
 		a[0] = 1.0f;
 		a[1] = 2.0f;
 		a[2] = 3.0f;
 		a[3] = 4.0f;
 
-		int* b = new int[2];
+		int* b = (new int[2]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- a/run/a/asm_divpd_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_divpd_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -16,15 +16,15 @@
 	int main(){
 		haveSSE2!()();
 
-		double* a = new double[2];
+		double* a = (new double[2]).ptr;
 		a[0] = -16.0;
 		a[1] = 12.0;
 
-		double* b = new double[2];
+		double* b = (new double[2]).ptr;
 		b[0] = 2.0;
 		b[1] = 3.0;
 
-		double* c = new double[2];
+		double* c = (new double[2]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- a/run/a/asm_divps_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_divps_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -14,19 +14,19 @@
 	import addon.cpuinfo;
 
 	int main(){
-		float* a = new float[4];
+		float* a = (new float[4]).ptr;
 		a[0] = -16.0f;
 		a[1] = 12.0f;
 		a[2] = 3.3f;
 		a[3] = 0.0f;
 
-		float* b = new float[4];
+		float* b = (new float[4]).ptr;
 		b[0] = 2.0f;
 		b[1] = 3.0f;
 		b[2] = 1.0f;
 		b[3] = 9.7f;
 
-		float* c = new float[4];
+		float* c = (new float[4]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- a/run/a/asm_divsd_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_divsd_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -14,15 +14,15 @@
 	import addon.cpuinfo;
 
 	int main(){
-		double* a = new double[2];
+		double* a = (new double[2]).ptr;
 		a[0] = -16.0f;
 		a[1] = 12.0;
 
-		double* b = new double[2];
+		double* b = (new double[2]).ptr;
 		b[0] = 2.0f;
 		b[1] = 3.0f;
 
-		double* c = new double[2];
+		double* c = (new double[2]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- a/run/a/asm_divss_01_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/a/asm_divss_01_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -16,19 +16,19 @@
 	int main(){
 		haveSSE!()();
 
-		float* a = new float[4];
+		float* a = (new float[4]).ptr;
 		a[0] = -16.0f;
 		a[1] = 12.0f;
 		a[2] = 3.3f;
 		a[3] = 9.0f;
 
-		float* b = new float[4];
+		float* b = (new float[4]).ptr;
 		b[0] = 2.0f;
 		b[1] = 3.0f;
 		b[2] = 1.0f;
 		b[3] = 2.0f;
 
-		float* c = new float[4];
+		float* c = (new float[4]).ptr;
 
 		static if(size_t.sizeof == 4){
 			asm{
--- a/run/b/bug_optimize_294_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/b/bug_optimize_294_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -14,7 +14,7 @@
 
 int main() {
 	if ((Foo!(char)).init == (Foo!(char)).init){
-		return 1;
+		return 0;
 	}
-	return 0;
+	assert(0);
 }
--- a/run/e/ExpressionStatement_10_A.d	Thu Dec 21 15:11:54 2006 +0000
+++ b/run/e/ExpressionStatement_10_A.d	Thu Dec 21 15:12:10 2006 +0000
@@ -9,7 +9,7 @@
 	cast(void)(x + x);
 
 	if(x != 3){
-		static assert(0);
+		assert(0);
 	}
 
 	return 0;