Mercurial > projects > dstress
annotate run/a/asm_movntpd_01_A.d @ 1630:d0efa3ae5522 default tip
run/mini/naked_asm5: New x86_64 ABI passes the arguments in reverse order.
author | David Nadlinger <code@klickverbot.at> |
---|---|
date | Sat, 23 Apr 2011 22:57:32 +0200 |
parents | 236f0d02b8b9 |
children |
rev | line source |
---|---|
983
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
1 // $HeadURL$ |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
2 // $Date$ |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
3 // $Author$ |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
4 |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
5 module dstress.run.a.asm_movntpd_01_A; |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
6 |
1002 | 7 version(D_InlineAsm_X86){ |
8 version = runTest; | |
9 }else version(D_InlineAsm_X86_64){ | |
10 version = runTest; | |
11 } | |
12 | |
13 version(runTest){ | |
14 import addon.cpuinfo; | |
1044 | 15 |
1002 | 16 int main(){ |
17 haveSSE2!()(); | |
18 | |
1265 | 19 double* a = (new double[2]).ptr; |
1071 | 20 a[0] = 1.0; |
21 a[1] = -1.0; | |
22 | |
1265 | 23 double* b = (aligned_new!(double)(2, 16)).ptr; |
1044 | 24 |
1265 | 25 static if(size_t.sizeof == 4){ |
26 asm{ | |
27 mov EAX, a; | |
28 movupd XMM0, [EAX]; | |
29 mov EAX, b; | |
30 movntpd [EAX], XMM0; | |
31 sfence; | |
32 } | |
33 }else static if(size_t.sizeof == 8){ | |
34 asm{ | |
35 mov RAX, a; | |
36 movupd XMM0, [RAX]; | |
37 mov RAX, b; | |
38 movntpd [RAX], XMM0; | |
39 sfence; | |
40 } | |
41 }else{ | |
42 static assert(0, "unhandled pointer size"); | |
983
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
43 } |
1044 | 44 |
983
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
45 if(a[0] != b[0]){ |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
46 assert(0); |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
47 } |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
48 if(a[1] != b[1]){ |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
49 assert(0); |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
50 } |
1044 | 51 |
983
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
52 return 0; |
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
53 } |
1002 | 54 }else{ |
55 pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); | |
56 static assert(0); | |
983
642e3fea11a9
extended SSE tests - most of them are broken, see http://d.puremagic.com/bugzilla/show_bug.cgi?id=115
thomask
parents:
diff
changeset
|
57 } |