# HG changeset patch # User thomask # Date 1166713930 0 # Node ID 93511f726375d95a4bac70143bf437fe45afd6f1 # Parent 409746d4e24025e460355881f44ac4112e2fffa8 partial review diff -r 409746d4e240 -r 93511f726375 nocompile/a/abstract_14.d --- 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; diff -r 409746d4e240 -r 93511f726375 nocompile/a/alias_36_E.d --- /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@ +// @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(); +} + diff -r 409746d4e240 -r 93511f726375 nocompile/a/arrayOp_01.d --- 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; diff -r 409746d4e240 -r 93511f726375 nocompile/argument_03.d --- 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; diff -r 409746d4e240 -r 93511f726375 nocompile/argument_04.d --- 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 // @date@ 2005-02-21 -// __DSTRESS_ELINE__ 15 +// __DSTRESS_ELINE__ 16 module dstress.nocompile.argument_04; diff -r 409746d4e240 -r 93511f726375 nocompile/argument_05.d --- 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; diff -r 409746d4e240 -r 93511f726375 run/a/alias_31_C.d --- 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; diff -r 409746d4e240 -r 93511f726375 run/a/alias_31_D.d --- 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; diff -r 409746d4e240 -r 93511f726375 run/a/array_initialization_27_D.d --- /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; +} diff -r 409746d4e240 -r 93511f726375 run/a/asm_cmpss_01_B.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/a/asm_comisd_01_A.d --- 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"); } diff -r 409746d4e240 -r 93511f726375 run/a/asm_comiss_01_A.d --- 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; diff -r 409746d4e240 -r 93511f726375 run/a/asm_cvtpd2pi_01_B.d --- /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); +} diff -r 409746d4e240 -r 93511f726375 run/a/asm_cvtpi2pd_01_A.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/a/asm_cvtpi2ps_01_A.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/a/asm_cvtps2pi_01_A.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/a/asm_cvtps2pi_01_B.d --- /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); +} diff -r 409746d4e240 -r 93511f726375 run/a/asm_cvttpd2pi_01_A.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/a/asm_cvttps2pi_01_A.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/a/asm_divpd_01_A.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/a/asm_divps_01_A.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/a/asm_divsd_01_A.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/a/asm_divss_01_A.d --- 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{ diff -r 409746d4e240 -r 93511f726375 run/b/bug_optimize_294_A.d --- 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); } diff -r 409746d4e240 -r 93511f726375 run/e/ExpressionStatement_10_A.d --- 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;