|
40 | 40 | [<=.f32 #:spec (<= x y) #:impl <= #:cost 32bit-move-cost] |
41 | 41 | [>=.f32 #:spec (>= x y) #:impl >= #:cost 32bit-move-cost]) |
42 | 42 |
|
43 | | -(define-operations () <binary32> #:fpcore (:precision binary32) |
| 43 | +(define-operations () <binary32> #:fpcore (! :precision binary32 _) |
44 | 44 | [PI.f32 #:spec (PI) #:impl (const (flsingle pi)) #:fpcore PI #:cost 32bit-move-cost] |
45 | 45 | [E.f32 #:spec (E) #:impl (const (flsingle (exp 1))) #:fpcore E #:cost 32bit-move-cost] |
46 | 46 | [INFINITY.f32 #:spec (INFINITY) #:impl (const +inf.0) #:fpcore INFINITY #:cost 32bit-move-cost] |
|
50 | 50 | #:spec (neg x) #:impl (compose flsingle -) |
51 | 51 | #:fpcore (! :precision binary32 (- x)) #:cost 0.125) |
52 | 52 |
|
53 | | -(define-operations ([x <binary32>] [y <binary32>]) <binary32> #:fpcore (:precision binary32) |
| 53 | +(define-operations ([x <binary32>] [y <binary32>]) <binary32> #:fpcore (! :precision binary32 _) |
54 | 54 | [+.f32 #:spec (+ x y) #:impl (compose flsingle +) #:cost 0.200] |
55 | 55 | [-.f32 #:spec (- x y) #:impl (compose flsingle -) #:cost 0.200] |
56 | 56 | [*.f32 #:spec (* x y) #:impl (compose flsingle *) #:cost 0.250] |
57 | 57 | [/.f32 #:spec (/ x y) #:impl (compose flsingle /) #:cost 0.350]) |
58 | 58 |
|
59 | | -(define-operations ([x <binary32>]) <binary32> #:fpcore (:precision binary32) |
| 59 | +(define-operations ([x <binary32>]) <binary32> #:fpcore (! :precision binary32 _) |
60 | 60 | [fabs.f32 #:spec (fabs x) #:impl (from-libm 'fabsf) #:cost 0.125] |
61 | 61 | [sin.f32 #:spec (sin x) #:impl (from-libm 'sinf) #:cost 4.250] |
62 | 62 | [cos.f32 #:spec (cos x) #:impl (from-libm 'cosf) #:cost 4.250] |
|
87 | 87 | [tgamma.f32 #:spec (tgamma x) #:impl (from-libm 'tgammaf) #:cost 2.625] |
88 | 88 | [trunc.f32 #:spec (trunc x) #:impl (from-libm 'truncf) #:cost 0.275]) |
89 | 89 |
|
90 | | -(define-operations ([x <binary32>] [y <binary32>]) <binary32> #:fpcore (:precision binary32) |
| 90 | +(define-operations ([x <binary32>] [y <binary32>]) <binary32> #:fpcore (! :precision binary32 _) |
91 | 91 | [pow.f32 #:spec (pow x y) #:impl (from-libm 'powf) #:cost 2.000] |
92 | 92 | [atan2.f32 #:spec (atan2 x y) #:impl (from-libm 'atan2f) #:cost 2.000] |
93 | 93 | [copysign.f32 #:spec (copysign x y) #:impl (from-libm 'copysignf) #:cost 0.200] |
|
97 | 97 | [fmod.f32 #:spec (fmod x y) #:impl (from-libm 'fmodf) #:cost 1.750] |
98 | 98 | [remainder.f32 #:spec (remainder x y) #:impl (from-libm 'remainderf) #:cost 1.000]) |
99 | 99 |
|
100 | | -(define-operations ([x <binary32>]) <binary32> #:fpcore (:precision binary32) |
| 100 | +(define-operations ([x <binary32>]) <binary32> #:fpcore (! :precision binary32 _) |
101 | 101 | [erfc.f32 #:spec (- 1 (erf x)) #:impl (from-libm 'erfcf) #:fpcore (erfc x) #:cost 0.900] |
102 | 102 | [expm1.f32 #:spec (- (exp x) 1) #:impl (from-libm 'expm1f) #:fpcore (expm1 x) #:cost 0.900] |
103 | 103 | [log1p.f32 #:spec (log (+ 1 x)) #:impl (from-libm 'log1pf) #:fpcore (log1p x) #:cost 1.300]) |
|
126 | 126 | [<=.f64 #:spec (<= x y) #:impl <= #:cost 64bit-move-cost] |
127 | 127 | [>=.f64 #:spec (>= x y) #:impl >= #:cost 64bit-move-cost]) |
128 | 128 |
|
129 | | -(define-operations () <binary64> #:fpcore (:precision binary64) |
| 129 | +(define-operations () <binary64> #:fpcore (! :precision binary64 _) |
130 | 130 | [PI.f64 #:spec (PI) #:impl (const pi) #:fpcore PI #:cost 64bit-move-cost] |
131 | 131 | [E.f64 #:spec (E) #:impl (const (exp 1)) #:fpcore E #:cost 64bit-move-cost] |
132 | 132 | [INFINITY #:spec (INFINITY) #:impl (const +inf.0) #:fpcore INFINITY #:cost 64bit-move-cost] |
|
135 | 135 | (define-operation (neg.f64 [x <binary64>]) <binary64> |
136 | 136 | #:spec (neg x) #:impl - #:fpcore (! :precision binary64 (- x)) #:cost 0.125) |
137 | 137 |
|
138 | | -(define-operations ([x <binary64>] [y <binary64>]) <binary64> #:fpcore (:precision binary64) |
| 138 | +(define-operations ([x <binary64>] [y <binary64>]) <binary64> #:fpcore (! :precision binary64 _) |
139 | 139 | [+.f64 #:spec (+ x y) #:impl + #:cost 0.200] |
140 | 140 | [-.f64 #:spec (- x y) #:impl - #:cost 0.200] |
141 | 141 | [*.f64 #:spec (* x y) #:impl * #:cost 0.250] |
142 | 142 | [/.f64 #:spec (/ x y) #:impl / #:cost 0.350]) |
143 | 143 |
|
144 | | -(define-operations ([x <binary64>]) <binary64> #:fpcore (:precision binary64) |
| 144 | +(define-operations ([x <binary64>]) <binary64> #:fpcore (! :precision binary64 _) |
145 | 145 | [fabs.f64 #:spec (fabs x) #:impl (from-libm 'fabs) #:cost 0.125] |
146 | 146 | [sin.f64 #:spec (sin x) #:impl (from-libm 'sin) #:cost 4.200] |
147 | 147 | [cos.f64 #:spec (cos x) #:impl (from-libm 'cos) #:cost 4.200] |
|
172 | 172 | [tgamma.f64 #:spec (tgamma x) #:impl (from-libm 'tgamma) #:cost 2.625] |
173 | 173 | [trunc.f64 #:spec (trunc x) #:impl (from-libm 'trunc) #:cost 0.250]) |
174 | 174 |
|
175 | | -(define-operations ([x <binary64>] [y <binary64>]) <binary64> #:fpcore (:precision binary64) |
| 175 | +(define-operations ([x <binary64>] [y <binary64>]) <binary64> #:fpcore (! :precision binary64 _) |
176 | 176 | [pow.f64 #:spec (pow x y) #:impl (from-libm 'pow) #:cost 2.000] |
177 | 177 | [atan2.f64 #:spec (atan2 x y) #:impl (from-libm 'atan2) #:cost 2.000] |
178 | 178 | [copysign.f64 #:spec (copysign x y) #:impl (from-libm 'copysign) #:cost 0.200] |
|
182 | 182 | [fmod.f64 #:spec (fmod x y) #:impl (from-libm 'fmod) #:cost 1.750] |
183 | 183 | [remainder.f64 #:spec (remainder x y) #:impl (from-libm 'remainder) #:cost 1.000]) |
184 | 184 |
|
185 | | -(define-operations ([x <binary64>]) <binary64> #:fpcore (:precision binary64) |
| 185 | +(define-operations ([x <binary64>]) <binary64> #:fpcore (! :precision binary64 _) |
186 | 186 | [erfc.f64 #:spec (- 1 (erf x)) #:impl (from-libm 'erfc) #:fpcore (erfc x) #:cost 0.900] |
187 | 187 | [expm1.f64 #:spec (- (exp x) 1) #:impl (from-libm 'expm1) #:fpcore (expm1 x) #:cost 0.900] |
188 | 188 | [log1p.f64 #:spec (log (+ 1 x)) #:impl (from-libm 'log1p) #:fpcore (log1p x) #:cost 1.300]) |
|
0 commit comments