comparison 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
comparison
equal deleted inserted replaced
1328:288d15cd3b95 1329:1c8652b3795a
14 import addon.cpuinfo; 14 import addon.cpuinfo;
15 15
16 int main(){ 16 int main(){
17 haveSSE2!()(); 17 haveSSE2!()();
18 18
19 const short[8] A = [9, 9, 9, 9, 9, 9, 9, 9]; 19 short[] A = [9, 9, 9, 9, 9, 9, 9, 9];
20 const short[8] B = [1, 2, 3, 4, 5, 6, 7, 8]; 20 short* a = A.ptr;
21 21
22 short[8] c; 22 short[] B = [1, 2, 3, 4, 5, 6, 7, 8];
23 short* b = B.ptr;
24
25 short* c = (new short[8]).ptr;
23 26
24 asm{ 27 asm{
25 movdqu XMM0, A; 28 mov EAX, a;
26 movdqu XMM1, B; 29 movdqu XMM0, [EAX];
30 mov EAX, b;
31 movdqu XMM1, [EAX];
27 pshufhw XMM0, XMM1, 0b11_10_01_00; 32 pshufhw XMM0, XMM1, 0b11_10_01_00;
28 movdqu, XMM0; 33 mov EAX, c;
34 movdqu [EAX], XMM0;
29 } 35 }
30 36
31 if(c[0] != 4){ 37 if(c[0] != 1){
32 assert(0); 38 assert(0);
33 } 39 }
34 if(c[1] != 3){ 40 if(c[1] != 2){
35 assert(0); 41 assert(0);
36 } 42 }
37 if(c[2] != 2){ 43 if(c[2] != 3){
38 assert(0); 44 assert(0);
39 } 45 }
40 if(c[3] != 1){ 46 if(c[3] != 4){
41 assert(0); 47 assert(0);
42 } 48 }
43 if(c[4] != 5){ 49 if(c[4] != 5){
44 assert(0); 50 assert(0);
45 } 51 }