@@ -147,9 +147,81 @@ macro test_intrinsic(intr, args...)
147147 end
148148end
149149
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+
150218@testset " Float16 intrinsics" begin
151219 # unary
220+ @test_intrinsic Core. Intrinsics. abs_float Float16 (- 3.3 ) Float16 (3.3 )
152221 @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 )
153225 @test_intrinsic Core. Intrinsics. fpext Float32 Float16 (3.3 ) 3.3007812f0
154226 @test_intrinsic Core. Intrinsics. fpext Float64 Float16 (3.3 ) 3.30078125
155227 @test_intrinsic Core. Intrinsics. fptrunc Float16 Float32 (3.3 ) Float16 (3.3 )
160232 @test_intrinsic Core. Intrinsics. sub_float Float16 (3.3 ) Float16 (2 ) Float16 (1.301 )
161233 @test_intrinsic Core. Intrinsics. mul_float Float16 (3.3 ) Float16 (2 ) Float16 (6.6 )
162234 @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 )
163237
164238 # ternary
165239 @test_intrinsic Core. Intrinsics. fma_float Float16 (3.3 ) Float16 (4.4 ) Float16 (5.5 ) Float16 (20.02 )
174248 @test_intrinsic Core. Intrinsics. le_float Float16 (3.3 ) Float16 (2 ) false
175249
176250 # 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 )
179253 @test_intrinsic Core. Intrinsics. fptosi Int Float16 (3.3 ) 3
180254 @test_intrinsic Core. Intrinsics. fptoui UInt Float16 (3.3 ) UInt (3 )
181255end
0 commit comments