Mercurial > projects > dstress
changeset 1182:6e5d377573e1
fixed 64bit inline asm issues
line wrap: on
line diff
--- a/run/a/asm_packsswb_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_packsswb_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ short* b = [cast(short)9, 8, -7, 6, -5, 4, -3, 2]; byte* c = new byte[16]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - packsswb XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + packsswb XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + packsswb XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 1){
--- a/run/a/asm_packuswb_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_packuswb_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ short* b = [cast(short)9, 8, -7, 6, -5, 4, -3, 2]; byte* c = new byte[16]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - packuswb XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + packuswb XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + packuswb XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 1){
--- a/run/a/asm_paddsw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_paddsw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ short* b = [cast(short)short.max, -8, -7, -6, -5, -4, -3, -2]; short* c = new short[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - paddsw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + paddsw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + paddsw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != short.max){
--- a/run/a/asm_paddusb_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_paddusb_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ ubyte* b = [cast(ubyte)ubyte.max, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7]; ubyte* c = new ubyte[16]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - paddusb XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + paddusb XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + paddusb XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != ubyte.max){
--- a/run/a/asm_paddusw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_paddusw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ ushort* b = [cast(ushort)ushort.max, 8, 7, 6, 5, 4, 3, 2]; ushort* c = new ushort[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - paddusw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + paddusw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + paddusw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != ushort.max){
--- a/run/a/asm_paddw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_paddw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ short* b = [cast(short)-9, -8, -7, -6, -5, -4, -3, -2]; short* c = new short[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - paddw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + paddw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + paddw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != -8){
--- a/run/a/asm_pand_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pand_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -26,14 +26,28 @@ ]; ushort* c = new ushort[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pand XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pand XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pand XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != (a[0] & b[0])){
--- a/run/a/asm_pandn_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pandn_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -26,14 +26,28 @@ ]; ushort* c = new ushort[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pandn XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pandn XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pandn XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != ((a[0] ^ 0xFFFF) & b[0])){
--- a/run/a/asm_pcmpeqb_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pcmpeqb_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ byte* b = [cast(byte)1, 0, byte.min, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 16]; ubyte* c = new ubyte[16]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pcmpeqb XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pcmpeqb XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pcmpeqb XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0xFF){
--- a/run/a/asm_pcmpeqd_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pcmpeqd_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ int* b = [cast(int)0, 3, 1, 4]; uint* c = new uint[4]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pcmpeqd XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pcmpeqd XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pcmpeqd XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0xFFFF_FFFF){
--- a/run/a/asm_pcmpeqw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pcmpeqw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ short* b = [cast(short)1, 0, byte.min, -5, -4, -3, -2, 8]; ushort* c = new ushort[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pcmpeqw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pcmpeqw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pcmpeqw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0xFFFF){
--- a/run/a/asm_pcmpgtb_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pcmpgtb_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ byte* b = [cast(byte)1, 3, 2, 4, 6, 5, 7, 9, 8, 10, 12, 11, 13, 16, 15, 14]; ubyte* c = new ubyte[16]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pcmpgtb XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pcmpgtb XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pcmpgtb XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0){
--- a/run/a/asm_pcmpgtd_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pcmpgtd_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ int* b = [cast(int)0, 1, 1, 4]; uint* c = new uint[4]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pcmpgtd XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pcmpgtd XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pcmpgtd XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0){
--- a/run/a/asm_pcmpgtw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pcmpgtw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ short* b = [cast(short)1, 0, byte.min, -5, -4, -3, -2, 8]; ushort* c = new ushort[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pcmpgtw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pcmpgtw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pcmpgtw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0){
--- a/run/a/asm_pextrw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pextrw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,13 +20,26 @@ uint a; uint b; - asm{ - mov EAX, x; - movdqu XMM0, [EAX]; - pextrw EAX, XMM0, 5; - mov a, EAX; - pextrw EDX, XMM0, 1; - mov b, EDX; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, x; + movdqu XMM0, [EAX]; + pextrw EAX, XMM0, 5; + mov a, EAX; + pextrw EDX, XMM0, 1; + mov b, EDX; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, x; + movdqu XMM0, [RAX]; + pextrw EAX, XMM0, 5; + mov a, EAX; + pextrw EDX, XMM0, 1; + mov b, EDX; + } + }else{ + static assert(0, "unhandled pointer size"); } if(a != 0xFFFF){
--- a/run/a/asm_pfcmpeq_01_B.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pfcmpeq_01_B.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,15 +20,30 @@ float* b = [123.0f, 456.0f]; uint* c = new uint[2]; - asm{ - mov EAX, a; - movq MM0, [EAX]; - mov EAX, b; - movq MM1, [EAX]; - pfcmpeq MM0, MM1; - mov EAX, c; - movq [EAX], MM0; - emms; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movq MM0, [EAX]; + mov EAX, b; + movq MM1, [EAX]; + pfcmpeq MM0, MM1; + mov EAX, c; + movq [EAX], MM0; + emms; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movq MM0, [RAX]; + mov RAX, b; + movq MM1, [RAX]; + pfcmpeq MM0, MM1; + mov RAX, c; + movq [RAX], MM0; + emms; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != uint.max){
--- a/run/a/asm_pfcmpge_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pfcmpge_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ float* b = [124.0f, 456.0f]; uint* c = new uint[2]; - asm{ - mov EAX, a; - movq MM0, [EAX]; - mov EAX, b; - pfcmpge MM0, [EAX]; - mov EAX, c; - movq [EAX], MM0; - emms; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movq MM0, [EAX]; + mov EAX, b; + pfcmpge MM0, [EAX]; + mov EAX, c; + movq [EAX], MM0; + emms; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movq MM0, [RAX]; + mov RAX, b; + pfcmpge MM0, [RAX]; + mov RAX, c; + movq [RAX], MM0; + emms; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0){
--- a/run/a/asm_pfcmpge_01_B.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pfcmpge_01_B.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,15 +20,30 @@ float* b = [124.0f, 456.0f]; uint* c = new uint[2]; - asm{ - mov EAX, a; - movq MM0, [EAX]; - mov EAX, b; - movq MM1, [EAX]; - pfcmpge MM0, MM1; - mov EAX, c; - movq [EAX], MM0; - emms; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movq MM0, [EAX]; + mov EAX, b; + movq MM1, [EAX]; + pfcmpge MM0, MM1; + mov EAX, c; + movq [EAX], MM0; + emms; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movq MM0, [RAX]; + mov RAX, b; + movq MM1, [RAX]; + pfcmpge MM0, MM1; + mov RAX, c; + movq [RAX], MM0; + emms; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0){
--- a/run/a/asm_pfcmpgt_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pfcmpgt_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -21,14 +21,28 @@ float* b = [124.0f, 456.0f]; uint* c = new uint[2]; - asm{ - mov EAX, a; - movq MM0, [EAX]; - mov EAX, b; - pfcmpgt MM0, [EAX]; - mov EAX, c; - movq [EAX], MM0; - emms; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movq MM0, [EAX]; + mov EAX, b; + pfcmpgt MM0, [EAX]; + mov EAX, c; + movq [EAX], MM0; + emms; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movq MM0, [RAX]; + mov RAX, b; + pfcmpgt MM0, [RAX]; + mov RAX, c; + movq [RAX], MM0; + emms; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0){
--- a/run/a/asm_pfcmpgt_01_B.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pfcmpgt_01_B.d Thu Oct 12 15:00:43 2006 +0000 @@ -21,15 +21,30 @@ float* b = [124.0f, 456.0f]; uint* c = new uint[2]; - asm{ - mov EAX, a; - movq MM0, [EAX]; - mov EAX, b; - movq MM1, [EAX]; - pfcmpgt MM0, MM1; - mov EAX, c; - movq [EAX], MM0; - emms; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movq MM0, [EAX]; + mov EAX, b; + movq MM1, [EAX]; + pfcmpgt MM0, MM1; + mov EAX, c; + movq [EAX], MM0; + emms; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movq MM0, [RAX]; + mov RAX, b; + movq MM1, [RAX]; + pfcmpgt MM0, MM1; + mov RAX, c; + movq [RAX], MM0; + emms; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0){
--- a/run/a/asm_pinsrw_01_C.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pinsrw_01_C.d Thu Oct 12 15:00:43 2006 +0000 @@ -19,15 +19,30 @@ ushort* a = [cast(ushort)1, 2, 3, 4, 5, 0xFFFF, 7, 0]; ushort* b = new ushort[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, 0x12AB_34CD; - mov EBX, 0xFDCE_0010; - pinsrw XMM0, EAX, 0; - pinsrw XMM0, EBX, 7; - mov EAX, b; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, 0x12AB_34CD; + mov EBX, 0xFDCE_0010; + pinsrw XMM0, EAX, 0; + pinsrw XMM0, EBX, 7; + mov EAX, b; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov EAX, 0x12AB_34CD; + mov EBX, 0xFDCE_0010; + pinsrw XMM0, EAX, 0; + pinsrw XMM0, EBX, 7; + mov RAX, b; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(b[0] != 0x34CD){
--- a/run/a/asm_pinsrw_01_D.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pinsrw_01_D.d Thu Oct 12 15:00:43 2006 +0000 @@ -22,13 +22,26 @@ ushort x = 0x34CD; ushort y = 0x0010; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - pinsrw XMM0, x, 0; - pinsrw XMM0, y, 7; - mov EAX, b; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + pinsrw XMM0, x, 0; + pinsrw XMM0, y, 7; + mov EAX, b; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + pinsrw XMM0, x, 0; + pinsrw XMM0, y, 7; + mov RAX, b; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(b[0] != 0x34CD){
--- a/run/a/asm_pmaxsw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pmaxsw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -21,14 +21,28 @@ short* b = [cast(short)-9, 10, -11, -12, 13, 14, 0xFFF, 1]; short* c = new short[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pmaxsw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pmaxsw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pmaxsw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 1){
--- a/run/a/asm_pmaxub_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pmaxub_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ ubyte* b = [cast(ubyte)15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 17]; ubyte* c = new ubyte[16]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pmaxub XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pmaxub XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pmaxub XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 15){
--- a/run/a/asm_pminsub_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pminsub_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ ubyte* b = [cast(ubyte) 1, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 17]; ubyte* c = new ubyte[16]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pminub XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pminub XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pminub XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 1){
--- a/run/a/asm_pminsw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pminsw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -20,14 +20,28 @@ short* b = [cast(short)-9, 10, -11, -12, 13, 14, 0xFFF, 1]; short* c = new short[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pminsw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pminsw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pminsw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != -9){
--- a/run/a/asm_pmulhuw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pmulhuw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -21,14 +21,28 @@ ushort* c = new ushort[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pmulhuw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pmulhuw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pmulhuw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0){
--- a/run/a/asm_pmulhw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pmulhw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -21,14 +21,28 @@ ushort* c = new ushort[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pmulhw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pmulhw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pmulhw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0xFFFF){
--- a/run/a/asm_pmullw_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pmullw_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -21,14 +21,28 @@ ushort* c = new ushort[8]; - asm{ - mov EAX, a; - movdqu XMM0, [EAX]; - mov EAX, b; - movdqu XMM1, [EAX]; - pmullw XMM0, XMM1; - mov EAX, c; - movdqu [EAX], XMM0; + static if(size_t.sizeof == 4){ + asm{ + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; + pmullw XMM0, XMM1; + mov EAX, c; + movdqu [EAX], XMM0; + } + }else static if(size_t.sizeof == 8){ + asm{ + mov RAX, a; + movdqu XMM0, [RAX]; + mov RAX, b; + movdqu XMM1, [RAX]; + pmullw XMM0, XMM1; + mov RAX, c; + movdqu [RAX], XMM0; + } + }else{ + static assert(0, "unhandled pointer size"); } if(c[0] != 0xFFFE){
--- a/run/a/asm_pshufd_01_A.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_pshufd_01_A.d Thu Oct 12 15:00:43 2006 +0000 @@ -16,28 +16,31 @@ int main(){ haveSSE2!()(); - const float[4] A = [1.0f, 2.0f, 3.0f, 4.0f]; - const float[4] B = [5.0f, 6.0f, 7.0f, 8.0f]; + float* a = [1.0f, 2.0f, 3.0f, 4.0f]; + float* b = [5.0f, 6.0f, 7.0f, 8.0f]; - float[4] c; + float* c = new float[4]; asm{ - movups XMM0, A; - movups XMM1, B; + mov EAX, a; + movups XMM0, [EAX]; + mov EAX, b; + movups XMM1, [EAX]; pshufd XMM0, XMM1, 0b01_01_00_10; - movups c, XMM0; + mov EAX, c; + movups [EAX], XMM0; } - if(c[0] != 6.0f){ + if(c[0] != 7.0f){ assert(0); } - if(c[1] != 6.0f){ + if(c[1] != 5.0f){ assert(0); } - if(c[2] != 5.0f){ + if(c[2] != 6.0f){ assert(0); } - if(c[3] != 7.0f){ + if(c[3] != 6.0f){ assert(0); }
--- a/run/a/asm_rdtsc_01.d Fri Oct 06 06:57:24 2006 +0000 +++ b/run/a/asm_rdtsc_01.d Thu Oct 12 15:00:43 2006 +0000 @@ -4,8 +4,14 @@ module dstress.run.a.asm_rdtsc_01; -int main(){ - version(D_InlineAsm){ +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +} + +version(runTest){ + int main(){ uint a1, a2; uint b1, b2; @@ -35,8 +41,8 @@ } return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); } -} \ No newline at end of file +}else{ + pragma(msg, "DSTRESS{XPASS}: no inline ASM support"); + static assert(0); +}