annotate tango.patch @ 1083:c1e9f612e2e2

Fix for dual operand form of fistp, also make reg ST(0) explicit and fix lindquists previous code that allowed dual operand form of fstp but dissallowed the single operand form accidently
author Kelly Wilson <wilsonk cpsc.ucalgary.ca>
date Tue, 10 Mar 2009 06:23:26 -0600
parents 5710440ea420
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1079
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
1 Index: tango/tango/math/Math.d
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
2 ===================================================================
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
3 --- tango/tango/math/Math.d (revision 4388)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
4 +++ tango/tango/math/Math.d (working copy)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
5 @@ -80,13 +80,9 @@
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
6 } else version(D_InlineAsm_X86) {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
7 version = Naked_D_InlineAsm_X86;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
8 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
9 -else version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
10 +version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
11 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
12 import ldc.intrinsics;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
13 - version(X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
14 - {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
15 - version = LDC_X86;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
16 - }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
17 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
18
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
19 /*
1081
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
20 @@ -312,28 +308,14 @@
1079
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
21 * Results are undefined if |x| >= $(POWER 2,64).
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
22 */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
23
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
24 -version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
25 +real cos(real x) /* intrinsic */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
26 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
27 - alias llvm_cos_f32 cos;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
28 - alias llvm_cos_f64 cos;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
29 - version(X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
30 + version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
31 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
32 - alias llvm_cos_f80 cos;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
33 + return llvm_cos(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
34 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
35 - else
1081
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
36 + else version(D_InlineAsm_X86)
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
37 {
1079
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
38 - real cos(real x)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
39 - {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
40 - return tango.stdc.math.cosl(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
41 - }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
42 - }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
43 -}
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
44 -else
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
45 -{
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
46 -real cos(real x) /* intrinsic */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
47 -{
1081
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
48 - version(D_InlineAsm_X86)
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
49 - {
1079
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
50 asm
1081
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
51 {
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
52 fld x;
1079
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
53 @@ -345,7 +327,6 @@
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
54 return tango.stdc.math.cosl(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
55 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
56 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
57 -}
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
58
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
59 debug(UnitTest) {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
60 unittest {
1081
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
61 @@ -366,28 +347,14 @@
1079
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
62 * Bugs:
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
63 * Results are undefined if |x| >= $(POWER 2,64).
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
64 */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
65 -version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
66 +real sin(real x) /* intrinsic */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
67 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
68 - alias llvm_sin_f32 sin;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
69 - alias llvm_sin_f64 sin;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
70 - version(X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
71 + version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
72 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
73 - alias llvm_sin_f80 sin;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
74 + return llvm_sin(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
75 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
76 - else
1081
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
77 + else version(D_InlineAsm_X86)
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
78 {
1079
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
79 - real sin(real x)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
80 - {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
81 - return tango.stdc.math.sinl(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
82 - }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
83 - }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
84 -}
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
85 -else
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
86 -{
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
87 -real sin(real x) /* intrinsic */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
88 -{
1081
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
89 - version(D_InlineAsm_X86)
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
90 - {
1079
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
91 asm
1081
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
92 {
5710440ea420 Oops, had some unsaved changes
Frits van Bommel <fvbommel wxs.nl>
parents: 1079
diff changeset
93 fld x;
1079
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
94 @@ -399,7 +366,6 @@
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
95 return tango.stdc.math.sinl(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
96 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
97 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
98 -}
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
99
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
100 debug(UnitTest) {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
101 unittest {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
102 @@ -999,29 +965,14 @@
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
103 * $(TR $(TD +$(INFIN)) $(TD +$(INFIN)) $(TD no))
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
104 * )
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
105 */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
106 -version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
107 +float sqrt(float x) /* intrinsic */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
108 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
109 - alias llvm_sqrt_f32 sqrt;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
110 - alias llvm_sqrt_f64 sqrt;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
111 - version(X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
112 + version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
113 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
114 - alias llvm_sqrt_f80 sqrt;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
115 + return llvm_sqrt(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
116 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
117 - else
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
118 + else version(D_InlineAsm_X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
119 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
120 - real sqrt(real x)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
121 - {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
122 - return tango.stdc.math.sqrtl(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
123 - }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
124 - }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
125 -}
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
126 -else
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
127 -{
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
128 -
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
129 -float sqrt(float x) /* intrinsic */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
130 -{
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
131 - version(D_InlineAsm_X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
132 - {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
133 asm
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
134 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
135 fld x;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
136 @@ -1036,8 +987,12 @@
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
137
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
138 double sqrt(double x) /* intrinsic */ /// ditto
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
139 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
140 - version(D_InlineAsm_X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
141 + version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
142 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
143 + return llvm_sqrt(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
144 + }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
145 + else version(D_InlineAsm_X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
146 + {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
147 asm
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
148 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
149 fld x;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
150 @@ -1052,8 +1007,12 @@
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
151
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
152 real sqrt(real x) /* intrinsic */ /// ditto
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
153 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
154 - version(D_InlineAsm_X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
155 + version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
156 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
157 + return llvm_sqrt(x);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
158 + }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
159 + else version(D_InlineAsm_X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
160 + {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
161 asm
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
162 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
163 fld x;
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
164 @@ -1066,8 +1025,6 @@
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
165 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
166 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
167
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
168 -}
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
169 -
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
170 /** ditto */
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
171 creal sqrt(creal z)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
172 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
173 @@ -1714,9 +1671,9 @@
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
174 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
175 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
176 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
177 - version(LDC_X86)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
178 + version(LDC)
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
179 {
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
180 - return llvm_pow_f80(x, y);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
181 + return llvm_pow(x, y);
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
182 }
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
183 else
4e388d9d0e25 Intrinsics overhaul:
Frits van Bommel <fvbommel wxs.nl>
parents:
diff changeset
184 {