Mercurial > projects > dstress
comparison run/a/asm_pf2id_01_B.d @ 1285:229e630d4b1a
partuial inline asm review
author | thomask |
---|---|
date | Tue, 26 Dec 2006 14:21:37 +0000 |
parents | 9dcac8d4e97f |
children | 7a397590d6e0 |
comparison
equal
deleted
inserted
replaced
1284:96e7be832c35 | 1285:229e630d4b1a |
---|---|
14 import addon.cpuinfo; | 14 import addon.cpuinfo; |
15 | 15 |
16 int main(){ | 16 int main(){ |
17 have3DNow!()(); | 17 have3DNow!()(); |
18 | 18 |
19 float[] a = new float[2]; | 19 float* a = (new float[2]).ptr; |
20 a[0] = 123.0f; | 20 a[0] = 123.0f; |
21 a[1] = -456.0f; | 21 a[1] = -456.0f; |
22 | 22 |
23 int[] b = new int[2]; | 23 int* b = (new int[2]).ptr; |
24 | 24 |
25 asm{ | 25 static if(size_t.sizeof == 4){ |
26 movq MM1, a; | 26 asm{ |
27 pf2id MM0, MM1; | 27 mov EAX, a; |
28 movq b, MM0; | 28 movq MM1, [EAX]; |
29 emms; | 29 pf2id MM0, MM1; |
30 mov EAX, b; | |
31 movq [EAX], MM0; | |
32 emms; | |
33 } | |
34 }else static if(size_t.sizeof == 8){ | |
35 asm{ | |
36 mov RAX, a; | |
37 movq MM1, [RAX]; | |
38 pf2id MM0, MM1; | |
39 mov RAX, b; | |
40 movq [RAX], MM0; | |
41 emms; | |
42 } | |
43 }else{ | |
44 static assert(0, "unhandled pointer size"); | |
30 } | 45 } |
31 | 46 |
32 if(b[0] != a[0]){ | 47 if(b[0] != a[0]){ |
33 assert(0); | 48 assert(0); |
34 } | 49 } |