Mercurial > projects > dstress
changeset 1495:7a686112b047
[Issue 1172] Inline assembler: cannot access member of templated aggregate directly
Matti Niemenmaa <deewiant@gmail.com>
2007-04-21
http://d.puremagic.com/issues/show_bug.cgi?id=1172
author | thomask |
---|---|
date | Mon, 23 Apr 2007 17:54:56 +0000 |
parents | f39a9d671323 |
children | 64151e92e113 |
files | run/a/asm_04_A.d run/a/asm_04_B.d run/a/asm_04_C.d run/a/asm_04_D.d |
diffstat | 4 files changed, 176 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_04_A.d Mon Apr 23 17:54:56 2007 +0000 @@ -0,0 +1,43 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Matti Niemenmaa <deewiant@gmail.com> +// @date@ 2007-04-21 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1172 +// @desc@ [Issue 1172] Inline assembler: cannot access member of templated aggregate directly + +module dstress.run.a.asm_04_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline ASM support"); +} + +version(runTest){ + struct Foo(T){ + int a; + } + + int main(){ + int bar; + + Foo!(int) foo; + foo.a = 0xFEDC_BA09; + + asm{ + lea EAX, foo; + mov ECX, Foo!(int).a[EAX]; + mov bar, ECX; + } + + if(0xFEDC_BA09 != bar){ + assert(0); + } + + return 0; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_04_B.d Mon Apr 23 17:54:56 2007 +0000 @@ -0,0 +1,45 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Matti Niemenmaa <deewiant@gmail.com> +// @date@ 2007-04-21 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1172 +// @desc@ [Issue 1172] Inline assembler: cannot access member of templated aggregate directly + +module dstress.run.a.asm_04_B; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline ASM support"); +} + +version(runTest){ + struct Foo(T){ + int a; + } + + alias Foo!(int) X; + + int main(){ + int bar; + + X foo; + foo.a = 0xFEDC_BA09; + + asm{ + lea EAX, foo; + mov ECX, X.a[EAX]; + mov bar, ECX; + } + + if(0xFEDC_BA09 != bar){ + assert(0); + } + + return 0; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_04_C.d Mon Apr 23 17:54:56 2007 +0000 @@ -0,0 +1,45 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Matti Niemenmaa <deewiant@gmail.com> +// @date@ 2007-04-21 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1172 +// @desc@ [Issue 1172] Inline assembler: cannot access member of templated aggregate directly + +module dstress.run.a.asm_04_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline ASM support"); +} + +version(runTest){ + union Foo(T){ + int a; + } + + alias Foo!(int) X; + + int main(){ + int bar; + + X foo; + foo.a = 0xFEDC_BA09; + + asm{ + lea EAX, foo; + mov ECX, X.a[EAX]; + mov bar, ECX; + } + + if(0xFEDC_BA09 != bar){ + assert(0); + } + + return 0; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_04_D.d Mon Apr 23 17:54:56 2007 +0000 @@ -0,0 +1,43 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Matti Niemenmaa <deewiant@gmail.com> +// @date@ 2007-04-21 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1172 +// @desc@ [Issue 1172] Inline assembler: cannot access member of templated aggregate directly + +module dstress.run.a.asm_04_D; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline ASM support"); +} + +version(runTest){ + union Foo(T){ + int a; + } + + int main(){ + int bar; + + Foo!(int) foo; + foo.a = 0xFEDC_BA09; + + asm{ + lea EAX, foo; + mov ECX, Foo!(int).a[EAX]; + mov bar, ECX; + } + + if(0xFEDC_BA09 != bar){ + assert(0); + } + + return 0; + } +}