Mercurial > projects > dstress
diff run/a/asm_pshufhw_01_A.d @ 1329:1c8652b3795a
inline asm review
author | thomask |
---|---|
date | Fri, 12 Jan 2007 23:07:17 +0000 |
parents | 03c97933de98 |
children |
line wrap: on
line diff
--- a/run/a/asm_pshufhw_01_A.d Fri Jan 12 23:06:49 2007 +0000 +++ b/run/a/asm_pshufhw_01_A.d Fri Jan 12 23:07:17 2007 +0000 @@ -16,28 +16,34 @@ int main(){ haveSSE2!()(); - const short[8] A = [9, 9, 9, 9, 9, 9, 9, 9]; - const short[8] B = [1, 2, 3, 4, 5, 6, 7, 8]; + short[] A = [9, 9, 9, 9, 9, 9, 9, 9]; + short* a = A.ptr; - short[8] c; + short[] B = [1, 2, 3, 4, 5, 6, 7, 8]; + short* b = B.ptr; + + short* c = (new short[8]).ptr; asm{ - movdqu XMM0, A; - movdqu XMM1, B; + mov EAX, a; + movdqu XMM0, [EAX]; + mov EAX, b; + movdqu XMM1, [EAX]; pshufhw XMM0, XMM1, 0b11_10_01_00; - movdqu, XMM0; + mov EAX, c; + movdqu [EAX], XMM0; } - if(c[0] != 4){ + if(c[0] != 1){ assert(0); } - if(c[1] != 3){ + if(c[1] != 2){ assert(0); } - if(c[2] != 2){ + if(c[2] != 3){ assert(0); } - if(c[3] != 1){ + if(c[3] != 4){ assert(0); } if(c[4] != 5){