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 }