# HG changeset patch # User thomask # Date 1167059268 0 # Node ID 23fe17e22a63701aa426918dba05040653be9538 # Parent b644bef333ffa0eb9156aea6b95588fb4ae4409e partial review diff -r b644bef333ff -r 23fe17e22a63 addon/cpuinfo.d --- a/addon/cpuinfo.d Sat Dec 23 19:47:26 2006 +0000 +++ b/addon/cpuinfo.d Mon Dec 25 15:07:48 2006 +0000 @@ -35,7 +35,9 @@ version(haveX86InlineAsm){ asm{ mov EAX, 0x8000_0001; + db 0x53; cpuid; + db 0x5B; mov a, EDX; } }else{ @@ -55,7 +57,9 @@ version(haveX86InlineAsm){ asm{ mov EAX, 1; + db 0x53; cpuid; + db 0x5B; mov a, EDX; } }else{ @@ -74,7 +78,9 @@ version(haveX86InlineAsm){ asm{ mov EAX, 1; + db 0x53; cpuid; + db 0x5B; mov a, EDX; } } @@ -91,7 +97,9 @@ version(haveX86InlineAsm){ asm{ mov EAX, 1; + db 0x53; cpuid; + db 0x5B; mov a, EDX; } }else{ @@ -111,7 +119,9 @@ version(haveX86InlineAsm){ asm{ mov EAX, 1; + db 0x53; cpuid; + db 0x5B; mov a, EDX; } }else{ @@ -131,7 +141,9 @@ version(haveX86InlineAsm){ asm{ mov EAX, 1; + db 0x53; cpuid; + db 0x5B; mov a, EDX; } }else{ @@ -151,7 +163,9 @@ version(haveX86InlineAsm){ asm{ mov EAX, 1; + db 0x53; cpuid; + db 0x5B; mov a, EDX; } }else{ @@ -172,7 +186,9 @@ version(haveX86InlineAsm){ asm{ mov EAX, a; + db 0x53; cpuid; + db 0x5B; mov b, ECX; } }else{ diff -r b644bef333ff -r 23fe17e22a63 run/d/delete_13_B.d --- a/run/d/delete_13_B.d Sat Dec 23 19:47:26 2006 +0000 +++ b/run/d/delete_13_B.d Mon Dec 25 15:07:48 2006 +0000 @@ -5,7 +5,7 @@ module dstess.run.d.delete_13_B; int main(){ - int* i = new int[3]; + int* i = (new int[3]).ptr; delete i; return 0; } diff -r b644bef333ff -r 23fe17e22a63 run/d/delete_14_A.d --- a/run/d/delete_14_A.d Sat Dec 23 19:47:26 2006 +0000 +++ b/run/d/delete_14_A.d Mon Dec 25 15:07:48 2006 +0000 @@ -10,7 +10,7 @@ class Foo{ new (size_t s){ - return new byte[s]; + return (new byte[s]).ptr; } delete(void* p){ diff -r b644bef333ff -r 23fe17e22a63 run/d/delete_14_B.d --- a/run/d/delete_14_B.d Sat Dec 23 19:47:26 2006 +0000 +++ b/run/d/delete_14_B.d Mon Dec 25 15:07:48 2006 +0000 @@ -13,7 +13,7 @@ } new (size_t s){ - return new byte[s]; + return (new byte[s]).ptr; } delete(void* p){ diff -r b644bef333ff -r 23fe17e22a63 run/d/double_27_C.d --- a/run/d/double_27_C.d Sat Dec 23 19:47:26 2006 +0000 +++ b/run/d/double_27_C.d Mon Dec 25 15:07:48 2006 +0000 @@ -19,7 +19,7 @@ int main (){ const double values[] = [0.1e-100, 1.0, -1.0, 0.0]; - if(func(values) != 0.1e-100){ + if(func(values.ptr) != 0.1e-100){ assert(0); } diff -r b644bef333ff -r 23fe17e22a63 run/d/double_27_D.d --- a/run/d/double_27_D.d Sat Dec 23 19:47:26 2006 +0000 +++ b/run/d/double_27_D.d Mon Dec 25 15:07:48 2006 +0000 @@ -19,7 +19,7 @@ int main (){ const double values[] = [double.max, 2.0, 0.5, 1.0]; - if(func(values) != double.max){ + if(func(values.ptr) != double.max){ assert(0); } diff -r b644bef333ff -r 23fe17e22a63 run/o/odd_bug_05_A.d --- a/run/o/odd_bug_05_A.d Sat Dec 23 19:47:26 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -// $HeadURL$ -// $Date$ -// $Author$ - -// @author@ -// @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); -} diff -r b644bef333ff -r 23fe17e22a63 run/o/odd_bug_05_B.d --- a/run/o/odd_bug_05_B.d Sat Dec 23 19:47:26 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -// $HeadURL$ -// $Date$ -// $Author$ - -// @author@ -// @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); -} diff -r b644bef333ff -r 23fe17e22a63 run/o/odd_bug_05_C.d --- a/run/o/odd_bug_05_C.d Sat Dec 23 19:47:26 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -// $HeadURL$ -// $Date$ -// $Author$ - -// @author@ -// @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); -} diff -r b644bef333ff -r 23fe17e22a63 run/o/odd_bug_05_D.d --- a/run/o/odd_bug_05_D.d Sat Dec 23 19:47:26 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -// $HeadURL$ -// $Date$ -// $Author$ - -// @author@ -// @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); -}