Mercurial > projects > dstress
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); +}