Mercurial > projects > dstress
comparison run/a/asm_pf2id_01_A.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 pf2id MM0, a; | 26 asm{ |
27 movq b, MM0; | 27 mov EAX, a; |
28 emms; | 28 pf2id MM0, [EAX]; |
29 mov EAX, b; | |
30 movq [EAX], MM0; | |
31 emms; | |
32 } | |
33 }else static if(size_t.sizeof == 8){ | |
34 asm{ | |
35 mov RAX, a; | |
36 pf2id MM0, [RAX]; | |
37 mov RAX, b; | |
38 movq [RAX], MM0; | |
39 emms; | |
40 } | |
41 }else{ | |
42 static assert(0, "unhandled pointer size"); | |
29 } | 43 } |
30 | 44 |
31 if(b[0] != a[0]){ | 45 if(b[0] != a[0]){ |
32 assert(0); | 46 assert(0); |
33 } | 47 } |