@@ -164,11 +164,21 @@ end
164164 @test_intrinsic Core. Intrinsics. fptoui UInt Float16 (3.3 ) UInt (3 )
165165end
166166
167- extendhfsf2 (x:: Float16 ) = ccall (" extern __extendhfsf2" , llvmcall, Float32, (Float16,), x)
168- gnu_h2f_ieee (x:: Float16 ) = ccall (" extern __gnu_h2f_ieee" , llvmcall, Float32, (Float16,), x)
169- truncsfhf2 (x:: Float32 ) = ccall (" extern __truncsfhf2" , llvmcall, Float16, (Float32,), x)
170- gnu_f2h_ieee (x:: Float32 ) = ccall (" extern __gnu_f2h_ieee" , llvmcall, Float16, (Float32,), x)
171- truncdfhf2 (x:: Float64 ) = ccall (" extern __truncdfhf2" , llvmcall, Float16, (Float64,), x)
167+ if Sys. ARCH == :aarch64
168+ # On AArch64 we are following the `_Float16` ABI. Buthe these functions expect `Int16`.
169+ # TODO : SHould we have `Chalf == Int16` and `Cfloat16 == Float16`?
170+ extendhfsf2 (x:: Float16 ) = ccall (" extern __extendhfsf2" , llvmcall, Float32, (Int16,), reinterpret (Int16, x))
171+ gnu_h2f_ieee (x:: Float16 ) = ccall (" extern __gnu_h2f_ieee" , llvmcall, Float32, (Int16,), reinterpret (Int16, x))
172+ truncsfhf2 (x:: Float32 ) = reinterpret (Float16, ccall (" extern __truncsfhf2" , llvmcall, Int16, (Float32,), x))
173+ gnu_f2h_ieee (x:: Float32 ) = reinterpret (Float16, ccall (" extern __gnu_f2h_ieee" , llvmcall, Int16, (Float32,), x))
174+ truncdfhf2 (x:: Float64 ) = reinterpret (Float16, ccall (" extern __truncdfhf2" , llvmcall, Int16, (Float64,), x))
175+ else
176+ extendhfsf2 (x:: Float16 ) = ccall (" extern __extendhfsf2" , llvmcall, Float32, (Float16,), x)
177+ gnu_h2f_ieee (x:: Float16 ) = ccall (" extern __gnu_h2f_ieee" , llvmcall, Float32, (Float16,), x)
178+ truncsfhf2 (x:: Float32 ) = ccall (" extern __truncsfhf2" , llvmcall, Float16, (Float32,), x)
179+ gnu_f2h_ieee (x:: Float32 ) = ccall (" extern __gnu_f2h_ieee" , llvmcall, Float16, (Float32,), x)
180+ truncdfhf2 (x:: Float64 ) = ccall (" extern __truncdfhf2" , llvmcall, Float16, (Float64,), x)
181+ end
172182
173183@testset " Float16 intrinsics (crt)" begin
174184 @test extendhfsf2 (Float16 (3.3 )) == 3.3007812f0
0 commit comments