[llvm] [RISCV]: Implemented softening of `FCANONICALIZE` (PR #169234)

Kevin Per via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 25 00:08:34 PST 2025


================
@@ -10,6 +11,42 @@ declare float @llvm.fcanonicalize.f32(float)
 declare double @llvm.fcanonicalize.f64(double)
 
 define half @fcanonicalize_f16(half %x) {
+; RV64-SOFT-LABEL: fcanonicalize_f16:
+; RV64-SOFT:       # %bb.0:
+; RV64-SOFT-NEXT:    addi sp, sp, -16
+; RV64-SOFT-NEXT:    .cfi_def_cfa_offset 16
+; RV64-SOFT-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
+; RV64-SOFT-NEXT:    .cfi_offset ra, -8
+; RV64-SOFT-NEXT:    slli a0, a0, 48
+; RV64-SOFT-NEXT:    srli a0, a0, 48
+; RV64-SOFT-NEXT:    call __extendhfsf2
+; RV64-SOFT-NEXT:    mv a1, a0
+; RV64-SOFT-NEXT:    call fminimum_numf
----------------
kper wrote:

It was added 2.35, so it exists since 2022-02-03

> <math.h> functions for floating-point maximum and minimum,
>   corresponding to new operations in IEEE 754-2019, and corresponding
>   <tgmath.h> macros, are added from draft ISO C2X: fmaximum,
>   fmaximum_num, fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num,
>   fminimum_mag, fminimum_mag_num and corresponding functions for float,
>   long double, _FloatN and _FloatNx.

https://sourceware.org/pipermail/libc-announce/2022/000033.html

https://github.com/llvm/llvm-project/pull/169234


More information about the llvm-commits mailing list