|
43 | 43 | [INFINITY.f32 #:spec (INFINITY) #:impl (const +inf.0) #:fpcore INFINITY #:cost 32bit-move-cost] |
44 | 44 | [NAN.f32 #:spec (NAN) #:impl (const +nan.0) #:fpcore NAN #:cost 32bit-move-cost]) |
45 | 45 |
|
46 | | -(define-operations ([x <binary32>]) <binary32> #:fpcore (:precision binary32) |
47 | | - [neg.f32 #:spec (neg x) #:impl (compose flsingle -) #:fpcore (- x) #:cost 0.125]) |
| 46 | +(define-operation (neg.f32 [x <binary32>]) <binary32> |
| 47 | + #:spec (neg x) #:impl (compose flsingle -) |
| 48 | + #:fpcore (! :precision binary32 (- x)) #:cost 0.125) |
48 | 49 |
|
49 | 50 | (define-operations ([x <binary32>] [y <binary32>]) <binary32> #:fpcore (:precision binary32) |
50 | 51 | [+.f32 #:spec (+ x y) #:impl (compose flsingle +) #:cost 0.200] |
|
98 | 99 | [expm1.f32 #:spec (- (exp x) 1) #:impl (from-libm 'expm1f) #:fpcore (expm1 x) #:cost 0.900] |
99 | 100 | [log1p.f32 #:spec (log (+ 1 x)) #:impl (from-libm 'log1pf) #:fpcore (log1p x) #:cost 1.300]) |
100 | 101 |
|
101 | | -(define-operations ([x <binary32>] [y <binary32>]) <binary32> #:fpcore (:precision binary32) |
102 | | - [hypot.f32 #:spec (sqrt (+ (* x x) (* y y))) #:impl (from-libm 'hypotf) #:fpcore (hypot x y) #:cost 1.700]) |
| 102 | +(define-operation (hypot.f32 [x <binary32>] [y <binary32>]) <binary32> |
| 103 | + #:spec (sqrt (+ (* x x) (* y y))) #:impl (from-libm 'hypotf) |
| 104 | + #:fpcore (! :precision binary32 (hypot x y)) #:cost 1.700) |
103 | 105 |
|
104 | | -(define-operations ([x <binary32>] [y <binary32>] [z <binary32>]) <binary32> #:fpcore (:precision binary32) |
105 | | - [fma.f32 #:spec (+ (* x y) z) #:impl (from-libm 'fmaf) #:fpcore (fma x y z) #:cost 0.375]) |
| 106 | +(define-operation (fma.f32 [x <binary32>] [y <binary32>] [z <binary32>]) <binary32> |
| 107 | + #:spec (+ (* x y) z) #:impl (from-libm 'fmaf) |
| 108 | + #:fpcore (! :precision binary32 (fma x y z)) #:cost 0.375) |
106 | 109 |
|
107 | 110 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BINARY 64 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
108 | 111 |
|
|
122 | 125 | [INFINITY #:spec (INFINITY) #:impl (const +inf.0) #:fpcore INFINITY #:cost 64bit-move-cost] |
123 | 126 | [NAN.f64 #:spec (NAN) #:impl (const +nan.0) #:fpcore NAN #:cost 64bit-move-cost]) |
124 | 127 |
|
125 | | -(define-operations ([x <binary64>]) <binary64> #:fpcore (:precision binary64) |
126 | | - [neg.f64 #:spec (neg x) #:impl - #:fpcore (- x) #:cost 0.125]) |
| 128 | +(define-operation (neg.f64 [x <binary64>]) <binary64> |
| 129 | + #:spec (neg x) #:impl - #:fpcore (! :precision binary64 (- x)) #:cost 0.125) |
127 | 130 |
|
128 | 131 | (define-operations ([x <binary64>] [y <binary64>]) <binary64> #:fpcore (:precision binary64) |
129 | 132 | [+.f64 #:spec (+ x y) #:impl + #:cost 0.200] |
|
177 | 180 | [expm1.f64 #:spec (- (exp x) 1) #:impl (from-libm 'expm1) #:fpcore (expm1 x) #:cost 0.900] |
178 | 181 | [log1p.f64 #:spec (log (+ 1 x)) #:impl (from-libm 'log1p) #:fpcore (log1p x) #:cost 1.300]) |
179 | 182 |
|
180 | | -(define-operations ([x <binary64>] [y <binary64>]) <binary64> #:fpcore (:precision binary64) |
181 | | - [hypot.f64 #:spec (sqrt (+ (* x x) (* y y))) #:impl (from-libm 'hypot) #:fpcore (hypot x y) #:cost 1.700]) |
| 183 | +(define-operation (hypot.f64 [x <binary64>] [y <binary64>]) <binary64> |
| 184 | + #:spec (sqrt (+ (* x x) (* y y))) #:impl (from-libm 'hypot) |
| 185 | + #:fpcore (! :precision binary64 (hypot x y)) #:cost 1.700) |
182 | 186 |
|
183 | | -(define-operations ([x <binary64>] [y <binary64>] [z <binary64>]) <binary64> #:fpcore (:precision binary64) |
184 | | - [fma.f64 #:spec (+ (* x y) z) #:impl (from-libm 'fma) #:fpcore (fma x y z) #:cost 0.375]) |
| 187 | +(define-operation (fma.f64 [x <binary64>] [y <binary64>] [z <binary64>]) <binary64> |
| 188 | + #:spec (+ (* x y) z) #:impl (from-libm 'fma) |
| 189 | + #:fpcore (! :precision binary64 (fma x y z)) #:cost 0.375) |
185 | 190 |
|
0 commit comments