Mercurial > projects > dstress
annotate run/creal_15.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 | 56d43974b468 |
children |
rev | line source |
---|---|
374 | 1 // $HeadURL$ |
2 // $Date$ | |
3 // $Author$ | |
4 | |
95 | 5 module dstress.run.creal_15; |
6 | |
1602
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
7 bool isIdentical(real x, real y) |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
8 { |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
9 long* x64 = cast(long*)&x; |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
10 long* y64 = cast(long*)&y; |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
11 ushort* x16 = cast(ushort*)&x + 4; |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
12 ushort* y16 = cast(ushort*)&y + 4; |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
13 return *x64 == *y64 && *x16 == *y16; |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
14 } |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
15 |
95 | 16 int main(){ |
528 | 17 creal a = creal.nan; |
18 creal b; | |
19 | |
20 b = real.nan + ireal.nan; | |
1602
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
21 assert(isIdentical(a.re, b.re)); |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
22 assert(isIdentical(a.im, b.im)); |
528 | 23 |
1602
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
24 real c = real.nan; |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
25 |
528 | 26 real d=a.re; |
1602
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
27 assert(isIdentical(c, d)); |
528 | 28 |
29 d=a.im; | |
1602
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
30 assert(isIdentical(c, d)); |
56d43974b468
Fix broken tests fvbommel pointed out in #2.
Christian Kamm <kamm incasoftware de>
parents:
920
diff
changeset
|
31 |
95 | 32 return 0; |
33 } |