@@ -147,9 +147,81 @@ macro test_intrinsic(intr, args...)
147
147
end
148
148
end
149
149
150
+ @testset " Float64 intrinsics" begin
151
+ # unary
152
+ @test_intrinsic Core. Intrinsics. abs_float Float64 (- 3.3 ) Float64 (3.3 )
153
+ @test_intrinsic Core. Intrinsics. neg_float Float64 (3.3 ) Float64 (- 3.3 )
154
+ @test_intrinsic Core. Intrinsics. fpext Float64 Float64 (3.3 ) Float64 (3.3 )
155
+
156
+ # binary
157
+ @test_intrinsic Core. Intrinsics. add_float Float64 (3.3 ) Float64 (2 ) Float64 (5.3 )
158
+ @test_intrinsic Core. Intrinsics. sub_float Float64 (3.3 ) Float64 (2 ) Float64 (1.2999999999999998 )
159
+ @test_intrinsic Core. Intrinsics. mul_float Float64 (3.3 ) Float64 (2 ) Float64 (6.6 )
160
+ @test_intrinsic Core. Intrinsics. div_float Float64 (3.3 ) Float64 (2 ) Float64 (1.65 )
161
+ @test_intrinsic Core. Intrinsics. max_float Float64 (1.0 ) Float64 (2.0 ) Float64 (2.0 )
162
+ @test_intrinsic Core. Intrinsics. min_float Float64 (1.0 ) Float64 (2.0 ) Float64 (1.0 )
163
+
164
+ # ternary
165
+ @test_intrinsic Core. Intrinsics. fma_float Float64 (3.3 ) Float64 (4.4 ) Float64 (5.5 ) Float64 (20.02 )
166
+ @test_intrinsic Core. Intrinsics. muladd_float Float64 (3.3 ) Float64 (4.4 ) Float64 (5.5 ) Float64 (20.02 )
167
+
168
+ # boolean
169
+ @test_intrinsic Core. Intrinsics. eq_float Float64 (3.3 ) Float64 (3.3 ) true
170
+ @test_intrinsic Core. Intrinsics. eq_float Float64 (3.3 ) Float64 (2 ) false
171
+ @test_intrinsic Core. Intrinsics. ne_float Float64 (3.3 ) Float64 (3.3 ) false
172
+ @test_intrinsic Core. Intrinsics. ne_float Float64 (3.3 ) Float64 (2 ) true
173
+ @test_intrinsic Core. Intrinsics. le_float Float64 (3.3 ) Float64 (3.3 ) true
174
+ @test_intrinsic Core. Intrinsics. le_float Float64 (3.3 ) Float64 (2 ) false
175
+
176
+ # conversions
177
+ @test_intrinsic Core. Intrinsics. sitofp Float64 3 Float64 (3.0 )
178
+ @test_intrinsic Core. Intrinsics. uitofp Float64 UInt (3 ) Float64 (3.0 )
179
+ @test_intrinsic Core. Intrinsics. fptosi Int Float64 (3.3 ) 3
180
+ @test_intrinsic Core. Intrinsics. fptoui UInt Float64 (3.3 ) UInt (3 )
181
+ end
182
+
183
+ @testset " Float32 intrinsics" begin
184
+ # unary
185
+ @test_intrinsic Core. Intrinsics. abs_float Float32 (- 3.3 ) Float32 (3.3 )
186
+ @test_intrinsic Core. Intrinsics. neg_float Float32 (3.3 ) Float32 (- 3.3 )
187
+ @test_intrinsic Core. Intrinsics. fpext Float32 Float32 (3.3 ) Float32 (3.3 )
188
+ @test_intrinsic Core. Intrinsics. fpext Float64 Float32 (3.3 ) 3.299999952316284
189
+ @test_intrinsic Core. Intrinsics. fptrunc Float32 Float64 (3.3 ) Float32 (3.3 )
190
+
191
+ # binary
192
+ @test_intrinsic Core. Intrinsics. add_float Float32 (3.3 ) Float32 (2 ) Float32 (5.3 )
193
+ @test_intrinsic Core. Intrinsics. sub_float Float32 (3.3 ) Float32 (2 ) Float32 (1.3 )
194
+ @test_intrinsic Core. Intrinsics. mul_float Float32 (3.3 ) Float32 (2 ) Float32 (6.6 )
195
+ @test_intrinsic Core. Intrinsics. div_float Float32 (3.3 ) Float32 (2 ) Float32 (1.65 )
196
+ @test_intrinsic Core. Intrinsics. max_float Float32 (1.0 ) Float32 (2.0 ) Float32 (2.0 )
197
+ @test_intrinsic Core. Intrinsics. min_float Float32 (1.0 ) Float32 (2.0 ) Float32 (1.0 )
198
+
199
+ # ternary
200
+ @test_intrinsic Core. Intrinsics. fma_float Float32 (3.3 ) Float32 (4.4 ) Float32 (5.5 ) Float32 (20.02 )
201
+ @test_intrinsic Core. Intrinsics. muladd_float Float32 (3.3 ) Float32 (4.4 ) Float32 (5.5 ) Float32 (20.02 )
202
+
203
+ # boolean
204
+ @test_intrinsic Core. Intrinsics. eq_float Float32 (3.3 ) Float32 (3.3 ) true
205
+ @test_intrinsic Core. Intrinsics. eq_float Float32 (3.3 ) Float32 (2 ) false
206
+ @test_intrinsic Core. Intrinsics. ne_float Float32 (3.3 ) Float32 (3.3 ) false
207
+ @test_intrinsic Core. Intrinsics. ne_float Float32 (3.3 ) Float32 (2 ) true
208
+ @test_intrinsic Core. Intrinsics. le_float Float32 (3.3 ) Float32 (3.3 ) true
209
+ @test_intrinsic Core. Intrinsics. le_float Float32 (3.3 ) Float32 (2 ) false
210
+
211
+ # conversions
212
+ @test_intrinsic Core. Intrinsics. sitofp Float32 3 Float32 (3.0 )
213
+ @test_intrinsic Core. Intrinsics. uitofp Float32 UInt (3 ) Float32 (3.0 )
214
+ @test_intrinsic Core. Intrinsics. fptosi Int Float32 (3.3 ) 3
215
+ @test_intrinsic Core. Intrinsics. fptoui UInt Float32 (3.3 ) UInt (3 )
216
+ end
217
+
150
218
@testset " Float16 intrinsics" begin
151
219
# unary
220
+ @test_intrinsic Core. Intrinsics. abs_float Float16 (- 3.3 ) Float16 (3.3 )
152
221
@test_intrinsic Core. Intrinsics. neg_float Float16 (3.3 ) Float16 (- 3.3 )
222
+ # See <https://github.com/JuliaLang/julia/issues/57130>
223
+ # broken @test_intrinsic Core.Intrinsics.fpext Float16 Float16(3.3) Float16(3.3)
224
+ @test_broken Core. Intrinsics. fpext (Float16, Float16 (3.3 )) === Float16 (3.3 )
153
225
@test_intrinsic Core. Intrinsics. fpext Float32 Float16 (3.3 ) 3.3007812f0
154
226
@test_intrinsic Core. Intrinsics. fpext Float64 Float16 (3.3 ) 3.30078125
155
227
@test_intrinsic Core. Intrinsics. fptrunc Float16 Float32 (3.3 ) Float16 (3.3 )
160
232
@test_intrinsic Core. Intrinsics. sub_float Float16 (3.3 ) Float16 (2 ) Float16 (1.301 )
161
233
@test_intrinsic Core. Intrinsics. mul_float Float16 (3.3 ) Float16 (2 ) Float16 (6.6 )
162
234
@test_intrinsic Core. Intrinsics. div_float Float16 (3.3 ) Float16 (2 ) Float16 (1.65 )
235
+ @test_intrinsic Core. Intrinsics. max_float Float16 (1.0 ) Float16 (2.0 ) Float16 (2.0 )
236
+ @test_intrinsic Core. Intrinsics. min_float Float16 (1.0 ) Float16 (2.0 ) Float16 (1.0 )
163
237
164
238
# ternary
165
239
@test_intrinsic Core. Intrinsics. fma_float Float16 (3.3 ) Float16 (4.4 ) Float16 (5.5 ) Float16 (20.02 )
174
248
@test_intrinsic Core. Intrinsics. le_float Float16 (3.3 ) Float16 (2 ) false
175
249
176
250
# conversions
177
- @test_intrinsic Core. Intrinsics. sitofp Float16 3 Float16 (3f0 )
178
- @test_intrinsic Core. Intrinsics. uitofp Float16 UInt (3 ) Float16 (3f0 )
251
+ @test_intrinsic Core. Intrinsics. sitofp Float16 3 Float16 (3.0 )
252
+ @test_intrinsic Core. Intrinsics. uitofp Float16 UInt (3 ) Float16 (3.0 )
179
253
@test_intrinsic Core. Intrinsics. fptosi Int Float16 (3.3 ) 3
180
254
@test_intrinsic Core. Intrinsics. fptoui UInt Float16 (3.3 ) UInt (3 )
181
255
end
0 commit comments