[llvm] [CodeGen] Use __extendhfsf2 and __truncsfhf2 by default (PR #126880)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 12 02:04:44 PST 2025


https://github.com/nikic created https://github.com/llvm/llvm-project/pull/126880

The standard libcalls for half to float and float to half conversion are __extendhfsf2 and __truncsfhf2. However, LLVM currently uses __gnu_h2f_ieee and __gnu_f2h_ieee instead. As far as I can tell, these libcalls are ARM-ism and only provided by libgcc on that platform. compiler-rt always provides both libcalls.

Use the standard libcalls by default, and only use the __gnu libcalls on ARM to improve libgcc compatibility.

We encountered this issue with MLIR execution engine test failures on Power 8.

>From 087f019beb0df4b6b11a914f006a786a8bc0b219 Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov at redhat.com>
Date: Wed, 12 Feb 2025 10:47:48 +0100
Subject: [PATCH] [CodeGen] Use __extendhfsf2 and __truncsfhf2 by default

The standard libcalls for half to float and float to half conversion
are __extendhfsf2 and __truncsfhf2. However, LLVM currently uses
__gnu_h2f_ieee and __gnu_f2h_ieee instead. As far as I can tell,
these libcalls are ARM-ism and only provided by libgcc on that
platform. compiler-rt always provides both libcalls.

Use the standard libcalls by default, and only use the __gnu libcalls
on ARM to improve libgcc compatibilty.

We encounted this issue with MLIR execution engine test failures
on Power 8.
---
 llvm/include/llvm/IR/RuntimeLibcalls.def      |   4 +-
 llvm/lib/IR/RuntimeLibcalls.cpp               |   3 -
 llvm/lib/Target/ARM/ARMISelLowering.cpp       |   3 +
 .../Target/Hexagon/HexagonISelLowering.cpp    |   5 -
 llvm/lib/Target/RISCV/RISCVISelLowering.cpp   |   3 -
 .../WebAssembly/WebAssemblyISelLowering.cpp   |   5 -
 .../WebAssemblyRuntimeLibcallSignatures.cpp   |   4 -
 llvm/lib/Target/X86/X86ISelLowering.cpp       |   3 -
 .../16bit-float-promotion-with-nofp.ll        |   2 +-
 llvm/test/CodeGen/AArch64/atomicrmw-fadd.ll   |  24 +-
 llvm/test/CodeGen/AArch64/atomicrmw-fmax.ll   |  24 +-
 llvm/test/CodeGen/AArch64/atomicrmw-fmin.ll   |  24 +-
 llvm/test/CodeGen/AArch64/atomicrmw-fsub.ll   |  24 +-
 .../AArch64/strictfp_f16_abi_promote.ll       |  40 +-
 llvm/test/CodeGen/LoongArch/fp16-promote.ll   |  92 +--
 llvm/test/CodeGen/Mips/fp16-promote.ll        |  96 +--
 llvm/test/CodeGen/Mips/ldexp.ll               |   4 +-
 llvm/test/CodeGen/PowerPC/atomics.ll          |   8 +-
 .../PowerPC/handle-f16-storage-type.ll        | 168 ++--
 llvm/test/CodeGen/PowerPC/pr48519.ll          |  14 +-
 llvm/test/CodeGen/PowerPC/pr49092.ll          |   2 +-
 llvm/test/CodeGen/PowerPC/vector-llrint.ll    | 756 +++++++++---------
 llvm/test/CodeGen/PowerPC/vector-lrint.ll     | 756 +++++++++---------
 llvm/test/CodeGen/SPARC/fp16-promote.ll       |  76 +-
 .../VE/Scalar/fp_extload_truncstore.ll        |  28 +-
 llvm/test/CodeGen/X86/cvt16.ll                |  10 +-
 llvm/test/CodeGen/X86/fmf-flags.ll            |   6 +-
 llvm/test/CodeGen/X86/fp-i129.ll              |   4 +-
 llvm/test/CodeGen/X86/fp128-cast-strict.ll    |   4 +-
 llvm/test/CodeGen/X86/fptosi-sat-scalar.ll    |  20 +-
 llvm/test/CodeGen/X86/fptoui-sat-scalar.ll    |  20 +-
 llvm/test/CodeGen/X86/frem.ll                 |   2 +-
 llvm/test/CodeGen/X86/half-constrained.ll     |  14 +-
 llvm/test/CodeGen/X86/ldexp.ll                |   4 +-
 llvm/test/CodeGen/X86/llvm.frexp.ll           |  10 +-
 35 files changed, 1121 insertions(+), 1141 deletions(-)

diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.def b/llvm/include/llvm/IR/RuntimeLibcalls.def
index a7963543c4350..c6ac341d71a20 100644
--- a/llvm/include/llvm/IR/RuntimeLibcalls.def
+++ b/llvm/include/llvm/IR/RuntimeLibcalls.def
@@ -384,8 +384,8 @@ HANDLE_LIBCALL(FPEXT_F16_F128, "__extendhftf2")
 HANDLE_LIBCALL(FPEXT_F16_F80, "__extendhfxf2")
 HANDLE_LIBCALL(FPEXT_F32_F64, "__extendsfdf2")
 HANDLE_LIBCALL(FPEXT_F16_F64, "__extendhfdf2")
-HANDLE_LIBCALL(FPEXT_F16_F32, "__gnu_h2f_ieee")
-HANDLE_LIBCALL(FPROUND_F32_F16, "__gnu_f2h_ieee")
+HANDLE_LIBCALL(FPEXT_F16_F32, "__extendhfsf2")
+HANDLE_LIBCALL(FPROUND_F32_F16, "__truncsfhf2")
 HANDLE_LIBCALL(FPROUND_F64_F16, "__truncdfhf2")
 HANDLE_LIBCALL(FPROUND_F80_F16, "__truncxfhf2")
 HANDLE_LIBCALL(FPROUND_F128_F16, "__trunctfhf2")
diff --git a/llvm/lib/IR/RuntimeLibcalls.cpp b/llvm/lib/IR/RuntimeLibcalls.cpp
index e38fce764b640..1f94400f7c088 100644
--- a/llvm/lib/IR/RuntimeLibcalls.cpp
+++ b/llvm/lib/IR/RuntimeLibcalls.cpp
@@ -170,9 +170,6 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT) {
     // TODO: BridgeOS should be included in isOSDarwin.
     setLibcallName(RTLIB::EXP10_F32, "__exp10f");
     setLibcallName(RTLIB::EXP10_F64, "__exp10");
-  } else {
-    setLibcallName(RTLIB::FPEXT_F16_F32, "__gnu_h2f_ieee");
-    setLibcallName(RTLIB::FPROUND_F32_F16, "__gnu_f2h_ieee");
   }
 
   if (TT.isGNUEnvironment() || TT.isOSFuchsia() ||
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 5c4fe9d922f4c..3a975e5db0e5e 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -767,6 +767,9 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM,
       setLibcallName(LC.Op, LC.Name);
       setLibcallCallingConv(LC.Op, LC.CC);
     }
+  } else if (!Subtarget->isTargetMachO()) {
+    setLibcallName(RTLIB::FPROUND_F32_F16, "__gnu_f2h_ieee");
+    setLibcallName(RTLIB::FPEXT_F16_F32, "__gnu_h2f_ieee");
   }
 
   if (Subtarget->isThumb1Only())
diff --git a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
index 1a7667fe42fbc..be1960db41479 100644
--- a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
@@ -1886,11 +1886,6 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM,
     setLibcallName(RTLIB::SQRT_F32, "__hexagon_fast2_sqrtf");
   else
     setLibcallName(RTLIB::SQRT_F32, "__hexagon_sqrtf");
-
-  // Routines to handle fp16 storage type.
-  setLibcallName(RTLIB::FPROUND_F32_F16, "__truncsfhf2");
-  setLibcallName(RTLIB::FPROUND_F64_F16, "__truncdfhf2");
-  setLibcallName(RTLIB::FPEXT_F16_F32, "__extendhfsf2");
 }
 
 const char* HexagonTargetLowering::getTargetNodeName(unsigned Opcode) const {
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 7ca8482149eb9..1e06215fa79e6 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -1549,9 +1549,6 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
   if (Subtarget.useRVVForFixedLengthVectors())
     setTargetDAGCombine(ISD::BITCAST);
 
-  setLibcallName(RTLIB::FPEXT_F16_F32, "__extendhfsf2");
-  setLibcallName(RTLIB::FPROUND_F32_F16, "__truncsfhf2");
-
   // Disable strict node mutation.
   IsStrictFPEnabled = true;
   EnableExtLdPromotion = true;
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
index fedad25c775e2..3c918e8b675f0 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
@@ -377,11 +377,6 @@ WebAssemblyTargetLowering::WebAssemblyTargetLowering(
 
   setMaxAtomicSizeInBitsSupported(64);
 
-  // Override the __gnu_f2h_ieee/__gnu_h2f_ieee names so that the f32 name is
-  // consistent with the f64 and f128 names.
-  setLibcallName(RTLIB::FPEXT_F16_F32, "__extendhfsf2");
-  setLibcallName(RTLIB::FPROUND_F32_F16, "__truncsfhf2");
-
   // Define the emscripten name for return address helper.
   // TODO: when implementing other Wasm backends, make this generic or only do
   // this on emscripten depending on what they end up doing.
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
index b20a06b238c88..1fe0b1f2e0591 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
@@ -537,10 +537,6 @@ struct StaticLibcallNameMap {
         Map[NameLibcall.first] = NameLibcall.second;
       }
     }
-    // Override the __gnu_f2h_ieee/__gnu_h2f_ieee names so that the f32 name is
-    // consistent with the f64 and f128 names.
-    Map["__extendhfsf2"] = RTLIB::FPEXT_F16_F32;
-    Map["__truncsfhf2"] = RTLIB::FPROUND_F32_F16;
 
     Map["emscripten_return_address"] = RTLIB::RETURN_ADDRESS;
   }
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 91249f0bb009f..839c28ef643ef 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -736,9 +736,6 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
     setOperationAction(ISD::STRICT_FP_EXTEND, MVT::f32, Custom);
     setOperationAction(ISD::STRICT_FP_EXTEND, MVT::f64, Custom);
 
-    setLibcallName(RTLIB::FPROUND_F32_F16, "__truncsfhf2");
-    setLibcallName(RTLIB::FPEXT_F16_F32, "__extendhfsf2");
-
     // Lower this to MOVMSK plus an AND.
     setOperationAction(ISD::FGETSIGN, MVT::i64, Custom);
     setOperationAction(ISD::FGETSIGN, MVT::i32, Custom);
diff --git a/llvm/test/CodeGen/AArch64/16bit-float-promotion-with-nofp.ll b/llvm/test/CodeGen/AArch64/16bit-float-promotion-with-nofp.ll
index bfe9ab8424bb0..0bd7c1b10b123 100644
--- a/llvm/test/CodeGen/AArch64/16bit-float-promotion-with-nofp.ll
+++ b/llvm/test/CodeGen/AArch64/16bit-float-promotion-with-nofp.ll
@@ -7,7 +7,7 @@ define half @f2h(float %a) {
 ; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
 ; CHECK-NEXT:    .cfi_def_cfa_offset 16
 ; CHECK-NEXT:    .cfi_offset w30, -16
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
 ; CHECK-NEXT:    ret
 entry:
diff --git a/llvm/test/CodeGen/AArch64/atomicrmw-fadd.ll b/llvm/test/CodeGen/AArch64/atomicrmw-fadd.ll
index 0c3a40d93d640..21729b9dfd101 100644
--- a/llvm/test/CodeGen/AArch64/atomicrmw-fadd.ll
+++ b/llvm/test/CodeGen/AArch64/atomicrmw-fadd.ll
@@ -60,13 +60,13 @@ define half @test_atomicrmw_fadd_f16_seq_cst_align2(ptr %ptr, half %value) #0 {
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB0_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    mov w22, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w20, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w21, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w21
 ; SOFTFP-NOLSE-NEXT:    bl __addsf3
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w0
 ; SOFTFP-NOLSE-NEXT:  .LBB0_3: // %cmpxchg.start
 ; SOFTFP-NOLSE-NEXT:    // Parent Loop BB0_2 Depth=1
@@ -148,13 +148,13 @@ define half @test_atomicrmw_fadd_f16_seq_cst_align4(ptr %ptr, half %value) #0 {
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB1_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    mov w22, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w20, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w21, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w21
 ; SOFTFP-NOLSE-NEXT:    bl __addsf3
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w0
 ; SOFTFP-NOLSE-NEXT:  .LBB1_3: // %cmpxchg.start
 ; SOFTFP-NOLSE-NEXT:    // Parent Loop BB1_2 Depth=1
@@ -712,22 +712,22 @@ define <2 x half> @test_atomicrmw_fadd_v2f16_seq_cst_align4(ptr %ptr, <2 x half>
 ; SOFTFP-NOLSE-NEXT:    // =>This Loop Header: Depth=1
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB7_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    and w0, w19, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w24, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w23, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w24
 ; SOFTFP-NOLSE-NEXT:    bl __addsf3
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w24, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w21, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w25, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w25
 ; SOFTFP-NOLSE-NEXT:    bl __addsf3
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w22
 ; SOFTFP-NOLSE-NEXT:    bfi w0, w24, #16, #16
 ; SOFTFP-NOLSE-NEXT:    bfi w8, w23, #16, #16
diff --git a/llvm/test/CodeGen/AArch64/atomicrmw-fmax.ll b/llvm/test/CodeGen/AArch64/atomicrmw-fmax.ll
index 24088998f36d1..9b5e48d2b4217 100644
--- a/llvm/test/CodeGen/AArch64/atomicrmw-fmax.ll
+++ b/llvm/test/CodeGen/AArch64/atomicrmw-fmax.ll
@@ -62,13 +62,13 @@ define half @test_atomicrmw_fmax_f16_seq_cst_align2(ptr %ptr, half %value) #0 {
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB0_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    mov w22, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w20, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w21, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w21
 ; SOFTFP-NOLSE-NEXT:    bl fmaxf
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w0
 ; SOFTFP-NOLSE-NEXT:  .LBB0_3: // %cmpxchg.start
 ; SOFTFP-NOLSE-NEXT:    // Parent Loop BB0_2 Depth=1
@@ -150,13 +150,13 @@ define half @test_atomicrmw_fmax_f16_seq_cst_align4(ptr %ptr, half %value) #0 {
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB1_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    mov w22, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w20, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w21, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w21
 ; SOFTFP-NOLSE-NEXT:    bl fmaxf
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w0
 ; SOFTFP-NOLSE-NEXT:  .LBB1_3: // %cmpxchg.start
 ; SOFTFP-NOLSE-NEXT:    // Parent Loop BB1_2 Depth=1
@@ -592,22 +592,22 @@ define <2 x half> @test_atomicrmw_fmax_v2f16_seq_cst_align4(ptr %ptr, <2 x half>
 ; SOFTFP-NOLSE-NEXT:    // =>This Loop Header: Depth=1
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB6_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    and w0, w19, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w24, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w23, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w24
 ; SOFTFP-NOLSE-NEXT:    bl fmaxf
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w24, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w21, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w25, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w25
 ; SOFTFP-NOLSE-NEXT:    bl fmaxf
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w22
 ; SOFTFP-NOLSE-NEXT:    bfi w0, w24, #16, #16
 ; SOFTFP-NOLSE-NEXT:    bfi w8, w23, #16, #16
diff --git a/llvm/test/CodeGen/AArch64/atomicrmw-fmin.ll b/llvm/test/CodeGen/AArch64/atomicrmw-fmin.ll
index 65f1f4863c173..f6c542fe7d407 100644
--- a/llvm/test/CodeGen/AArch64/atomicrmw-fmin.ll
+++ b/llvm/test/CodeGen/AArch64/atomicrmw-fmin.ll
@@ -62,13 +62,13 @@ define half @test_atomicrmw_fmin_f16_seq_cst_align2(ptr %ptr, half %value) #0 {
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB0_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    mov w22, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w20, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w21, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w21
 ; SOFTFP-NOLSE-NEXT:    bl fminf
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w0
 ; SOFTFP-NOLSE-NEXT:  .LBB0_3: // %cmpxchg.start
 ; SOFTFP-NOLSE-NEXT:    // Parent Loop BB0_2 Depth=1
@@ -150,13 +150,13 @@ define half @test_atomicrmw_fmin_f16_seq_cst_align4(ptr %ptr, half %value) #0 {
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB1_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    mov w22, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w20, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w21, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w21
 ; SOFTFP-NOLSE-NEXT:    bl fminf
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w0
 ; SOFTFP-NOLSE-NEXT:  .LBB1_3: // %cmpxchg.start
 ; SOFTFP-NOLSE-NEXT:    // Parent Loop BB1_2 Depth=1
@@ -592,22 +592,22 @@ define <2 x half> @test_atomicrmw_fmin_v2f16_seq_cst_align4(ptr %ptr, <2 x half>
 ; SOFTFP-NOLSE-NEXT:    // =>This Loop Header: Depth=1
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB6_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    and w0, w19, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w24, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w23, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w24
 ; SOFTFP-NOLSE-NEXT:    bl fminf
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w24, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w21, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w25, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w25
 ; SOFTFP-NOLSE-NEXT:    bl fminf
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w22
 ; SOFTFP-NOLSE-NEXT:    bfi w0, w24, #16, #16
 ; SOFTFP-NOLSE-NEXT:    bfi w8, w23, #16, #16
diff --git a/llvm/test/CodeGen/AArch64/atomicrmw-fsub.ll b/llvm/test/CodeGen/AArch64/atomicrmw-fsub.ll
index 0f1a2f03c98c3..82e0f14e68e26 100644
--- a/llvm/test/CodeGen/AArch64/atomicrmw-fsub.ll
+++ b/llvm/test/CodeGen/AArch64/atomicrmw-fsub.ll
@@ -60,13 +60,13 @@ define half @test_atomicrmw_fsub_f16_seq_cst_align2(ptr %ptr, half %value) #0 {
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB0_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    mov w22, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w20, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w21, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w21
 ; SOFTFP-NOLSE-NEXT:    bl __subsf3
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w0
 ; SOFTFP-NOLSE-NEXT:  .LBB0_3: // %cmpxchg.start
 ; SOFTFP-NOLSE-NEXT:    // Parent Loop BB0_2 Depth=1
@@ -148,13 +148,13 @@ define half @test_atomicrmw_fsub_f16_seq_cst_align4(ptr %ptr, half %value) #0 {
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB1_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    mov w22, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w20, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w21, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w21
 ; SOFTFP-NOLSE-NEXT:    bl __subsf3
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w0
 ; SOFTFP-NOLSE-NEXT:  .LBB1_3: // %cmpxchg.start
 ; SOFTFP-NOLSE-NEXT:    // Parent Loop BB1_2 Depth=1
@@ -712,22 +712,22 @@ define <2 x half> @test_atomicrmw_fsub_v2f16_seq_cst_align4(ptr %ptr, <2 x half>
 ; SOFTFP-NOLSE-NEXT:    // =>This Loop Header: Depth=1
 ; SOFTFP-NOLSE-NEXT:    // Child Loop BB7_3 Depth 2
 ; SOFTFP-NOLSE-NEXT:    and w0, w19, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w24, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w23, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w24
 ; SOFTFP-NOLSE-NEXT:    bl __subsf3
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w24, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w21, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w25, w0
 ; SOFTFP-NOLSE-NEXT:    and w0, w22, #0xffff
-; SOFTFP-NOLSE-NEXT:    bl __gnu_h2f_ieee
+; SOFTFP-NOLSE-NEXT:    bl __extendhfsf2
 ; SOFTFP-NOLSE-NEXT:    mov w1, w25
 ; SOFTFP-NOLSE-NEXT:    bl __subsf3
-; SOFTFP-NOLSE-NEXT:    bl __gnu_f2h_ieee
+; SOFTFP-NOLSE-NEXT:    bl __truncsfhf2
 ; SOFTFP-NOLSE-NEXT:    mov w8, w22
 ; SOFTFP-NOLSE-NEXT:    bfi w0, w24, #16, #16
 ; SOFTFP-NOLSE-NEXT:    bfi w8, w23, #16, #16
diff --git a/llvm/test/CodeGen/AArch64/strictfp_f16_abi_promote.ll b/llvm/test/CodeGen/AArch64/strictfp_f16_abi_promote.ll
index 3db802a2bc355..63b8a1cee27ae 100644
--- a/llvm/test/CodeGen/AArch64/strictfp_f16_abi_promote.ll
+++ b/llvm/test/CodeGen/AArch64/strictfp_f16_abi_promote.ll
@@ -22,7 +22,7 @@ define void @f16_arg(half %arg, ptr %ptr) #0 {
 ; NOFP16-NEXT:    .cfi_offset w30, -16
 ; NOFP16-NEXT:    and w0, w0, #0xffff
 ; NOFP16-NEXT:    mov x19, x1
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    str w0, [x19]
 ; NOFP16-NEXT:    ldp x30, x19, [sp], #16 // 16-byte Folded Reload
 ; NOFP16-NEXT:    ret
@@ -44,10 +44,10 @@ define void @v2f16_arg(<2 x half> %arg, ptr %ptr) #0 {
 ; NOFP16-NEXT:    and w0, w0, #0xffff
 ; NOFP16-NEXT:    mov x19, x2
 ; NOFP16-NEXT:    mov w20, w1
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    mov w21, w0
 ; NOFP16-NEXT:    and w0, w20, #0xffff
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    stp w21, w0, [x19]
 ; NOFP16-NEXT:    ldp x20, x19, [sp, #16] // 16-byte Folded Reload
 ; NOFP16-NEXT:    ldp x30, x21, [sp], #32 // 16-byte Folded Reload
@@ -73,14 +73,14 @@ define void @v3f16_arg(<3 x half> %arg, ptr %ptr) #0 {
 ; NOFP16-NEXT:    and w0, w1, #0xffff
 ; NOFP16-NEXT:    mov x19, x3
 ; NOFP16-NEXT:    mov w20, w2
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    mov w22, w0
 ; NOFP16-NEXT:    and w0, w21, #0xffff
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    mov w8, w0
 ; NOFP16-NEXT:    and w0, w20, #0xffff
 ; NOFP16-NEXT:    orr x21, x8, x22, lsl #32
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    str x21, [x19]
 ; NOFP16-NEXT:    ldp x22, x21, [sp, #16] // 16-byte Folded Reload
 ; NOFP16-NEXT:    str w0, [x19, #8]
@@ -110,16 +110,16 @@ define void @v4f16_arg(<4 x half> %arg, ptr %ptr) #0 {
 ; NOFP16-NEXT:    mov w20, w3
 ; NOFP16-NEXT:    mov w21, w2
 ; NOFP16-NEXT:    mov w22, w1
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    mov w23, w0
 ; NOFP16-NEXT:    and w0, w22, #0xffff
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    mov w22, w0
 ; NOFP16-NEXT:    and w0, w21, #0xffff
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    mov w21, w0
 ; NOFP16-NEXT:    and w0, w20, #0xffff
-; NOFP16-NEXT:    bl __gnu_h2f_ieee
+; NOFP16-NEXT:    bl __extendhfsf2
 ; NOFP16-NEXT:    stp w21, w0, [x19, #8]
 ; NOFP16-NEXT:    stp w23, w22, [x19]
 ; NOFP16-NEXT:    ldp x20, x19, [sp, #32] // 16-byte Folded Reload
@@ -137,7 +137,7 @@ define void @v4f16_arg(<4 x half> %arg, ptr %ptr) #0 {
 ; NOFP16-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
 ; NOFP16-NEXT:    .cfi_def_cfa_offset 16
 ; NOFP16-NEXT:    .cfi_offset w30, -16
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
 ; NOFP16-NEXT:    ret
    %fptrunc = call half @llvm.experimental.constrained.fptrunc.f16.f32(float %arg, metadata !"round.tonearest", metadata !"fpexcept.strict")
@@ -155,10 +155,10 @@ define void @v4f16_arg(<4 x half> %arg, ptr %ptr) #0 {
 ; NOFP16-NEXT:    .cfi_offset w30, -32
 ; NOFP16-NEXT:    mov w19, w0
 ; NOFP16-NEXT:    mov w0, w1
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    mov w20, w0
 ; NOFP16-NEXT:    mov w0, w19
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    mov w1, w20
 ; NOFP16-NEXT:    ldp x20, x19, [sp, #16] // 16-byte Folded Reload
 ; NOFP16-NEXT:    ldr x30, [sp], #32 // 8-byte Folded Reload
@@ -180,13 +180,13 @@ define void @v4f16_arg(<4 x half> %arg, ptr %ptr) #0 {
 ; NOFP16-NEXT:    mov w20, w0
 ; NOFP16-NEXT:    mov w0, w2
 ; NOFP16-NEXT:    mov w19, w1
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    mov w21, w0
 ; NOFP16-NEXT:    mov w0, w19
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    mov w19, w0
 ; NOFP16-NEXT:    mov w0, w20
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    mov w1, w19
 ; NOFP16-NEXT:    ldp x20, x19, [sp, #16] // 16-byte Folded Reload
 ; NOFP16-NEXT:    mov w2, w21
@@ -212,16 +212,16 @@ define void @v4f16_arg(<4 x half> %arg, ptr %ptr) #0 {
 ; NOFP16-NEXT:    mov w0, w3
 ; NOFP16-NEXT:    mov w19, w2
 ; NOFP16-NEXT:    mov w20, w1
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    mov w22, w0
 ; NOFP16-NEXT:    mov w0, w19
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    mov w19, w0
 ; NOFP16-NEXT:    mov w0, w20
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    mov w20, w0
 ; NOFP16-NEXT:    mov w0, w21
-; NOFP16-NEXT:    bl __gnu_f2h_ieee
+; NOFP16-NEXT:    bl __truncsfhf2
 ; NOFP16-NEXT:    mov w1, w20
 ; NOFP16-NEXT:    mov w2, w19
 ; NOFP16-NEXT:    mov w3, w22
diff --git a/llvm/test/CodeGen/LoongArch/fp16-promote.ll b/llvm/test/CodeGen/LoongArch/fp16-promote.ll
index c5a27a7011278..3701f0df1d2b2 100644
--- a/llvm/test/CodeGen/LoongArch/fp16-promote.ll
+++ b/llvm/test/CodeGen/LoongArch/fp16-promote.ll
@@ -23,12 +23,12 @@ define float @test_fpextend_float(ptr %p) nounwind {
 ; LA32-LABEL: test_fpextend_float:
 ; LA32:       # %bb.0:
 ; LA32-NEXT:    ld.hu $a0, $a0, 0
-; LA32-NEXT:    b %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    b %plt(__extendhfsf2)
 ;
 ; LA64-LABEL: test_fpextend_float:
 ; LA64:       # %bb.0:
 ; LA64-NEXT:    ld.hu $a0, $a0, 0
-; LA64-NEXT:    b %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    b %plt(__extendhfsf2)
   %a = load half, ptr %p
   %r = fpext half %a to float
   ret float %r
@@ -40,7 +40,7 @@ define double @test_fpextend_double(ptr %p) nounwind {
 ; LA32-NEXT:    addi.w $sp, $sp, -16
 ; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
 ; LA32-NEXT:    ld.hu $a0, $a0, 0
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fcvt.d.s $fa0, $fa0
 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
 ; LA32-NEXT:    addi.w $sp, $sp, 16
@@ -51,7 +51,7 @@ define double @test_fpextend_double(ptr %p) nounwind {
 ; LA64-NEXT:    addi.d $sp, $sp, -16
 ; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
 ; LA64-NEXT:    ld.hu $a0, $a0, 0
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fcvt.d.s $fa0, $fa0
 ; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
 ; LA64-NEXT:    addi.d $sp, $sp, 16
@@ -68,7 +68,7 @@ define void @test_fptrunc_float(float %f, ptr %p) nounwind {
 ; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
 ; LA32-NEXT:    st.w $fp, $sp, 8 # 4-byte Folded Spill
 ; LA32-NEXT:    move $fp, $a0
-; LA32-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA32-NEXT:    bl %plt(__truncsfhf2)
 ; LA32-NEXT:    st.h $a0, $fp, 0
 ; LA32-NEXT:    ld.w $fp, $sp, 8 # 4-byte Folded Reload
 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
@@ -81,7 +81,7 @@ define void @test_fptrunc_float(float %f, ptr %p) nounwind {
 ; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
 ; LA64-NEXT:    st.d $fp, $sp, 0 # 8-byte Folded Spill
 ; LA64-NEXT:    move $fp, $a0
-; LA64-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA64-NEXT:    bl %plt(__truncsfhf2)
 ; LA64-NEXT:    st.h $a0, $fp, 0
 ; LA64-NEXT:    ld.d $fp, $sp, 0 # 8-byte Folded Reload
 ; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
@@ -132,12 +132,12 @@ define half @test_fadd_reg(half %a, half %b) nounwind {
 ; LA32-NEXT:    fst.d $fs0, $sp, 0 # 8-byte Folded Spill
 ; LA32-NEXT:    move $fp, $a0
 ; LA32-NEXT:    move $a0, $a1
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fmov.s $fs0, $fa0
 ; LA32-NEXT:    move $a0, $fp
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fadd.s $fa0, $fa0, $fs0
-; LA32-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA32-NEXT:    bl %plt(__truncsfhf2)
 ; LA32-NEXT:    fld.d $fs0, $sp, 0 # 8-byte Folded Reload
 ; LA32-NEXT:    ld.w $fp, $sp, 8 # 4-byte Folded Reload
 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
@@ -152,12 +152,12 @@ define half @test_fadd_reg(half %a, half %b) nounwind {
 ; LA64-NEXT:    fst.d $fs0, $sp, 8 # 8-byte Folded Spill
 ; LA64-NEXT:    move $fp, $a0
 ; LA64-NEXT:    move $a0, $a1
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fmov.s $fs0, $fa0
 ; LA64-NEXT:    move $a0, $fp
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fadd.s $fa0, $fa0, $fs0
-; LA64-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA64-NEXT:    bl %plt(__truncsfhf2)
 ; LA64-NEXT:    fld.d $fs0, $sp, 8 # 8-byte Folded Reload
 ; LA64-NEXT:    ld.d $fp, $sp, 16 # 8-byte Folded Reload
 ; LA64-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload
@@ -178,12 +178,12 @@ define void @test_fadd_mem(ptr %p, ptr %q) nounwind {
 ; LA32-NEXT:    move $fp, $a0
 ; LA32-NEXT:    ld.hu $s0, $a0, 0
 ; LA32-NEXT:    ld.hu $a0, $a1, 0
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fmov.s $fs0, $fa0
 ; LA32-NEXT:    move $a0, $s0
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fadd.s $fa0, $fa0, $fs0
-; LA32-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA32-NEXT:    bl %plt(__truncsfhf2)
 ; LA32-NEXT:    st.h $a0, $fp, 0
 ; LA32-NEXT:    fld.d $fs0, $sp, 8 # 8-byte Folded Reload
 ; LA32-NEXT:    ld.w $s0, $sp, 20 # 4-byte Folded Reload
@@ -202,12 +202,12 @@ define void @test_fadd_mem(ptr %p, ptr %q) nounwind {
 ; LA64-NEXT:    move $fp, $a0
 ; LA64-NEXT:    ld.hu $s0, $a0, 0
 ; LA64-NEXT:    ld.hu $a0, $a1, 0
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fmov.s $fs0, $fa0
 ; LA64-NEXT:    move $a0, $s0
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fadd.s $fa0, $fa0, $fs0
-; LA64-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA64-NEXT:    bl %plt(__truncsfhf2)
 ; LA64-NEXT:    st.h $a0, $fp, 0
 ; LA64-NEXT:    fld.d $fs0, $sp, 0 # 8-byte Folded Reload
 ; LA64-NEXT:    ld.d $s0, $sp, 8 # 8-byte Folded Reload
@@ -231,12 +231,12 @@ define half @test_fmul_reg(half %a, half %b) nounwind {
 ; LA32-NEXT:    fst.d $fs0, $sp, 0 # 8-byte Folded Spill
 ; LA32-NEXT:    move $fp, $a0
 ; LA32-NEXT:    move $a0, $a1
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fmov.s $fs0, $fa0
 ; LA32-NEXT:    move $a0, $fp
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fmul.s $fa0, $fa0, $fs0
-; LA32-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA32-NEXT:    bl %plt(__truncsfhf2)
 ; LA32-NEXT:    fld.d $fs0, $sp, 0 # 8-byte Folded Reload
 ; LA32-NEXT:    ld.w $fp, $sp, 8 # 4-byte Folded Reload
 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
@@ -251,12 +251,12 @@ define half @test_fmul_reg(half %a, half %b) nounwind {
 ; LA64-NEXT:    fst.d $fs0, $sp, 8 # 8-byte Folded Spill
 ; LA64-NEXT:    move $fp, $a0
 ; LA64-NEXT:    move $a0, $a1
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fmov.s $fs0, $fa0
 ; LA64-NEXT:    move $a0, $fp
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fmul.s $fa0, $fa0, $fs0
-; LA64-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA64-NEXT:    bl %plt(__truncsfhf2)
 ; LA64-NEXT:    fld.d $fs0, $sp, 8 # 8-byte Folded Reload
 ; LA64-NEXT:    ld.d $fp, $sp, 16 # 8-byte Folded Reload
 ; LA64-NEXT:    ld.d $ra, $sp, 24 # 8-byte Folded Reload
@@ -277,12 +277,12 @@ define void @test_fmul_mem(ptr %p, ptr %q) nounwind {
 ; LA32-NEXT:    move $fp, $a0
 ; LA32-NEXT:    ld.hu $s0, $a0, 0
 ; LA32-NEXT:    ld.hu $a0, $a1, 0
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fmov.s $fs0, $fa0
 ; LA32-NEXT:    move $a0, $s0
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fmul.s $fa0, $fa0, $fs0
-; LA32-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA32-NEXT:    bl %plt(__truncsfhf2)
 ; LA32-NEXT:    st.h $a0, $fp, 0
 ; LA32-NEXT:    fld.d $fs0, $sp, 8 # 8-byte Folded Reload
 ; LA32-NEXT:    ld.w $s0, $sp, 20 # 4-byte Folded Reload
@@ -301,12 +301,12 @@ define void @test_fmul_mem(ptr %p, ptr %q) nounwind {
 ; LA64-NEXT:    move $fp, $a0
 ; LA64-NEXT:    ld.hu $s0, $a0, 0
 ; LA64-NEXT:    ld.hu $a0, $a1, 0
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fmov.s $fs0, $fa0
 ; LA64-NEXT:    move $a0, $s0
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fmul.s $fa0, $fa0, $fs0
-; LA64-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA64-NEXT:    bl %plt(__truncsfhf2)
 ; LA64-NEXT:    st.h $a0, $fp, 0
 ; LA64-NEXT:    fld.d $fs0, $sp, 0 # 8-byte Folded Reload
 ; LA64-NEXT:    ld.d $s0, $sp, 8 # 8-byte Folded Reload
@@ -327,10 +327,10 @@ define half @freeze_half_undef() nounwind {
 ; LA32-NEXT:    addi.w $sp, $sp, -16
 ; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
 ; LA32-NEXT:    movgr2fr.w $fa0, $zero
-; LA32-NEXT:    bl %plt(__gnu_f2h_ieee)
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__truncsfhf2)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fadd.s $fa0, $fa0, $fa0
-; LA32-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA32-NEXT:    bl %plt(__truncsfhf2)
 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
 ; LA32-NEXT:    addi.w $sp, $sp, 16
 ; LA32-NEXT:    ret
@@ -340,10 +340,10 @@ define half @freeze_half_undef() nounwind {
 ; LA64-NEXT:    addi.d $sp, $sp, -16
 ; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
 ; LA64-NEXT:    movgr2fr.w $fa0, $zero
-; LA64-NEXT:    bl %plt(__gnu_f2h_ieee)
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__truncsfhf2)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fadd.s $fa0, $fa0, $fa0
-; LA64-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA64-NEXT:    bl %plt(__truncsfhf2)
 ; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
 ; LA64-NEXT:    addi.d $sp, $sp, 16
 ; LA64-NEXT:    ret
@@ -357,9 +357,9 @@ define half @freeze_half_poison(half %maybe.poison) nounwind {
 ; LA32:       # %bb.0:
 ; LA32-NEXT:    addi.w $sp, $sp, -16
 ; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    fadd.s $fa0, $fa0, $fa0
-; LA32-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA32-NEXT:    bl %plt(__truncsfhf2)
 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
 ; LA32-NEXT:    addi.w $sp, $sp, 16
 ; LA32-NEXT:    ret
@@ -368,9 +368,9 @@ define half @freeze_half_poison(half %maybe.poison) nounwind {
 ; LA64:       # %bb.0:
 ; LA64-NEXT:    addi.d $sp, $sp, -16
 ; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    fadd.s $fa0, $fa0, $fa0
-; LA64-NEXT:    bl %plt(__gnu_f2h_ieee)
+; LA64-NEXT:    bl %plt(__truncsfhf2)
 ; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
 ; LA64-NEXT:    addi.d $sp, $sp, 16
 ; LA64-NEXT:    ret
@@ -384,7 +384,7 @@ define signext i32 @test_half_to_s32(half %a) nounwind {
 ; LA32:       # %bb.0: # %entry
 ; LA32-NEXT:    addi.w $sp, $sp, -16
 ; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    ftintrz.w.s $fa0, $fa0
 ; LA32-NEXT:    movfr2gr.s $a0, $fa0
 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
@@ -395,7 +395,7 @@ define signext i32 @test_half_to_s32(half %a) nounwind {
 ; LA64:       # %bb.0: # %entry
 ; LA64-NEXT:    addi.d $sp, $sp, -16
 ; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    ftintrz.w.s $fa0, $fa0
 ; LA64-NEXT:    movfr2gr.s $a0, $fa0
 ; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
@@ -411,7 +411,7 @@ define zeroext i32 @test_half_to_s32_u32(half %a) nounwind {
 ; LA32:       # %bb.0: # %entry
 ; LA32-NEXT:    addi.w $sp, $sp, -16
 ; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    ftintrz.w.s $fa0, $fa0
 ; LA32-NEXT:    movfr2gr.s $a0, $fa0
 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
@@ -422,7 +422,7 @@ define zeroext i32 @test_half_to_s32_u32(half %a) nounwind {
 ; LA64:       # %bb.0: # %entry
 ; LA64-NEXT:    addi.d $sp, $sp, -16
 ; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    ftintrz.w.s $fa0, $fa0
 ; LA64-NEXT:    movfr2gr.s $a0, $fa0
 ; LA64-NEXT:    bstrpick.d $a0, $a0, 31, 0
@@ -439,7 +439,7 @@ define i64 @test_half_to_i64(half %a) nounwind {
 ; LA32:       # %bb.0: # %entry
 ; LA32-NEXT:    addi.w $sp, $sp, -16
 ; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
-; LA32-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA32-NEXT:    bl %plt(__extendhfsf2)
 ; LA32-NEXT:    bl %plt(__fixsfdi)
 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
 ; LA32-NEXT:    addi.w $sp, $sp, 16
@@ -449,7 +449,7 @@ define i64 @test_half_to_i64(half %a) nounwind {
 ; LA64:       # %bb.0: # %entry
 ; LA64-NEXT:    addi.d $sp, $sp, -16
 ; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
-; LA64-NEXT:    bl %plt(__gnu_h2f_ieee)
+; LA64-NEXT:    bl %plt(__extendhfsf2)
 ; LA64-NEXT:    ftintrz.l.s $fa0, $fa0
 ; LA64-NEXT:    movfr2gr.d $a0, $fa0
 ; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
diff --git a/llvm/test/CodeGen/Mips/fp16-promote.ll b/llvm/test/CodeGen/Mips/fp16-promote.ll
index 47bace9f5c03f..c03ca3a6d78dd 100644
--- a/llvm/test/CodeGen/Mips/fp16-promote.ll
+++ b/llvm/test/CodeGen/Mips/fp16-promote.ll
@@ -11,12 +11,12 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
 ; MIPS32-NEXT:    sw $16, 16($sp) # 4-byte Folded Spill
 ; MIPS32-NEXT:    move $16, $4
 ; MIPS32-NEXT:    lhu $4, 0($5)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    nop
 ; MIPS32-NEXT:    lhu $4, 0($16)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    mov.s $f20, $f0
-; MIPS32-NEXT:    jal __gnu_f2h_ieee
+; MIPS32-NEXT:    jal __truncsfhf2
 ; MIPS32-NEXT:    add.s $f12, $f0, $f20
 ; MIPS32-NEXT:    sh $2, 0($16)
 ; MIPS32-NEXT:    lw $16, 16($sp) # 4-byte Folded Reload
@@ -33,12 +33,12 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
 ; MIPS64-NEXT:    sd $16, 8($sp) # 8-byte Folded Spill
 ; MIPS64-NEXT:    move $16, $4
 ; MIPS64-NEXT:    lhu $4, 0($5)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    nop
 ; MIPS64-NEXT:    lhu $4, 0($16)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    mov.s $f24, $f0
-; MIPS64-NEXT:    jal __gnu_f2h_ieee
+; MIPS64-NEXT:    jal __truncsfhf2
 ; MIPS64-NEXT:    add.s $f12, $f0, $f24
 ; MIPS64-NEXT:    sh $2, 0($16)
 ; MIPS64-NEXT:    ld $16, 8($sp) # 8-byte Folded Reload
@@ -59,7 +59,7 @@ define float @test_fpext_float(ptr %p) nounwind {
 ; MIPS32-NEXT:    addiu $sp, $sp, -24
 ; MIPS32-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill
 ; MIPS32-NEXT:    lhu $4, 0($4)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    nop
 ; MIPS32-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload
 ; MIPS32-NEXT:    jr $ra
@@ -70,7 +70,7 @@ define float @test_fpext_float(ptr %p) nounwind {
 ; MIPS64-NEXT:    daddiu $sp, $sp, -16
 ; MIPS64-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
 ; MIPS64-NEXT:    lhu $4, 0($4)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    nop
 ; MIPS64-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
 ; MIPS64-NEXT:    jr $ra
@@ -86,7 +86,7 @@ define double @test_fpext_double(ptr %p) nounwind {
 ; MIPS32-NEXT:    addiu $sp, $sp, -24
 ; MIPS32-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill
 ; MIPS32-NEXT:    lhu $4, 0($4)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    nop
 ; MIPS32-NEXT:    cvt.d.s $f0, $f0
 ; MIPS32-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload
@@ -98,7 +98,7 @@ define double @test_fpext_double(ptr %p) nounwind {
 ; MIPS64-NEXT:    daddiu $sp, $sp, -16
 ; MIPS64-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
 ; MIPS64-NEXT:    lhu $4, 0($4)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    nop
 ; MIPS64-NEXT:    cvt.d.s $f0, $f0
 ; MIPS64-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
@@ -115,7 +115,7 @@ define void @test_fptrunc_float(float %f, ptr %p) nounwind {
 ; MIPS32-NEXT:    addiu $sp, $sp, -24
 ; MIPS32-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill
 ; MIPS32-NEXT:    sw $16, 16($sp) # 4-byte Folded Spill
-; MIPS32-NEXT:    jal __gnu_f2h_ieee
+; MIPS32-NEXT:    jal __truncsfhf2
 ; MIPS32-NEXT:    move $16, $5
 ; MIPS32-NEXT:    sh $2, 0($16)
 ; MIPS32-NEXT:    lw $16, 16($sp) # 4-byte Folded Reload
@@ -128,7 +128,7 @@ define void @test_fptrunc_float(float %f, ptr %p) nounwind {
 ; MIPS64-NEXT:    daddiu $sp, $sp, -16
 ; MIPS64-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
 ; MIPS64-NEXT:    sd $16, 0($sp) # 8-byte Folded Spill
-; MIPS64-NEXT:    jal __gnu_f2h_ieee
+; MIPS64-NEXT:    jal __truncsfhf2
 ; MIPS64-NEXT:    move $16, $5
 ; MIPS64-NEXT:    sh $2, 0($16)
 ; MIPS64-NEXT:    ld $16, 0($sp) # 8-byte Folded Reload
@@ -180,18 +180,18 @@ define <4 x float> @test_vec_fpext_float(ptr %p) nounwind {
 ; MIPS32-NEXT:    sw $16, 20($sp) # 4-byte Folded Spill
 ; MIPS32-NEXT:    move $17, $4
 ; MIPS32-NEXT:    lhu $4, 6($5)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    move $16, $5
 ; MIPS32-NEXT:    lhu $4, 4($16)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    swc1 $f0, 12($17)
 ; MIPS32-NEXT:    swc1 $f0, 8($17)
 ; MIPS32-NEXT:    lhu $4, 2($16)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    nop
 ; MIPS32-NEXT:    swc1 $f0, 4($17)
 ; MIPS32-NEXT:    lhu $4, 0($16)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    nop
 ; MIPS32-NEXT:    swc1 $f0, 0($17)
 ; MIPS32-NEXT:    lw $16, 20($sp) # 4-byte Folded Reload
@@ -209,21 +209,21 @@ define <4 x float> @test_vec_fpext_float(ptr %p) nounwind {
 ; MIPS64-NEXT:    sd $16, 0($sp) # 8-byte Folded Spill
 ; MIPS64-NEXT:    move $16, $4
 ; MIPS64-NEXT:    lhu $4, 2($4)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    nop
 ; MIPS64-NEXT:    lhu $4, 6($16)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    mfc1 $17, $f0
 ; MIPS64-NEXT:    mfc1 $18, $f0
 ; MIPS64-NEXT:    lhu $4, 0($16)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    dsll $17, $17, 32
 ; MIPS64-NEXT:    mfc1 $1, $f0
 ; MIPS64-NEXT:    dsll $1, $1, 32
 ; MIPS64-NEXT:    dsrl $1, $1, 32
 ; MIPS64-NEXT:    or $17, $1, $17
 ; MIPS64-NEXT:    lhu $4, 4($16)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    dsll $18, $18, 32
 ; MIPS64-NEXT:    mfc1 $1, $f0
 ; MIPS64-NEXT:    dsll $1, $1, 32
@@ -251,21 +251,21 @@ define <4 x double> @test_vec_fpext_double(ptr %p) nounwind {
 ; MIPS32-NEXT:    sw $16, 20($sp) # 4-byte Folded Spill
 ; MIPS32-NEXT:    move $17, $4
 ; MIPS32-NEXT:    lhu $4, 6($5)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    move $16, $5
 ; MIPS32-NEXT:    lhu $4, 4($16)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    mov.s $f20, $f0
 ; MIPS32-NEXT:    lhu $4, 2($16)
 ; MIPS32-NEXT:    cvt.d.s $f0, $f0
 ; MIPS32-NEXT:    cvt.d.s $f2, $f20
 ; MIPS32-NEXT:    sdc1 $f2, 24($17)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    sdc1 $f0, 16($17)
 ; MIPS32-NEXT:    cvt.d.s $f0, $f0
 ; MIPS32-NEXT:    sdc1 $f0, 8($17)
 ; MIPS32-NEXT:    lhu $4, 0($16)
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    nop
 ; MIPS32-NEXT:    cvt.d.s $f0, $f0
 ; MIPS32-NEXT:    sdc1 $f0, 0($17)
@@ -285,21 +285,21 @@ define <4 x double> @test_vec_fpext_double(ptr %p) nounwind {
 ; MIPS64-NEXT:    sd $16, 0($sp) # 8-byte Folded Spill
 ; MIPS64-NEXT:    move $17, $4
 ; MIPS64-NEXT:    lhu $4, 6($5)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    move $16, $5
 ; MIPS64-NEXT:    lhu $4, 4($16)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    mov.s $f24, $f0
 ; MIPS64-NEXT:    lhu $4, 2($16)
 ; MIPS64-NEXT:    cvt.d.s $f0, $f0
 ; MIPS64-NEXT:    cvt.d.s $f1, $f24
 ; MIPS64-NEXT:    sdc1 $f1, 24($17)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    sdc1 $f0, 16($17)
 ; MIPS64-NEXT:    cvt.d.s $f0, $f0
 ; MIPS64-NEXT:    sdc1 $f0, 8($17)
 ; MIPS64-NEXT:    lhu $4, 0($16)
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    nop
 ; MIPS64-NEXT:    cvt.d.s $f0, $f0
 ; MIPS64-NEXT:    sdc1 $f0, 0($17)
@@ -326,18 +326,18 @@ define void @test_vec_fptrunc_float(<4 x float> %a, ptr %p) nounwind {
 ; MIPS32-NEXT:    move $16, $7
 ; MIPS32-NEXT:    move $17, $5
 ; MIPS32-NEXT:    move $18, $4
-; MIPS32-NEXT:    jal __gnu_f2h_ieee
+; MIPS32-NEXT:    jal __truncsfhf2
 ; MIPS32-NEXT:    mtc1 $6, $f12
 ; MIPS32-NEXT:    move $19, $2
-; MIPS32-NEXT:    jal __gnu_f2h_ieee
+; MIPS32-NEXT:    jal __truncsfhf2
 ; MIPS32-NEXT:    mtc1 $16, $f12
 ; MIPS32-NEXT:    mtc1 $17, $f12
 ; MIPS32-NEXT:    lw $16, 56($sp)
 ; MIPS32-NEXT:    sh $2, 6($16)
-; MIPS32-NEXT:    jal __gnu_f2h_ieee
+; MIPS32-NEXT:    jal __truncsfhf2
 ; MIPS32-NEXT:    sh $19, 4($16)
 ; MIPS32-NEXT:    sh $2, 2($16)
-; MIPS32-NEXT:    jal __gnu_f2h_ieee
+; MIPS32-NEXT:    jal __truncsfhf2
 ; MIPS32-NEXT:    mtc1 $18, $f12
 ; MIPS32-NEXT:    sh $2, 0($16)
 ; MIPS32-NEXT:    lw $16, 20($sp) # 4-byte Folded Reload
@@ -360,22 +360,22 @@ define void @test_vec_fptrunc_float(<4 x float> %a, ptr %p) nounwind {
 ; MIPS64-NEXT:    move $17, $5
 ; MIPS64-NEXT:    move $18, $4
 ; MIPS64-NEXT:    sll $1, $18, 0
-; MIPS64-NEXT:    jal __gnu_f2h_ieee
+; MIPS64-NEXT:    jal __truncsfhf2
 ; MIPS64-NEXT:    mtc1 $1, $f12
 ; MIPS64-NEXT:    move $19, $2
 ; MIPS64-NEXT:    sll $1, $17, 0
-; MIPS64-NEXT:    jal __gnu_f2h_ieee
+; MIPS64-NEXT:    jal __truncsfhf2
 ; MIPS64-NEXT:    mtc1 $1, $f12
 ; MIPS64-NEXT:    dsrl $1, $17, 32
 ; MIPS64-NEXT:    sll $1, $1, 0
 ; MIPS64-NEXT:    mtc1 $1, $f12
 ; MIPS64-NEXT:    sh $2, 4($16)
-; MIPS64-NEXT:    jal __gnu_f2h_ieee
+; MIPS64-NEXT:    jal __truncsfhf2
 ; MIPS64-NEXT:    sh $19, 0($16)
 ; MIPS64-NEXT:    sh $2, 6($16)
 ; MIPS64-NEXT:    dsrl $1, $18, 32
 ; MIPS64-NEXT:    sll $1, $1, 0
-; MIPS64-NEXT:    jal __gnu_f2h_ieee
+; MIPS64-NEXT:    jal __truncsfhf2
 ; MIPS64-NEXT:    mtc1 $1, $f12
 ; MIPS64-NEXT:    sh $2, 2($16)
 ; MIPS64-NEXT:    ld $16, 8($sp) # 8-byte Folded Reload
@@ -484,19 +484,19 @@ define half @test_fadd_fadd(half %a, half %b, half %c) nounwind {
 ; MIPS32-NEXT:    sw $16, 20($sp) # 4-byte Folded Spill
 ; MIPS32-NEXT:    move $16, $6
 ; MIPS32-NEXT:    move $17, $4
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    move $4, $5
 ; MIPS32-NEXT:    mov.s $f20, $f0
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    move $4, $17
-; MIPS32-NEXT:    jal __gnu_f2h_ieee
+; MIPS32-NEXT:    jal __truncsfhf2
 ; MIPS32-NEXT:    add.s $f12, $f0, $f20
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    move $4, $2
 ; MIPS32-NEXT:    mov.s $f20, $f0
-; MIPS32-NEXT:    jal __gnu_h2f_ieee
+; MIPS32-NEXT:    jal __extendhfsf2
 ; MIPS32-NEXT:    move $4, $16
-; MIPS32-NEXT:    jal __gnu_f2h_ieee
+; MIPS32-NEXT:    jal __truncsfhf2
 ; MIPS32-NEXT:    add.s $f12, $f20, $f0
 ; MIPS32-NEXT:    lw $16, 20($sp) # 4-byte Folded Reload
 ; MIPS32-NEXT:    lw $17, 24($sp) # 4-byte Folded Reload
@@ -514,19 +514,19 @@ define half @test_fadd_fadd(half %a, half %b, half %c) nounwind {
 ; MIPS64-NEXT:    sd $16, 0($sp) # 8-byte Folded Spill
 ; MIPS64-NEXT:    move $16, $6
 ; MIPS64-NEXT:    move $17, $4
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    sll $4, $5, 0
 ; MIPS64-NEXT:    mov.s $f24, $f0
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    sll $4, $17, 0
-; MIPS64-NEXT:    jal __gnu_f2h_ieee
+; MIPS64-NEXT:    jal __truncsfhf2
 ; MIPS64-NEXT:    add.s $f12, $f0, $f24
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    sll $4, $2, 0
 ; MIPS64-NEXT:    mov.s $f24, $f0
-; MIPS64-NEXT:    jal __gnu_h2f_ieee
+; MIPS64-NEXT:    jal __extendhfsf2
 ; MIPS64-NEXT:    sll $4, $16, 0
-; MIPS64-NEXT:    jal __gnu_f2h_ieee
+; MIPS64-NEXT:    jal __truncsfhf2
 ; MIPS64-NEXT:    add.s $f12, $f24, $f0
 ; MIPS64-NEXT:    ld $16, 0($sp) # 8-byte Folded Reload
 ; MIPS64-NEXT:    ld $17, 8($sp) # 8-byte Folded Reload
diff --git a/llvm/test/CodeGen/Mips/ldexp.ll b/llvm/test/CodeGen/Mips/ldexp.ll
index 3753fd567a3ed..4debc6ddce4aa 100644
--- a/llvm/test/CodeGen/Mips/ldexp.ll
+++ b/llvm/test/CodeGen/Mips/ldexp.ll
@@ -128,12 +128,12 @@ define half @ldexp_f16(half %arg0, i32 %arg1) {
 ; SOFT-NEXT:    .cfi_offset 31, -4
 ; SOFT-NEXT:    .cfi_offset 16, -8
 ; SOFT-NEXT:    move $16, $5
-; SOFT-NEXT:    jal __gnu_h2f_ieee
+; SOFT-NEXT:    jal __extendhfsf2
 ; SOFT-NEXT:    andi $4, $4, 65535
 ; SOFT-NEXT:    move $4, $2
 ; SOFT-NEXT:    jal ldexpf
 ; SOFT-NEXT:    move $5, $16
-; SOFT-NEXT:    jal __gnu_f2h_ieee
+; SOFT-NEXT:    jal __truncsfhf2
 ; SOFT-NEXT:    move $4, $2
 ; SOFT-NEXT:    lw $16, 16($sp) # 4-byte Folded Reload
 ; SOFT-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload
diff --git a/llvm/test/CodeGen/PowerPC/atomics.ll b/llvm/test/CodeGen/PowerPC/atomics.ll
index 07bdbb25a746a..24e71c87414e8 100644
--- a/llvm/test/CodeGen/PowerPC/atomics.ll
+++ b/llvm/test/CodeGen/PowerPC/atomics.ll
@@ -476,7 +476,7 @@ define half @load_atomic_f16__seq_cst(ptr %ptr) {
 ; PPC32-NEXT:    cmpw cr7, r3, r3
 ; PPC32-NEXT:    bne- cr7, .+4
 ; PPC32-NEXT:    isync
-; PPC32-NEXT:    bl __gnu_h2f_ieee
+; PPC32-NEXT:    bl __extendhfsf2
 ; PPC32-NEXT:    lwz r0, 20(r1)
 ; PPC32-NEXT:    addi r1, r1, 16
 ; PPC32-NEXT:    mtlr r0
@@ -494,7 +494,7 @@ define half @load_atomic_f16__seq_cst(ptr %ptr) {
 ; PPC64-NEXT:    cmpd cr7, r3, r3
 ; PPC64-NEXT:    bne- cr7, .+4
 ; PPC64-NEXT:    isync
-; PPC64-NEXT:    bl __gnu_h2f_ieee
+; PPC64-NEXT:    bl __extendhfsf2
 ; PPC64-NEXT:    nop
 ; PPC64-NEXT:    addi r1, r1, 112
 ; PPC64-NEXT:    ld r0, 16(r1)
@@ -582,7 +582,7 @@ define void @store_atomic_f16__seq_cst(ptr %ptr, half %val1) {
 ; PPC32-NEXT:    .cfi_offset r30, -8
 ; PPC32-NEXT:    stw r30, 8(r1) # 4-byte Folded Spill
 ; PPC32-NEXT:    mr r30, r3
-; PPC32-NEXT:    bl __gnu_f2h_ieee
+; PPC32-NEXT:    bl __truncsfhf2
 ; PPC32-NEXT:    sync
 ; PPC32-NEXT:    sth r3, 0(r30)
 ; PPC32-NEXT:    lwz r30, 8(r1) # 4-byte Folded Reload
@@ -601,7 +601,7 @@ define void @store_atomic_f16__seq_cst(ptr %ptr, half %val1) {
 ; PPC64-NEXT:    .cfi_offset r30, -16
 ; PPC64-NEXT:    std r30, 112(r1) # 8-byte Folded Spill
 ; PPC64-NEXT:    mr r30, r3
-; PPC64-NEXT:    bl __gnu_f2h_ieee
+; PPC64-NEXT:    bl __truncsfhf2
 ; PPC64-NEXT:    nop
 ; PPC64-NEXT:    sync
 ; PPC64-NEXT:    sth r3, 0(r30)
diff --git a/llvm/test/CodeGen/PowerPC/handle-f16-storage-type.ll b/llvm/test/CodeGen/PowerPC/handle-f16-storage-type.ll
index 4256933300243..50f05cca80458 100644
--- a/llvm/test/CodeGen/PowerPC/handle-f16-storage-type.ll
+++ b/llvm/test/CodeGen/PowerPC/handle-f16-storage-type.ll
@@ -17,7 +17,7 @@ define dso_local double @loadd(ptr nocapture readonly %a) local_unnamed_addr #0
 ; P8-NEXT:    stdu r1, -32(r1)
 ; P8-NEXT:    std r0, 48(r1)
 ; P8-NEXT:    lhz r3, 2(r3)
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    addi r1, r1, 32
 ; P8-NEXT:    ld r0, 16(r1)
@@ -37,7 +37,7 @@ define dso_local double @loadd(ptr nocapture readonly %a) local_unnamed_addr #0
 ; SOFT-NEXT:    stdu r1, -32(r1)
 ; SOFT-NEXT:    std r0, 48(r1)
 ; SOFT-NEXT:    lhz r3, 2(r3)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    bl __extendsfdf2
 ; SOFT-NEXT:    nop
@@ -61,7 +61,7 @@ define dso_local float @loadf(ptr nocapture readonly %a) local_unnamed_addr #0 {
 ; P8-NEXT:    stdu r1, -32(r1)
 ; P8-NEXT:    std r0, 48(r1)
 ; P8-NEXT:    lhz r3, 2(r3)
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    addi r1, r1, 32
 ; P8-NEXT:    ld r0, 16(r1)
@@ -81,7 +81,7 @@ define dso_local float @loadf(ptr nocapture readonly %a) local_unnamed_addr #0 {
 ; SOFT-NEXT:    stdu r1, -32(r1)
 ; SOFT-NEXT:    std r0, 48(r1)
 ; SOFT-NEXT:    lhz r3, 2(r3)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    addi r1, r1, 32
 ; SOFT-NEXT:    ld r0, 16(r1)
@@ -130,9 +130,9 @@ define dso_local void @stored(ptr nocapture %a, double %b) local_unnamed_addr #0
 ; SOFT-NEXT:    bl __truncdfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 0(r30)
 ; SOFT-NEXT:    addi r1, r1, 48
@@ -156,7 +156,7 @@ define dso_local void @storef(ptr nocapture %a, float %b) local_unnamed_addr #0
 ; P8-NEXT:    stdu r1, -48(r1)
 ; P8-NEXT:    std r0, 64(r1)
 ; P8-NEXT:    mr r30, r3
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    sth r3, 0(r30)
 ; P8-NEXT:    addi r1, r1, 48
@@ -179,12 +179,12 @@ define dso_local void @storef(ptr nocapture %a, float %b) local_unnamed_addr #0
 ; SOFT-NEXT:    mr r30, r3
 ; SOFT-NEXT:    clrldi r3, r4, 32
 ; SOFT-NEXT:    std r0, 64(r1)
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 0(r30)
 ; SOFT-NEXT:    addi r1, r1, 48
@@ -220,9 +220,9 @@ define void @test_load_store(ptr %in, ptr %out) #0 {
 ; SOFT-NEXT:    std r0, 64(r1)
 ; SOFT-NEXT:    mr r30, r4
 ; SOFT-NEXT:    lhz r3, 0(r3)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 0(r30)
 ; SOFT-NEXT:    addi r1, r1, 48
@@ -279,7 +279,7 @@ define float @test_extend32(ptr %addr) #0 {
 ; P8-NEXT:    stdu r1, -32(r1)
 ; P8-NEXT:    std r0, 48(r1)
 ; P8-NEXT:    lhz r3, 0(r3)
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    addi r1, r1, 32
 ; P8-NEXT:    ld r0, 16(r1)
@@ -298,7 +298,7 @@ define float @test_extend32(ptr %addr) #0 {
 ; SOFT-NEXT:    stdu r1, -32(r1)
 ; SOFT-NEXT:    std r0, 48(r1)
 ; SOFT-NEXT:    lhz r3, 0(r3)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    addi r1, r1, 32
 ; SOFT-NEXT:    ld r0, 16(r1)
@@ -315,7 +315,7 @@ define double @test_extend64(ptr %addr) #0 {
 ; P8-NEXT:    stdu r1, -32(r1)
 ; P8-NEXT:    std r0, 48(r1)
 ; P8-NEXT:    lhz r3, 0(r3)
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    addi r1, r1, 32
 ; P8-NEXT:    ld r0, 16(r1)
@@ -334,7 +334,7 @@ define double @test_extend64(ptr %addr) #0 {
 ; SOFT-NEXT:    stdu r1, -32(r1)
 ; SOFT-NEXT:    std r0, 48(r1)
 ; SOFT-NEXT:    lhz r3, 0(r3)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    bl __extendsfdf2
 ; SOFT-NEXT:    nop
@@ -354,7 +354,7 @@ define void @test_trunc32(float %in, ptr %addr) #0 {
 ; P8-NEXT:    stdu r1, -48(r1)
 ; P8-NEXT:    std r0, 64(r1)
 ; P8-NEXT:    mr r30, r4
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    sth r3, 0(r30)
 ; P8-NEXT:    addi r1, r1, 48
@@ -377,12 +377,12 @@ define void @test_trunc32(float %in, ptr %addr) #0 {
 ; SOFT-NEXT:    clrldi r3, r3, 32
 ; SOFT-NEXT:    std r0, 64(r1)
 ; SOFT-NEXT:    mr r30, r4
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 0(r30)
 ; SOFT-NEXT:    addi r1, r1, 48
@@ -427,9 +427,9 @@ define void @test_trunc64(double %in, ptr %addr) #0 {
 ; SOFT-NEXT:    bl __truncdfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 0(r30)
 ; SOFT-NEXT:    addi r1, r1, 48
@@ -448,7 +448,7 @@ define i64 @test_fptosi_i64(ptr %p) #0 {
 ; P8-NEXT:    stdu r1, -32(r1)
 ; P8-NEXT:    std r0, 48(r1)
 ; P8-NEXT:    lhz r3, 0(r3)
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    xscvdpsxds f0, f1
 ; P8-NEXT:    mffprd r3, f0
@@ -472,7 +472,7 @@ define i64 @test_fptosi_i64(ptr %p) #0 {
 ; SOFT-NEXT:    stdu r1, -32(r1)
 ; SOFT-NEXT:    std r0, 48(r1)
 ; SOFT-NEXT:    lhz r3, 0(r3)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    bl __fixsfdi
 ; SOFT-NEXT:    nop
@@ -494,7 +494,7 @@ define void @test_sitofp_i64(i64 %a, ptr %p) #0 {
 ; P8-NEXT:    std r0, 64(r1)
 ; P8-NEXT:    mr r30, r4
 ; P8-NEXT:    xscvsxdsp f1, f0
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    sth r3, 0(r30)
 ; P8-NEXT:    addi r1, r1, 48
@@ -522,12 +522,12 @@ define void @test_sitofp_i64(i64 %a, ptr %p) #0 {
 ; SOFT-NEXT:    bl __floatdisf
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 32
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 0(r30)
 ; SOFT-NEXT:    addi r1, r1, 48
@@ -546,7 +546,7 @@ define i64 @test_fptoui_i64(ptr %p) #0 {
 ; P8-NEXT:    stdu r1, -32(r1)
 ; P8-NEXT:    std r0, 48(r1)
 ; P8-NEXT:    lhz r3, 0(r3)
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    xscvdpuxds f0, f1
 ; P8-NEXT:    mffprd r3, f0
@@ -570,7 +570,7 @@ define i64 @test_fptoui_i64(ptr %p) #0 {
 ; SOFT-NEXT:    stdu r1, -32(r1)
 ; SOFT-NEXT:    std r0, 48(r1)
 ; SOFT-NEXT:    lhz r3, 0(r3)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    bl __fixunssfdi
 ; SOFT-NEXT:    nop
@@ -592,7 +592,7 @@ define void @test_uitofp_i64(i64 %a, ptr %p) #0 {
 ; P8-NEXT:    std r0, 64(r1)
 ; P8-NEXT:    mr r30, r4
 ; P8-NEXT:    xscvuxdsp f1, f0
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    sth r3, 0(r30)
 ; P8-NEXT:    addi r1, r1, 48
@@ -619,12 +619,12 @@ define void @test_uitofp_i64(i64 %a, ptr %p) #0 {
 ; SOFT-NEXT:    mr r30, r4
 ; SOFT-NEXT:    bl __floatundisf
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 0(r30)
 ; SOFT-NEXT:    addi r1, r1, 48
@@ -651,19 +651,19 @@ define <4 x float> @test_extend32_vec4(ptr %p) #0 {
 ; P8-NEXT:    stxvd2x vs62, r1, r4 # 16-byte Folded Spill
 ; P8-NEXT:    li r4, 80
 ; P8-NEXT:    stxvd2x vs63, r1, r4 # 16-byte Folded Spill
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    lhz r3, 2(r30)
 ; P8-NEXT:    xxlor vs63, f1, f1
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    lhz r3, 4(r30)
 ; P8-NEXT:    xxlor vs62, f1, f1
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    lhz r3, 0(r30)
 ; P8-NEXT:    xxlor vs61, f1, f1
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    li r3, 80
 ; P8-NEXT:    xxmrghd vs0, vs61, vs1
@@ -714,19 +714,19 @@ define <4 x float> @test_extend32_vec4(ptr %p) #0 {
 ; SOFT-NEXT:    std r0, 96(r1)
 ; SOFT-NEXT:    mr r30, r3
 ; SOFT-NEXT:    lhz r3, 0(r3)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r29, r3
 ; SOFT-NEXT:    lhz r3, 2(r30)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r28, r3
 ; SOFT-NEXT:    lhz r3, 4(r30)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r27, r3
 ; SOFT-NEXT:    lhz r3, 6(r30)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r6, r3
 ; SOFT-NEXT:    mr r3, r29
@@ -759,19 +759,19 @@ define <4 x double> @test_extend64_vec4(ptr %p) #0 {
 ; P8-NEXT:    stxvd2x vs62, r1, r4 # 16-byte Folded Spill
 ; P8-NEXT:    li r4, 80
 ; P8-NEXT:    stxvd2x vs63, r1, r4 # 16-byte Folded Spill
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    lhz r3, 4(r30)
 ; P8-NEXT:    xxlor vs63, f1, f1
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    lhz r3, 2(r30)
 ; P8-NEXT:    xxlor vs62, f1, f1
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    lhz r3, 0(r30)
 ; P8-NEXT:    xxlor vs61, f1, f1
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    li r3, 80
 ; P8-NEXT:    xxmrghd vs35, vs63, vs62
@@ -816,25 +816,25 @@ define <4 x double> @test_extend64_vec4(ptr %p) #0 {
 ; SOFT-NEXT:    std r0, 96(r1)
 ; SOFT-NEXT:    mr r30, r3
 ; SOFT-NEXT:    lhz r3, 0(r3)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    bl __extendsfdf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r29, r3
 ; SOFT-NEXT:    lhz r3, 2(r30)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    bl __extendsfdf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r28, r3
 ; SOFT-NEXT:    lhz r3, 4(r30)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    bl __extendsfdf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r27, r3
 ; SOFT-NEXT:    lhz r3, 6(r30)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    bl __extendsfdf2
 ; SOFT-NEXT:    nop
@@ -870,21 +870,21 @@ define void @test_trunc32_vec4(<4 x float> %a, ptr %p) #0 {
 ; P8-NEXT:    stxvd2x vs63, r1, r3 # 16-byte Folded Spill
 ; P8-NEXT:    mr r30, r5
 ; P8-NEXT:    vmr v31, v2
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    xxswapd vs0, vs63
 ; P8-NEXT:    mr r29, r3
 ; P8-NEXT:    xscvspdpn f1, vs0
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    xxsldwi vs0, vs63, vs63, 1
 ; P8-NEXT:    mr r28, r3
 ; P8-NEXT:    xscvspdpn f1, vs0
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    xscvspdpn f1, vs63
 ; P8-NEXT:    mr r27, r3
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    sth r3, 6(r30)
 ; P8-NEXT:    li r3, 48
@@ -939,48 +939,48 @@ define void @test_trunc32_vec4(<4 x float> %a, ptr %p) #0 {
 ; SOFT-NEXT:    mr r30, r7
 ; SOFT-NEXT:    mr r29, r5
 ; SOFT-NEXT:    mr r28, r4
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r26, r3
 ; SOFT-NEXT:    clrldi r3, r29, 32
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r29, r3
 ; SOFT-NEXT:    clrldi r3, r28, 32
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r28, r3
 ; SOFT-NEXT:    clrldi r3, r27, 32
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r27, r3
 ; SOFT-NEXT:    clrldi r3, r28, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r28, r3
 ; SOFT-NEXT:    clrldi r3, r29, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r29, r3
 ; SOFT-NEXT:    clrldi r3, r26, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 6(r30)
 ; SOFT-NEXT:    mr r3, r29
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 4(r30)
 ; SOFT-NEXT:    mr r3, r28
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 2(r30)
 ; SOFT-NEXT:    mr r3, r27
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 0(r30)
 ; SOFT-NEXT:    addi r1, r1, 80
@@ -1093,33 +1093,33 @@ define void @test_trunc64_vec4(<4 x double> %a, ptr %p) #0 {
 ; SOFT-NEXT:    bl __truncdfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r27, r3
 ; SOFT-NEXT:    clrldi r3, r28, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r28, r3
 ; SOFT-NEXT:    clrldi r3, r29, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r29, r3
 ; SOFT-NEXT:    clrldi r3, r26, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 6(r30)
 ; SOFT-NEXT:    mr r3, r29
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 4(r30)
 ; SOFT-NEXT:    mr r3, r28
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 2(r30)
 ; SOFT-NEXT:    mr r3, r27
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    sth r3, 0(r30)
 ; SOFT-NEXT:    addi r1, r1, 80
@@ -1145,15 +1145,15 @@ define float @test_sitofp_fadd_i32(i32 %a, ptr %b) #0 {
 ; P8-NEXT:    std r0, 80(r1)
 ; P8-NEXT:    mr r30, r3
 ; P8-NEXT:    lhz r3, 0(r4)
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    mtfprwa f0, r30
 ; P8-NEXT:    fmr f31, f1
 ; P8-NEXT:    xscvsxdsp f1, f0
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    clrldi r3, r3, 48
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    xsaddsp f1, f31, f1
 ; P8-NEXT:    addi r1, r1, 64
@@ -1187,17 +1187,17 @@ define float @test_sitofp_fadd_i32(i32 %a, ptr %b) #0 {
 ; SOFT-NEXT:    std r0, 80(r1)
 ; SOFT-NEXT:    mr r30, r3
 ; SOFT-NEXT:    lhz r3, 0(r4)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r29, r3
 ; SOFT-NEXT:    extsw r3, r30
 ; SOFT-NEXT:    bl __floatsisf
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 32
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    clrldi r3, r3, 48
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    mr r4, r3
 ; SOFT-NEXT:    mr r3, r29
@@ -1221,10 +1221,10 @@ define half @PR40273(half) #0 {
 ; P8-NEXT:    mflr r0
 ; P8-NEXT:    stdu r1, -32(r1)
 ; P8-NEXT:    std r0, 48(r1)
-; P8-NEXT:    bl __gnu_f2h_ieee
+; P8-NEXT:    bl __truncsfhf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    clrldi r3, r3, 48
-; P8-NEXT:    bl __gnu_h2f_ieee
+; P8-NEXT:    bl __extendhfsf2
 ; P8-NEXT:    nop
 ; P8-NEXT:    fmr f0, f1
 ; P8-NEXT:    xxlxor f1, f1, f1
@@ -1260,7 +1260,7 @@ define half @PR40273(half) #0 {
 ; SOFT-NEXT:    stdu r1, -32(r1)
 ; SOFT-NEXT:    clrldi r3, r3, 48
 ; SOFT-NEXT:    std r0, 48(r1)
-; SOFT-NEXT:    bl __gnu_h2f_ieee
+; SOFT-NEXT:    bl __extendhfsf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    li r4, 0
 ; SOFT-NEXT:    bl __nesf2
@@ -1268,7 +1268,7 @@ define half @PR40273(half) #0 {
 ; SOFT-NEXT:    cmplwi r3, 0
 ; SOFT-NEXT:    lis r3, 16256
 ; SOFT-NEXT:    iseleq r3, 0, r3
-; SOFT-NEXT:    bl __gnu_f2h_ieee
+; SOFT-NEXT:    bl __truncsfhf2
 ; SOFT-NEXT:    nop
 ; SOFT-NEXT:    addi r1, r1, 32
 ; SOFT-NEXT:    ld r0, 16(r1)
diff --git a/llvm/test/CodeGen/PowerPC/pr48519.ll b/llvm/test/CodeGen/PowerPC/pr48519.ll
index 002dd8f0d167a..fa156454a1313 100644
--- a/llvm/test/CodeGen/PowerPC/pr48519.ll
+++ b/llvm/test/CodeGen/PowerPC/pr48519.ll
@@ -20,17 +20,17 @@ define void @julia__typed_vcat_20() #0 {
 ; CHECK-NEXT:    addi r3, r3, -1
 ; CHECK-NEXT:    mtfprd f0, r3
 ; CHECK-NEXT:    xscvsxdsp f1, f0
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    addi r30, r30, -1
 ; CHECK-NEXT:    li r3, 0
 ; CHECK-NEXT:    cmpldi r30, 0
 ; CHECK-NEXT:    bc 12, gt, .LBB0_1
 ; CHECK-NEXT:  # %bb.2: # %bb11
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    sth r3, 0(r3)
 ;
@@ -95,7 +95,7 @@ define void @julia__hypot_17() #0 {
 ; CHECK-NEXT:  # %bb.2: # %bb3
 ; CHECK-NEXT:    #
 ; CHECK-NEXT:    lhz r3, 0(0)
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fcmpu cr0, f1, f1
 ; CHECK-NEXT:    bun cr0, .LBB1_1
@@ -169,12 +169,12 @@ define void @func_48786() #0 {
 ; CHECK-NEXT:  # %bb.3: # %bb4
 ; CHECK-NEXT:    #
 ; CHECK-NEXT:    lhz r3, 0(r3)
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bc 4, 4*cr2+lt, .LBB2_6
 ; CHECK-NEXT:  # %bb.4: # %bb8
 ; CHECK-NEXT:    #
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    sth r3, 0(0)
 ; CHECK-NEXT:    b .LBB2_1
@@ -273,7 +273,7 @@ define void @func_48785(half %arg) #0 {
 ; CHECK-NEXT:  .LBB3_1: # %bb1
 ; CHECK-NEXT:    #
 ; CHECK-NEXT:    fmr f1, f31
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    addi r30, r30, -1
 ; CHECK-NEXT:    sth r3, 0(r29)
diff --git a/llvm/test/CodeGen/PowerPC/pr49092.ll b/llvm/test/CodeGen/PowerPC/pr49092.ll
index ea84c77603d08..7b524a6d2f69b 100644
--- a/llvm/test/CodeGen/PowerPC/pr49092.ll
+++ b/llvm/test/CodeGen/PowerPC/pr49092.ll
@@ -14,7 +14,7 @@ define dso_local half @test2(i64 %a, i64 %b) local_unnamed_addr #0 {
 ; CHECK-NEXT:    std r0, 48(r1)
 ; CHECK-NEXT:    addi r3, r3, 11
 ; CHECK-NEXT:    clrlwi r3, r3, 16
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    addi r1, r1, 32
 ; CHECK-NEXT:    ld r0, 16(r1)
diff --git a/llvm/test/CodeGen/PowerPC/vector-llrint.ll b/llvm/test/CodeGen/PowerPC/vector-llrint.ll
index 190cf6fe1eaad..9229fefced67e 100644
--- a/llvm/test/CodeGen/PowerPC/vector-llrint.ll
+++ b/llvm/test/CodeGen/PowerPC/vector-llrint.ll
@@ -17,10 +17,10 @@ define <1 x i64> @llrint_v1i64_v1f16(<1 x half> %x) {
 ; BE-NEXT:    std r0, 128(r1)
 ; BE-NEXT:    .cfi_def_cfa_offset 112
 ; BE-NEXT:    .cfi_offset lr, 16
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl llrintf
 ; BE-NEXT:    nop
@@ -36,10 +36,10 @@ define <1 x i64> @llrint_v1i64_v1f16(<1 x half> %x) {
 ; CHECK-NEXT:    std r0, 48(r1)
 ; CHECK-NEXT:    .cfi_def_cfa_offset 32
 ; CHECK-NEXT:    .cfi_offset lr, 16
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl llrintf
 ; CHECK-NEXT:    nop
@@ -55,10 +55,10 @@ define <1 x i64> @llrint_v1i64_v1f16(<1 x half> %x) {
 ; FAST-NEXT:    std r0, 48(r1)
 ; FAST-NEXT:    .cfi_def_cfa_offset 32
 ; FAST-NEXT:    .cfi_offset lr, 16
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f1
 ; FAST-NEXT:    mffprd r3, f0
@@ -85,18 +85,18 @@ define <2 x i64> @llrint_v1i64_v2f16(<2 x half> %x) {
 ; BE-NEXT:    fmr f31, f1
 ; BE-NEXT:    fmr f1, f2
 ; BE-NEXT:    std r30, 136(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r30, 48
 ; BE-NEXT:    fmr f31, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl llrintf
 ; BE-NEXT:    nop
@@ -129,18 +129,18 @@ define <2 x i64> @llrint_v1i64_v2f16(<2 x half> %x) {
 ; CHECK-NEXT:    stfd f31, 88(r1) # 8-byte Folded Spill
 ; CHECK-NEXT:    fmr f31, f2
 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    mr r30, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r30, 48
 ; CHECK-NEXT:    fmr f31, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl llrintf
 ; CHECK-NEXT:    nop
@@ -172,17 +172,17 @@ define <2 x i64> @llrint_v1i64_v2f16(<2 x half> %x) {
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    fmr f1, f2
 ; FAST-NEXT:    std r0, 64(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    fmr f1, f31
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f1
 ; FAST-NEXT:    fctid f1, f30
@@ -226,34 +226,34 @@ define <4 x i64> @llrint_v4i64_v4f16(<4 x half> %x) {
 ; BE-NEXT:    stfd f31, 200(r1) # 8-byte Folded Spill
 ; BE-NEXT:    fmr f31, f4
 ; BE-NEXT:    fmr f30, f3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f29
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    mr r29, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f30
 ; BE-NEXT:    mr r28, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r28, 48
 ; BE-NEXT:    fmr f31, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r29, 48
 ; BE-NEXT:    fmr f30, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r30, 48
 ; BE-NEXT:    fmr f29, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl llrintf
 ; BE-NEXT:    nop
@@ -313,34 +313,34 @@ define <4 x i64> @llrint_v4i64_v4f16(<4 x half> %x) {
 ; CHECK-NEXT:    stfd f31, 136(r1) # 8-byte Folded Spill
 ; CHECK-NEXT:    fmr f31, f4
 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f29
 ; CHECK-NEXT:    mr r30, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f30
 ; CHECK-NEXT:    mr r29, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    mr r28, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r28, 48
 ; CHECK-NEXT:    fmr f31, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r29, 48
 ; CHECK-NEXT:    fmr f30, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r30, 48
 ; CHECK-NEXT:    fmr f29, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl llrintf
 ; CHECK-NEXT:    nop
@@ -394,31 +394,31 @@ define <4 x i64> @llrint_v4i64_v4f16(<4 x half> %x) {
 ; FAST-NEXT:    std r0, 80(r1)
 ; FAST-NEXT:    fmr f31, f3
 ; FAST-NEXT:    fmr f30, f2
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f28, f1
 ; FAST-NEXT:    fmr f1, f31
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    fmr f1, f30
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    fmr f1, f29
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f30
 ; FAST-NEXT:    fctid f2, f31
@@ -491,66 +491,66 @@ define <8 x i64> @llrint_v8i64_v8f16(<8 x half> %x) {
 ; BE-NEXT:    fmr f28, f5
 ; BE-NEXT:    fmr f27, f4
 ; BE-NEXT:    fmr f26, f3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f25
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f27
 ; BE-NEXT:    mr r29, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f26
 ; BE-NEXT:    mr r28, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f29
 ; BE-NEXT:    mr r27, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f28
 ; BE-NEXT:    mr r26, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    mr r25, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f30
 ; BE-NEXT:    mr r24, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r24, 48
 ; BE-NEXT:    fmr f31, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r25, 48
 ; BE-NEXT:    fmr f30, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r26, 48
 ; BE-NEXT:    fmr f29, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r27, 48
 ; BE-NEXT:    fmr f28, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r28, 48
 ; BE-NEXT:    fmr f27, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r29, 48
 ; BE-NEXT:    fmr f26, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r30, 48
 ; BE-NEXT:    fmr f25, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl llrintf
 ; BE-NEXT:    nop
@@ -664,66 +664,66 @@ define <8 x i64> @llrint_v8i64_v8f16(<8 x half> %x) {
 ; CHECK-NEXT:    stfd f31, 232(r1) # 8-byte Folded Spill
 ; CHECK-NEXT:    fmr f31, f8
 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f25
 ; CHECK-NEXT:    mr r30, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f26
 ; CHECK-NEXT:    mr r29, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f27
 ; CHECK-NEXT:    mr r28, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f28
 ; CHECK-NEXT:    mr r27, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f29
 ; CHECK-NEXT:    mr r26, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f30
 ; CHECK-NEXT:    mr r25, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    mr r24, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r24, 48
 ; CHECK-NEXT:    fmr f31, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r25, 48
 ; CHECK-NEXT:    fmr f30, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r26, 48
 ; CHECK-NEXT:    fmr f29, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r27, 48
 ; CHECK-NEXT:    fmr f28, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r28, 48
 ; CHECK-NEXT:    fmr f27, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r29, 48
 ; CHECK-NEXT:    fmr f26, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r30, 48
 ; CHECK-NEXT:    fmr f25, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl llrintf
 ; CHECK-NEXT:    nop
@@ -821,59 +821,59 @@ define <8 x i64> @llrint_v8i64_v8f16(<8 x half> %x) {
 ; FAST-NEXT:    fmr f27, f4
 ; FAST-NEXT:    fmr f26, f3
 ; FAST-NEXT:    fmr f25, f2
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    fmr f1, f30
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    fmr f1, f29
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f29, f1
 ; FAST-NEXT:    fmr f1, f28
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f28, f1
 ; FAST-NEXT:    fmr f1, f27
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f27, f1
 ; FAST-NEXT:    fmr f1, f26
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f26, f1
 ; FAST-NEXT:    fmr f1, f25
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f25, f1
 ; FAST-NEXT:    fmr f1, f24
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f25
 ; FAST-NEXT:    fctid f2, f26
@@ -1001,130 +1001,130 @@ define <16 x i64> @llrint_v16i64_v16f16(<16 x half> %x) {
 ; BE-NEXT:    fmr f23, f5
 ; BE-NEXT:    fmr f22, f4
 ; BE-NEXT:    fmr f21, f3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f20
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f22
 ; BE-NEXT:    mr r29, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f21
 ; BE-NEXT:    mr r28, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f24
 ; BE-NEXT:    mr r27, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f23
 ; BE-NEXT:    mr r26, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f26
 ; BE-NEXT:    mr r25, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f25
 ; BE-NEXT:    mr r24, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f28
 ; BE-NEXT:    mr r23, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f27
 ; BE-NEXT:    mr r22, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f29
 ; BE-NEXT:    mr r21, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f30
 ; BE-NEXT:    mr r20, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 652(r1)
 ; BE-NEXT:    mr r19, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    mr r18, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 668(r1)
 ; BE-NEXT:    mr r17, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 660(r1)
 ; BE-NEXT:    mr r16, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r16, 48
 ; BE-NEXT:    fmr f31, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r17, 48
 ; BE-NEXT:    fmr f30, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r18, 48
 ; BE-NEXT:    fmr f29, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r19, 48
 ; BE-NEXT:    fmr f28, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r20, 48
 ; BE-NEXT:    fmr f27, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r21, 48
 ; BE-NEXT:    fmr f26, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r22, 48
 ; BE-NEXT:    fmr f25, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r23, 48
 ; BE-NEXT:    fmr f24, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r24, 48
 ; BE-NEXT:    fmr f23, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r25, 48
 ; BE-NEXT:    fmr f22, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r26, 48
 ; BE-NEXT:    fmr f21, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r27, 48
 ; BE-NEXT:    fmr f20, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r28, 48
 ; BE-NEXT:    fmr f19, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r29, 48
 ; BE-NEXT:    fmr f18, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r30, 48
 ; BE-NEXT:    fmr f17, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl llrintf
 ; BE-NEXT:    nop
@@ -1343,130 +1343,130 @@ define <16 x i64> @llrint_v16i64_v16f16(<16 x half> %x) {
 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
 ; CHECK-NEXT:    li r3, 160
 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f20
 ; CHECK-NEXT:    mr r30, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f21
 ; CHECK-NEXT:    mr r29, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f22
 ; CHECK-NEXT:    mr r28, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f23
 ; CHECK-NEXT:    mr r27, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f24
 ; CHECK-NEXT:    mr r26, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f25
 ; CHECK-NEXT:    mr r25, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f26
 ; CHECK-NEXT:    mr r24, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f27
 ; CHECK-NEXT:    mr r23, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f28
 ; CHECK-NEXT:    mr r22, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f29
 ; CHECK-NEXT:    mr r21, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f30
 ; CHECK-NEXT:    mr r20, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    mr r19, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 568(r1)
 ; CHECK-NEXT:    mr r18, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 576(r1)
 ; CHECK-NEXT:    mr r17, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 584(r1)
 ; CHECK-NEXT:    mr r16, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r16, 48
 ; CHECK-NEXT:    fmr f31, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r17, 48
 ; CHECK-NEXT:    fmr f30, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r18, 48
 ; CHECK-NEXT:    fmr f29, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r19, 48
 ; CHECK-NEXT:    fmr f28, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r20, 48
 ; CHECK-NEXT:    fmr f27, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r21, 48
 ; CHECK-NEXT:    fmr f26, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r22, 48
 ; CHECK-NEXT:    fmr f25, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r23, 48
 ; CHECK-NEXT:    fmr f24, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r24, 48
 ; CHECK-NEXT:    fmr f23, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r25, 48
 ; CHECK-NEXT:    fmr f22, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r26, 48
 ; CHECK-NEXT:    fmr f21, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r27, 48
 ; CHECK-NEXT:    fmr f20, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r28, 48
 ; CHECK-NEXT:    fmr f19, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r29, 48
 ; CHECK-NEXT:    fmr f18, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r30, 48
 ; CHECK-NEXT:    fmr f17, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl llrintf
 ; CHECK-NEXT:    nop
@@ -1650,115 +1650,115 @@ define <16 x i64> @llrint_v16i64_v16f16(<16 x half> %x) {
 ; FAST-NEXT:    fmr f22, f4
 ; FAST-NEXT:    fmr f23, f3
 ; FAST-NEXT:    fmr f25, f2
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    lfs f1, 304(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    lfs f1, 296(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f29, f1
 ; FAST-NEXT:    fmr f1, f28
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f28, f1
 ; FAST-NEXT:    fmr f1, f27
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f27, f1
 ; FAST-NEXT:    fmr f1, f24
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f24, f1
 ; FAST-NEXT:    fmr f1, f21
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f21, f1
 ; FAST-NEXT:    fmr f1, f19
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f19, f1
 ; FAST-NEXT:    fmr f1, f18
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f18, f1
 ; FAST-NEXT:    fmr f1, f17
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f17, f1
 ; FAST-NEXT:    fmr f1, f16
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f16, f1
 ; FAST-NEXT:    fmr f1, f20
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f20, f1
 ; FAST-NEXT:    fmr f1, f22
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f22, f1
 ; FAST-NEXT:    fmr f1, f23
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f23, f1
 ; FAST-NEXT:    fmr f1, f25
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f25, f1
 ; FAST-NEXT:    fmr f1, f26
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f25
 ; FAST-NEXT:    fctid f2, f23
@@ -1935,272 +1935,272 @@ define <32 x i64> @llrint_v32i64_v32f16(<32 x half> %x) {
 ; BE-NEXT:    fmr f22, f4
 ; BE-NEXT:    fmr f21, f3
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f20
 ; BE-NEXT:    std r3, 304(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f22
 ; BE-NEXT:    std r3, 296(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f21
 ; BE-NEXT:    std r3, 280(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f24
 ; BE-NEXT:    std r3, 264(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f23
 ; BE-NEXT:    std r3, 248(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f26
 ; BE-NEXT:    std r3, 232(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f25
 ; BE-NEXT:    std r3, 216(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f28
 ; BE-NEXT:    std r3, 200(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f27
 ; BE-NEXT:    std r3, 184(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f29
 ; BE-NEXT:    std r3, 168(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f30
 ; BE-NEXT:    std r3, 152(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1028(r1)
 ; BE-NEXT:    std r3, 136(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    std r3, 120(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1044(r1)
 ; BE-NEXT:    std r3, 112(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1036(r1)
 ; BE-NEXT:    mr r15, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1060(r1)
 ; BE-NEXT:    mr r14, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1052(r1)
 ; BE-NEXT:    mr r31, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1076(r1)
 ; BE-NEXT:    mr r29, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1068(r1)
 ; BE-NEXT:    mr r28, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1092(r1)
 ; BE-NEXT:    mr r27, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1084(r1)
 ; BE-NEXT:    mr r26, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1108(r1)
 ; BE-NEXT:    mr r25, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1100(r1)
 ; BE-NEXT:    mr r24, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1124(r1)
 ; BE-NEXT:    mr r23, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1116(r1)
 ; BE-NEXT:    mr r22, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1140(r1)
 ; BE-NEXT:    mr r21, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1132(r1)
 ; BE-NEXT:    mr r20, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1156(r1)
 ; BE-NEXT:    mr r19, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1148(r1)
 ; BE-NEXT:    mr r18, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1172(r1)
 ; BE-NEXT:    mr r17, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1164(r1)
 ; BE-NEXT:    mr r16, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r16, 48
 ; BE-NEXT:    stfs f1, 316(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r17, 48
 ; BE-NEXT:    stfs f1, 312(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r18, 48
 ; BE-NEXT:    stfs f1, 292(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r19, 48
 ; BE-NEXT:    stfs f1, 276(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r20, 48
 ; BE-NEXT:    stfs f1, 260(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r21, 48
 ; BE-NEXT:    stfs f1, 244(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r22, 48
 ; BE-NEXT:    stfs f1, 228(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r23, 48
 ; BE-NEXT:    stfs f1, 212(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r24, 48
 ; BE-NEXT:    stfs f1, 196(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r25, 48
 ; BE-NEXT:    stfs f1, 180(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r26, 48
 ; BE-NEXT:    stfs f1, 164(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r27, 48
 ; BE-NEXT:    stfs f1, 148(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r28, 48
 ; BE-NEXT:    stfs f1, 132(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r29, 48
 ; BE-NEXT:    fmr f18, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r31, 48
 ; BE-NEXT:    fmr f17, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r14, 48
 ; BE-NEXT:    fmr f16, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r15, 48
 ; BE-NEXT:    fmr f15, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 112(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f14, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 120(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f31, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 136(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f30, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 152(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f29, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 168(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f28, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 184(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f27, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 200(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f26, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 216(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f25, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 232(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f24, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 248(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f23, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 264(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f22, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 280(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f21, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 296(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f20, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 304(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f19, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl llrintf
 ; BE-NEXT:    nop
@@ -2561,274 +2561,274 @@ define <32 x i64> @llrint_v32i64_v32f16(<32 x half> %x) {
 ; CHECK-NEXT:    stvx v30, r1, r4 # 16-byte Folded Spill
 ; CHECK-NEXT:    li r4, 384
 ; CHECK-NEXT:    stvx v31, r1, r4 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f20
 ; CHECK-NEXT:    std r3, 176(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f21
 ; CHECK-NEXT:    std r3, 160(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f22
 ; CHECK-NEXT:    std r3, 144(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f23
 ; CHECK-NEXT:    std r3, 128(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f24
 ; CHECK-NEXT:    std r3, 120(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f25
 ; CHECK-NEXT:    std r3, 112(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f26
 ; CHECK-NEXT:    std r3, 104(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f27
 ; CHECK-NEXT:    std r3, 96(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f28
 ; CHECK-NEXT:    std r3, 88(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f29
 ; CHECK-NEXT:    std r3, 80(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f30
 ; CHECK-NEXT:    std r3, 72(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    std r3, 64(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 832(r1)
 ; CHECK-NEXT:    std r3, 56(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 840(r1)
 ; CHECK-NEXT:    std r3, 48(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 848(r1)
 ; CHECK-NEXT:    mr r15, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 856(r1)
 ; CHECK-NEXT:    mr r14, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 864(r1)
 ; CHECK-NEXT:    mr r31, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 872(r1)
 ; CHECK-NEXT:    mr r29, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 880(r1)
 ; CHECK-NEXT:    mr r28, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 888(r1)
 ; CHECK-NEXT:    mr r27, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 896(r1)
 ; CHECK-NEXT:    mr r26, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 904(r1)
 ; CHECK-NEXT:    mr r25, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 912(r1)
 ; CHECK-NEXT:    mr r24, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 920(r1)
 ; CHECK-NEXT:    mr r23, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 928(r1)
 ; CHECK-NEXT:    mr r22, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 936(r1)
 ; CHECK-NEXT:    mr r21, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 944(r1)
 ; CHECK-NEXT:    mr r20, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 952(r1)
 ; CHECK-NEXT:    mr r19, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 960(r1)
 ; CHECK-NEXT:    mr r18, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 968(r1)
 ; CHECK-NEXT:    mr r17, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 976(r1)
 ; CHECK-NEXT:    mr r16, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    li r3, 204
 ; CHECK-NEXT:    stxsspx f1, r1, r3 # 4-byte Folded Spill
 ; CHECK-NEXT:    clrldi r3, r16, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    li r3, 200
 ; CHECK-NEXT:    stxsspx f1, r1, r3 # 4-byte Folded Spill
 ; CHECK-NEXT:    clrldi r3, r17, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r18, 48
 ; CHECK-NEXT:    fmr f29, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r19, 48
 ; CHECK-NEXT:    fmr f28, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r20, 48
 ; CHECK-NEXT:    fmr f27, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r21, 48
 ; CHECK-NEXT:    fmr f26, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r22, 48
 ; CHECK-NEXT:    fmr f25, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r23, 48
 ; CHECK-NEXT:    fmr f24, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r24, 48
 ; CHECK-NEXT:    fmr f23, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r25, 48
 ; CHECK-NEXT:    fmr f22, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r26, 48
 ; CHECK-NEXT:    fmr f21, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r27, 48
 ; CHECK-NEXT:    fmr f20, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r28, 48
 ; CHECK-NEXT:    fmr f19, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r29, 48
 ; CHECK-NEXT:    fmr f18, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r31, 48
 ; CHECK-NEXT:    fmr f17, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r14, 48
 ; CHECK-NEXT:    fmr f16, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r15, 48
 ; CHECK-NEXT:    fmr f15, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 48(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    fmr f14, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 56(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    fmr f30, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 64(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v30, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 72(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v29, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 80(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v28, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 88(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v27, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 96(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v26, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 104(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v25, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 112(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v24, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 120(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v23, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 128(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v22, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 144(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v21, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 160(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v20, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 176(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    fmr f31, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl llrintf
 ; CHECK-NEXT:    nop
@@ -3200,238 +3200,238 @@ define <32 x i64> @llrint_v32i64_v32f16(<32 x half> %x) {
 ; FAST-NEXT:    xxlor v31, f6, f6
 ; FAST-NEXT:    stxsspx f1, r1, r4 # 4-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 768(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 120
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 760(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 112
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 752(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 104
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 744(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 96
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 736(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 88
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 728(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 80
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 720(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 72
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 712(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 64
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 704(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 56
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 696(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 48
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 688(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    xxlor v21, f1, f1
 ; FAST-NEXT:    lfs f1, 680(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    xxlor v20, f1, f1
 ; FAST-NEXT:    lfs f1, 672(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    xxlor v24, f1, f1
 ; FAST-NEXT:    lfs f1, 664(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    lfs f1, 656(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    lfs f1, 648(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f28, f1
 ; FAST-NEXT:    lfs f1, 640(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f27, f1
 ; FAST-NEXT:    lfs f1, 632(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f26, f1
 ; FAST-NEXT:    lfs f1, 624(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f25, f1
 ; FAST-NEXT:    xxlor f1, v25, v25
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f24, f1
 ; FAST-NEXT:    xxlor f1, v26, v26
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f23, f1
 ; FAST-NEXT:    xxlor f1, v27, v27
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f22, f1
 ; FAST-NEXT:    xxlor f1, v28, v28
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f21, f1
 ; FAST-NEXT:    fmr f1, f29
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f20, f1
 ; FAST-NEXT:    xxlor f1, v29, v29
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f19, f1
 ; FAST-NEXT:    xxlor f1, v30, v30
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f18, f1
 ; FAST-NEXT:    xxlor f1, v31, v31
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f29, f1
 ; FAST-NEXT:    fmr f1, f14
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f14, f1
 ; FAST-NEXT:    fmr f1, f16
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f16, f1
 ; FAST-NEXT:    xxlor f1, v22, v22
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f17, f1
 ; FAST-NEXT:    xxlor f1, v23, v23
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 44
 ; FAST-NEXT:    fmr f15, f1
 ; FAST-NEXT:    lxsspx f1, r1, r3 # 4-byte Folded Reload
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f3, f15
 ; FAST-NEXT:    fctid f4, f17
diff --git a/llvm/test/CodeGen/PowerPC/vector-lrint.ll b/llvm/test/CodeGen/PowerPC/vector-lrint.ll
index b6d0bd5c05894..c2576d4631db8 100644
--- a/llvm/test/CodeGen/PowerPC/vector-lrint.ll
+++ b/llvm/test/CodeGen/PowerPC/vector-lrint.ll
@@ -28,10 +28,10 @@ define <1 x i64> @lrint_v1f16(<1 x half> %x) {
 ; BE-NEXT:    std r0, 128(r1)
 ; BE-NEXT:    .cfi_def_cfa_offset 112
 ; BE-NEXT:    .cfi_offset lr, 16
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl lrintf
 ; BE-NEXT:    nop
@@ -47,10 +47,10 @@ define <1 x i64> @lrint_v1f16(<1 x half> %x) {
 ; CHECK-NEXT:    std r0, 48(r1)
 ; CHECK-NEXT:    .cfi_def_cfa_offset 32
 ; CHECK-NEXT:    .cfi_offset lr, 16
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl lrintf
 ; CHECK-NEXT:    nop
@@ -66,10 +66,10 @@ define <1 x i64> @lrint_v1f16(<1 x half> %x) {
 ; FAST-NEXT:    std r0, 48(r1)
 ; FAST-NEXT:    .cfi_def_cfa_offset 32
 ; FAST-NEXT:    .cfi_offset lr, 16
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f1
 ; FAST-NEXT:    mffprd r3, f0
@@ -96,18 +96,18 @@ define <2 x i64> @lrint_v2f16(<2 x half> %x) {
 ; BE-NEXT:    fmr f31, f1
 ; BE-NEXT:    fmr f1, f2
 ; BE-NEXT:    std r30, 136(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r30, 48
 ; BE-NEXT:    fmr f31, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl lrintf
 ; BE-NEXT:    nop
@@ -140,18 +140,18 @@ define <2 x i64> @lrint_v2f16(<2 x half> %x) {
 ; CHECK-NEXT:    stfd f31, 88(r1) # 8-byte Folded Spill
 ; CHECK-NEXT:    fmr f31, f2
 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    mr r30, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r30, 48
 ; CHECK-NEXT:    fmr f31, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl lrintf
 ; CHECK-NEXT:    nop
@@ -183,17 +183,17 @@ define <2 x i64> @lrint_v2f16(<2 x half> %x) {
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    fmr f1, f2
 ; FAST-NEXT:    std r0, 64(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    fmr f1, f31
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f1
 ; FAST-NEXT:    fctid f1, f30
@@ -237,34 +237,34 @@ define <4 x i64> @lrint_v4f16(<4 x half> %x) {
 ; BE-NEXT:    stfd f31, 200(r1) # 8-byte Folded Spill
 ; BE-NEXT:    fmr f31, f4
 ; BE-NEXT:    fmr f30, f3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f29
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    mr r29, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f30
 ; BE-NEXT:    mr r28, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r28, 48
 ; BE-NEXT:    fmr f31, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r29, 48
 ; BE-NEXT:    fmr f30, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r30, 48
 ; BE-NEXT:    fmr f29, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl lrintf
 ; BE-NEXT:    nop
@@ -324,34 +324,34 @@ define <4 x i64> @lrint_v4f16(<4 x half> %x) {
 ; CHECK-NEXT:    stfd f31, 136(r1) # 8-byte Folded Spill
 ; CHECK-NEXT:    fmr f31, f4
 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f29
 ; CHECK-NEXT:    mr r30, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f30
 ; CHECK-NEXT:    mr r29, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    mr r28, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r28, 48
 ; CHECK-NEXT:    fmr f31, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r29, 48
 ; CHECK-NEXT:    fmr f30, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r30, 48
 ; CHECK-NEXT:    fmr f29, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl lrintf
 ; CHECK-NEXT:    nop
@@ -405,31 +405,31 @@ define <4 x i64> @lrint_v4f16(<4 x half> %x) {
 ; FAST-NEXT:    std r0, 80(r1)
 ; FAST-NEXT:    fmr f31, f3
 ; FAST-NEXT:    fmr f30, f2
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f28, f1
 ; FAST-NEXT:    fmr f1, f31
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    fmr f1, f30
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    fmr f1, f29
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f30
 ; FAST-NEXT:    fctid f2, f31
@@ -502,66 +502,66 @@ define <8 x i64> @lrint_v8f16(<8 x half> %x) {
 ; BE-NEXT:    fmr f28, f5
 ; BE-NEXT:    fmr f27, f4
 ; BE-NEXT:    fmr f26, f3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f25
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f27
 ; BE-NEXT:    mr r29, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f26
 ; BE-NEXT:    mr r28, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f29
 ; BE-NEXT:    mr r27, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f28
 ; BE-NEXT:    mr r26, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    mr r25, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f30
 ; BE-NEXT:    mr r24, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r24, 48
 ; BE-NEXT:    fmr f31, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r25, 48
 ; BE-NEXT:    fmr f30, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r26, 48
 ; BE-NEXT:    fmr f29, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r27, 48
 ; BE-NEXT:    fmr f28, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r28, 48
 ; BE-NEXT:    fmr f27, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r29, 48
 ; BE-NEXT:    fmr f26, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r30, 48
 ; BE-NEXT:    fmr f25, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl lrintf
 ; BE-NEXT:    nop
@@ -675,66 +675,66 @@ define <8 x i64> @lrint_v8f16(<8 x half> %x) {
 ; CHECK-NEXT:    stfd f31, 232(r1) # 8-byte Folded Spill
 ; CHECK-NEXT:    fmr f31, f8
 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f25
 ; CHECK-NEXT:    mr r30, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f26
 ; CHECK-NEXT:    mr r29, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f27
 ; CHECK-NEXT:    mr r28, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f28
 ; CHECK-NEXT:    mr r27, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f29
 ; CHECK-NEXT:    mr r26, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f30
 ; CHECK-NEXT:    mr r25, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    mr r24, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r24, 48
 ; CHECK-NEXT:    fmr f31, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r25, 48
 ; CHECK-NEXT:    fmr f30, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r26, 48
 ; CHECK-NEXT:    fmr f29, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r27, 48
 ; CHECK-NEXT:    fmr f28, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r28, 48
 ; CHECK-NEXT:    fmr f27, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r29, 48
 ; CHECK-NEXT:    fmr f26, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r30, 48
 ; CHECK-NEXT:    fmr f25, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl lrintf
 ; CHECK-NEXT:    nop
@@ -832,59 +832,59 @@ define <8 x i64> @lrint_v8f16(<8 x half> %x) {
 ; FAST-NEXT:    fmr f27, f4
 ; FAST-NEXT:    fmr f26, f3
 ; FAST-NEXT:    fmr f25, f2
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    fmr f1, f30
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    fmr f1, f29
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f29, f1
 ; FAST-NEXT:    fmr f1, f28
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f28, f1
 ; FAST-NEXT:    fmr f1, f27
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f27, f1
 ; FAST-NEXT:    fmr f1, f26
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f26, f1
 ; FAST-NEXT:    fmr f1, f25
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f25, f1
 ; FAST-NEXT:    fmr f1, f24
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f25
 ; FAST-NEXT:    fctid f2, f26
@@ -1012,130 +1012,130 @@ define <16 x i64> @lrint_v16i64_v16f16(<16 x half> %x) {
 ; BE-NEXT:    fmr f23, f5
 ; BE-NEXT:    fmr f22, f4
 ; BE-NEXT:    fmr f21, f3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f20
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f22
 ; BE-NEXT:    mr r29, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f21
 ; BE-NEXT:    mr r28, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f24
 ; BE-NEXT:    mr r27, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f23
 ; BE-NEXT:    mr r26, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f26
 ; BE-NEXT:    mr r25, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f25
 ; BE-NEXT:    mr r24, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f28
 ; BE-NEXT:    mr r23, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f27
 ; BE-NEXT:    mr r22, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f29
 ; BE-NEXT:    mr r21, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f30
 ; BE-NEXT:    mr r20, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 652(r1)
 ; BE-NEXT:    mr r19, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    mr r18, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 668(r1)
 ; BE-NEXT:    mr r17, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 660(r1)
 ; BE-NEXT:    mr r16, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r16, 48
 ; BE-NEXT:    fmr f31, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r17, 48
 ; BE-NEXT:    fmr f30, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r18, 48
 ; BE-NEXT:    fmr f29, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r19, 48
 ; BE-NEXT:    fmr f28, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r20, 48
 ; BE-NEXT:    fmr f27, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r21, 48
 ; BE-NEXT:    fmr f26, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r22, 48
 ; BE-NEXT:    fmr f25, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r23, 48
 ; BE-NEXT:    fmr f24, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r24, 48
 ; BE-NEXT:    fmr f23, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r25, 48
 ; BE-NEXT:    fmr f22, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r26, 48
 ; BE-NEXT:    fmr f21, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r27, 48
 ; BE-NEXT:    fmr f20, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r28, 48
 ; BE-NEXT:    fmr f19, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r29, 48
 ; BE-NEXT:    fmr f18, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r30, 48
 ; BE-NEXT:    fmr f17, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl lrintf
 ; BE-NEXT:    nop
@@ -1354,130 +1354,130 @@ define <16 x i64> @lrint_v16i64_v16f16(<16 x half> %x) {
 ; CHECK-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill
 ; CHECK-NEXT:    li r3, 160
 ; CHECK-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f20
 ; CHECK-NEXT:    mr r30, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f21
 ; CHECK-NEXT:    mr r29, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f22
 ; CHECK-NEXT:    mr r28, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f23
 ; CHECK-NEXT:    mr r27, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f24
 ; CHECK-NEXT:    mr r26, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f25
 ; CHECK-NEXT:    mr r25, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f26
 ; CHECK-NEXT:    mr r24, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f27
 ; CHECK-NEXT:    mr r23, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f28
 ; CHECK-NEXT:    mr r22, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f29
 ; CHECK-NEXT:    mr r21, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f30
 ; CHECK-NEXT:    mr r20, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    mr r19, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 568(r1)
 ; CHECK-NEXT:    mr r18, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 576(r1)
 ; CHECK-NEXT:    mr r17, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 584(r1)
 ; CHECK-NEXT:    mr r16, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r16, 48
 ; CHECK-NEXT:    fmr f31, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r17, 48
 ; CHECK-NEXT:    fmr f30, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r18, 48
 ; CHECK-NEXT:    fmr f29, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r19, 48
 ; CHECK-NEXT:    fmr f28, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r20, 48
 ; CHECK-NEXT:    fmr f27, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r21, 48
 ; CHECK-NEXT:    fmr f26, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r22, 48
 ; CHECK-NEXT:    fmr f25, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r23, 48
 ; CHECK-NEXT:    fmr f24, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r24, 48
 ; CHECK-NEXT:    fmr f23, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r25, 48
 ; CHECK-NEXT:    fmr f22, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r26, 48
 ; CHECK-NEXT:    fmr f21, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r27, 48
 ; CHECK-NEXT:    fmr f20, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r28, 48
 ; CHECK-NEXT:    fmr f19, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r29, 48
 ; CHECK-NEXT:    fmr f18, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r30, 48
 ; CHECK-NEXT:    fmr f17, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl lrintf
 ; CHECK-NEXT:    nop
@@ -1661,115 +1661,115 @@ define <16 x i64> @lrint_v16i64_v16f16(<16 x half> %x) {
 ; FAST-NEXT:    fmr f22, f4
 ; FAST-NEXT:    fmr f23, f3
 ; FAST-NEXT:    fmr f25, f2
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    lfs f1, 304(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    lfs f1, 296(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f29, f1
 ; FAST-NEXT:    fmr f1, f28
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f28, f1
 ; FAST-NEXT:    fmr f1, f27
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f27, f1
 ; FAST-NEXT:    fmr f1, f24
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f24, f1
 ; FAST-NEXT:    fmr f1, f21
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f21, f1
 ; FAST-NEXT:    fmr f1, f19
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f19, f1
 ; FAST-NEXT:    fmr f1, f18
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f18, f1
 ; FAST-NEXT:    fmr f1, f17
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f17, f1
 ; FAST-NEXT:    fmr f1, f16
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f16, f1
 ; FAST-NEXT:    fmr f1, f20
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f20, f1
 ; FAST-NEXT:    fmr f1, f22
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f22, f1
 ; FAST-NEXT:    fmr f1, f23
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f23, f1
 ; FAST-NEXT:    fmr f1, f25
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f25, f1
 ; FAST-NEXT:    fmr f1, f26
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f0, f25
 ; FAST-NEXT:    fctid f2, f23
@@ -1946,272 +1946,272 @@ define <32 x i64> @lrint_v32i64_v32f16(<32 x half> %x) {
 ; BE-NEXT:    fmr f22, f4
 ; BE-NEXT:    fmr f21, f3
 ; BE-NEXT:    mr r30, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f20
 ; BE-NEXT:    std r3, 304(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f22
 ; BE-NEXT:    std r3, 296(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f21
 ; BE-NEXT:    std r3, 280(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f24
 ; BE-NEXT:    std r3, 264(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f23
 ; BE-NEXT:    std r3, 248(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f26
 ; BE-NEXT:    std r3, 232(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f25
 ; BE-NEXT:    std r3, 216(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f28
 ; BE-NEXT:    std r3, 200(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f27
 ; BE-NEXT:    std r3, 184(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f29
 ; BE-NEXT:    std r3, 168(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f30
 ; BE-NEXT:    std r3, 152(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1028(r1)
 ; BE-NEXT:    std r3, 136(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    fmr f1, f31
 ; BE-NEXT:    std r3, 120(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1044(r1)
 ; BE-NEXT:    std r3, 112(r1) # 8-byte Folded Spill
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1036(r1)
 ; BE-NEXT:    mr r15, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1060(r1)
 ; BE-NEXT:    mr r14, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1052(r1)
 ; BE-NEXT:    mr r31, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1076(r1)
 ; BE-NEXT:    mr r29, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1068(r1)
 ; BE-NEXT:    mr r28, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1092(r1)
 ; BE-NEXT:    mr r27, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1084(r1)
 ; BE-NEXT:    mr r26, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1108(r1)
 ; BE-NEXT:    mr r25, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1100(r1)
 ; BE-NEXT:    mr r24, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1124(r1)
 ; BE-NEXT:    mr r23, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1116(r1)
 ; BE-NEXT:    mr r22, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1140(r1)
 ; BE-NEXT:    mr r21, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1132(r1)
 ; BE-NEXT:    mr r20, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1156(r1)
 ; BE-NEXT:    mr r19, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1148(r1)
 ; BE-NEXT:    mr r18, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1172(r1)
 ; BE-NEXT:    mr r17, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    lfs f1, 1164(r1)
 ; BE-NEXT:    mr r16, r3
-; BE-NEXT:    bl __gnu_f2h_ieee
+; BE-NEXT:    bl __truncsfhf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r16, 48
 ; BE-NEXT:    stfs f1, 316(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r17, 48
 ; BE-NEXT:    stfs f1, 312(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r18, 48
 ; BE-NEXT:    stfs f1, 292(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r19, 48
 ; BE-NEXT:    stfs f1, 276(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r20, 48
 ; BE-NEXT:    stfs f1, 260(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r21, 48
 ; BE-NEXT:    stfs f1, 244(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r22, 48
 ; BE-NEXT:    stfs f1, 228(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r23, 48
 ; BE-NEXT:    stfs f1, 212(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r24, 48
 ; BE-NEXT:    stfs f1, 196(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r25, 48
 ; BE-NEXT:    stfs f1, 180(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r26, 48
 ; BE-NEXT:    stfs f1, 164(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r27, 48
 ; BE-NEXT:    stfs f1, 148(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r28, 48
 ; BE-NEXT:    stfs f1, 132(r1) # 4-byte Folded Spill
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r29, 48
 ; BE-NEXT:    fmr f18, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r31, 48
 ; BE-NEXT:    fmr f17, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r14, 48
 ; BE-NEXT:    fmr f16, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    clrldi r3, r15, 48
 ; BE-NEXT:    fmr f15, f1
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 112(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f14, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 120(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f31, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 136(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f30, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 152(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f29, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 168(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f28, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 184(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f27, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 200(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f26, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 216(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f25, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 232(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f24, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 248(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f23, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 264(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f22, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 280(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f21, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 296(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f20, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    ld r3, 304(r1) # 8-byte Folded Reload
 ; BE-NEXT:    fmr f19, f1
 ; BE-NEXT:    clrldi r3, r3, 48
-; BE-NEXT:    bl __gnu_h2f_ieee
+; BE-NEXT:    bl __extendhfsf2
 ; BE-NEXT:    nop
 ; BE-NEXT:    bl lrintf
 ; BE-NEXT:    nop
@@ -2572,274 +2572,274 @@ define <32 x i64> @lrint_v32i64_v32f16(<32 x half> %x) {
 ; CHECK-NEXT:    stvx v30, r1, r4 # 16-byte Folded Spill
 ; CHECK-NEXT:    li r4, 384
 ; CHECK-NEXT:    stvx v31, r1, r4 # 16-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f20
 ; CHECK-NEXT:    std r3, 176(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f21
 ; CHECK-NEXT:    std r3, 160(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f22
 ; CHECK-NEXT:    std r3, 144(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f23
 ; CHECK-NEXT:    std r3, 128(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f24
 ; CHECK-NEXT:    std r3, 120(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f25
 ; CHECK-NEXT:    std r3, 112(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f26
 ; CHECK-NEXT:    std r3, 104(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f27
 ; CHECK-NEXT:    std r3, 96(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f28
 ; CHECK-NEXT:    std r3, 88(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f29
 ; CHECK-NEXT:    std r3, 80(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f30
 ; CHECK-NEXT:    std r3, 72(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    fmr f1, f31
 ; CHECK-NEXT:    std r3, 64(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 832(r1)
 ; CHECK-NEXT:    std r3, 56(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 840(r1)
 ; CHECK-NEXT:    std r3, 48(r1) # 8-byte Folded Spill
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 848(r1)
 ; CHECK-NEXT:    mr r15, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 856(r1)
 ; CHECK-NEXT:    mr r14, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 864(r1)
 ; CHECK-NEXT:    mr r31, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 872(r1)
 ; CHECK-NEXT:    mr r29, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 880(r1)
 ; CHECK-NEXT:    mr r28, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 888(r1)
 ; CHECK-NEXT:    mr r27, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 896(r1)
 ; CHECK-NEXT:    mr r26, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 904(r1)
 ; CHECK-NEXT:    mr r25, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 912(r1)
 ; CHECK-NEXT:    mr r24, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 920(r1)
 ; CHECK-NEXT:    mr r23, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 928(r1)
 ; CHECK-NEXT:    mr r22, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 936(r1)
 ; CHECK-NEXT:    mr r21, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 944(r1)
 ; CHECK-NEXT:    mr r20, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 952(r1)
 ; CHECK-NEXT:    mr r19, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 960(r1)
 ; CHECK-NEXT:    mr r18, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 968(r1)
 ; CHECK-NEXT:    mr r17, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    lfs f1, 976(r1)
 ; CHECK-NEXT:    mr r16, r3
-; CHECK-NEXT:    bl __gnu_f2h_ieee
+; CHECK-NEXT:    bl __truncsfhf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    li r3, 204
 ; CHECK-NEXT:    stxsspx f1, r1, r3 # 4-byte Folded Spill
 ; CHECK-NEXT:    clrldi r3, r16, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    li r3, 200
 ; CHECK-NEXT:    stxsspx f1, r1, r3 # 4-byte Folded Spill
 ; CHECK-NEXT:    clrldi r3, r17, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r18, 48
 ; CHECK-NEXT:    fmr f29, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r19, 48
 ; CHECK-NEXT:    fmr f28, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r20, 48
 ; CHECK-NEXT:    fmr f27, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r21, 48
 ; CHECK-NEXT:    fmr f26, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r22, 48
 ; CHECK-NEXT:    fmr f25, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r23, 48
 ; CHECK-NEXT:    fmr f24, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r24, 48
 ; CHECK-NEXT:    fmr f23, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r25, 48
 ; CHECK-NEXT:    fmr f22, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r26, 48
 ; CHECK-NEXT:    fmr f21, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r27, 48
 ; CHECK-NEXT:    fmr f20, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r28, 48
 ; CHECK-NEXT:    fmr f19, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r29, 48
 ; CHECK-NEXT:    fmr f18, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r31, 48
 ; CHECK-NEXT:    fmr f17, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r14, 48
 ; CHECK-NEXT:    fmr f16, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    clrldi r3, r15, 48
 ; CHECK-NEXT:    fmr f15, f1
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 48(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    fmr f14, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 56(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    fmr f30, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 64(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v30, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 72(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v29, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 80(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v28, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 88(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v27, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 96(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v26, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 104(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v25, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 112(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v24, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 120(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v23, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 128(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v22, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 144(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v21, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 160(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    xxlor v20, f1, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    ld r3, 176(r1) # 8-byte Folded Reload
 ; CHECK-NEXT:    fmr f31, f1
 ; CHECK-NEXT:    clrldi r3, r3, 48
-; CHECK-NEXT:    bl __gnu_h2f_ieee
+; CHECK-NEXT:    bl __extendhfsf2
 ; CHECK-NEXT:    nop
 ; CHECK-NEXT:    bl lrintf
 ; CHECK-NEXT:    nop
@@ -3211,238 +3211,238 @@ define <32 x i64> @lrint_v32i64_v32f16(<32 x half> %x) {
 ; FAST-NEXT:    xxlor v31, f6, f6
 ; FAST-NEXT:    stxsspx f1, r1, r4 # 4-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 768(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 120
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 760(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 112
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 752(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 104
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 744(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 96
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 736(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 88
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 728(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 80
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 720(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 72
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 712(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 64
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 704(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 56
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 696(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 48
 ; FAST-NEXT:    stxsdx f1, r1, r3 # 8-byte Folded Spill
 ; FAST-NEXT:    lfs f1, 688(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    xxlor v21, f1, f1
 ; FAST-NEXT:    lfs f1, 680(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    xxlor v20, f1, f1
 ; FAST-NEXT:    lfs f1, 672(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    xxlor v24, f1, f1
 ; FAST-NEXT:    lfs f1, 664(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f31, f1
 ; FAST-NEXT:    lfs f1, 656(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f30, f1
 ; FAST-NEXT:    lfs f1, 648(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f28, f1
 ; FAST-NEXT:    lfs f1, 640(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f27, f1
 ; FAST-NEXT:    lfs f1, 632(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f26, f1
 ; FAST-NEXT:    lfs f1, 624(r1)
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f25, f1
 ; FAST-NEXT:    xxlor f1, v25, v25
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f24, f1
 ; FAST-NEXT:    xxlor f1, v26, v26
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f23, f1
 ; FAST-NEXT:    xxlor f1, v27, v27
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f22, f1
 ; FAST-NEXT:    xxlor f1, v28, v28
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f21, f1
 ; FAST-NEXT:    fmr f1, f29
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f20, f1
 ; FAST-NEXT:    xxlor f1, v29, v29
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f19, f1
 ; FAST-NEXT:    xxlor f1, v30, v30
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f18, f1
 ; FAST-NEXT:    xxlor f1, v31, v31
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f29, f1
 ; FAST-NEXT:    fmr f1, f14
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f14, f1
 ; FAST-NEXT:    fmr f1, f16
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f16, f1
 ; FAST-NEXT:    xxlor f1, v22, v22
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fmr f17, f1
 ; FAST-NEXT:    xxlor f1, v23, v23
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    li r3, 44
 ; FAST-NEXT:    fmr f15, f1
 ; FAST-NEXT:    lxsspx f1, r1, r3 # 4-byte Folded Reload
-; FAST-NEXT:    bl __gnu_f2h_ieee
+; FAST-NEXT:    bl __truncsfhf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    clrldi r3, r3, 48
-; FAST-NEXT:    bl __gnu_h2f_ieee
+; FAST-NEXT:    bl __extendhfsf2
 ; FAST-NEXT:    nop
 ; FAST-NEXT:    fctid f3, f15
 ; FAST-NEXT:    fctid f4, f17
diff --git a/llvm/test/CodeGen/SPARC/fp16-promote.ll b/llvm/test/CodeGen/SPARC/fp16-promote.ll
index a15104c7b8cff..efe67b04e8fb3 100644
--- a/llvm/test/CodeGen/SPARC/fp16-promote.ll
+++ b/llvm/test/CodeGen/SPARC/fp16-promote.ll
@@ -20,7 +20,7 @@ define float @test_fpextend_float(ptr %p) nounwind {
 ; V8-LABEL: test_fpextend_float:
 ; V8:       ! %bb.0:
 ; V8-NEXT:    save %sp, -96, %sp
-; V8-NEXT:    call __gnu_h2f_ieee
+; V8-NEXT:    call __extendhfsf2
 ; V8-NEXT:    lduh [%i0], %o0
 ; V8-NEXT:    ret
 ; V8-NEXT:    restore
@@ -28,7 +28,7 @@ define float @test_fpextend_float(ptr %p) nounwind {
 ; V9-LABEL: test_fpextend_float:
 ; V9:       ! %bb.0:
 ; V9-NEXT:    save %sp, -96, %sp
-; V9-NEXT:    call __gnu_h2f_ieee
+; V9-NEXT:    call __extendhfsf2
 ; V9-NEXT:    lduh [%i0], %o0
 ; V9-NEXT:    ret
 ; V9-NEXT:    restore
@@ -36,7 +36,7 @@ define float @test_fpextend_float(ptr %p) nounwind {
 ; SPARC64-LABEL: test_fpextend_float:
 ; SPARC64:       ! %bb.0:
 ; SPARC64-NEXT:    save %sp, -176, %sp
-; SPARC64-NEXT:    call __gnu_h2f_ieee
+; SPARC64-NEXT:    call __extendhfsf2
 ; SPARC64-NEXT:    lduh [%i0], %o0
 ; SPARC64-NEXT:    ret
 ; SPARC64-NEXT:    restore
@@ -49,7 +49,7 @@ define double @test_fpextend_double(ptr %p) nounwind {
 ; V8-LABEL: test_fpextend_double:
 ; V8:       ! %bb.0:
 ; V8-NEXT:    save %sp, -96, %sp
-; V8-NEXT:    call __gnu_h2f_ieee
+; V8-NEXT:    call __extendhfsf2
 ; V8-NEXT:    lduh [%i0], %o0
 ; V8-NEXT:    fstod %f0, %f0
 ; V8-NEXT:    ret
@@ -58,7 +58,7 @@ define double @test_fpextend_double(ptr %p) nounwind {
 ; V9-LABEL: test_fpextend_double:
 ; V9:       ! %bb.0:
 ; V9-NEXT:    save %sp, -96, %sp
-; V9-NEXT:    call __gnu_h2f_ieee
+; V9-NEXT:    call __extendhfsf2
 ; V9-NEXT:    lduh [%i0], %o0
 ; V9-NEXT:    fstod %f0, %f0
 ; V9-NEXT:    ret
@@ -67,7 +67,7 @@ define double @test_fpextend_double(ptr %p) nounwind {
 ; SPARC64-LABEL: test_fpextend_double:
 ; SPARC64:       ! %bb.0:
 ; SPARC64-NEXT:    save %sp, -176, %sp
-; SPARC64-NEXT:    call __gnu_h2f_ieee
+; SPARC64-NEXT:    call __extendhfsf2
 ; SPARC64-NEXT:    lduh [%i0], %o0
 ; SPARC64-NEXT:    fstod %f0, %f0
 ; SPARC64-NEXT:    ret
@@ -81,7 +81,7 @@ define void @test_fpextend_fp128(ptr %p, ptr %out) nounwind {
 ; V8-OPT-LABEL: test_fpextend_fp128:
 ; V8-OPT:       ! %bb.0:
 ; V8-OPT-NEXT:    save %sp, -112, %sp
-; V8-OPT-NEXT:    call __gnu_h2f_ieee
+; V8-OPT-NEXT:    call __extendhfsf2
 ; V8-OPT-NEXT:    lduh [%i0], %o0
 ; V8-OPT-NEXT:    st %f0, [%fp+-20]
 ; V8-OPT-NEXT:    add %fp, -16, %i0
@@ -99,7 +99,7 @@ define void @test_fpextend_fp128(ptr %p, ptr %out) nounwind {
 ; V8-UNOPT-LABEL: test_fpextend_fp128:
 ; V8-UNOPT:       ! %bb.0:
 ; V8-UNOPT-NEXT:    save %sp, -112, %sp
-; V8-UNOPT-NEXT:    call __gnu_h2f_ieee
+; V8-UNOPT-NEXT:    call __extendhfsf2
 ; V8-UNOPT-NEXT:    lduh [%i0], %o0
 ; V8-UNOPT-NEXT:    st %f0, [%fp+-20]
 ; V8-UNOPT-NEXT:    add %fp, -16, %i0
@@ -125,7 +125,7 @@ define void @test_fpextend_fp128(ptr %p, ptr %out) nounwind {
 ; V9-LABEL: test_fpextend_fp128:
 ; V9:       ! %bb.0:
 ; V9-NEXT:    save %sp, -112, %sp
-; V9-NEXT:    call __gnu_h2f_ieee
+; V9-NEXT:    call __extendhfsf2
 ; V9-NEXT:    lduh [%i0], %o0
 ; V9-NEXT:    st %f0, [%fp+-20]
 ; V9-NEXT:    add %fp, -16, %i0
@@ -143,7 +143,7 @@ define void @test_fpextend_fp128(ptr %p, ptr %out) nounwind {
 ; SPARC64-LABEL: test_fpextend_fp128:
 ; SPARC64:       ! %bb.0:
 ; SPARC64-NEXT:    save %sp, -192, %sp
-; SPARC64-NEXT:    call __gnu_h2f_ieee
+; SPARC64-NEXT:    call __extendhfsf2
 ; SPARC64-NEXT:    lduh [%i0], %o0
 ; SPARC64-NEXT:    add %fp, 2031, %o0
 ; SPARC64-NEXT:    fmovs %f0, %f3
@@ -165,7 +165,7 @@ define void @test_fptrunc_float(float %f, ptr %p) nounwind {
 ; V8-OPT-LABEL: test_fptrunc_float:
 ; V8-OPT:       ! %bb.0:
 ; V8-OPT-NEXT:    save %sp, -96, %sp
-; V8-OPT-NEXT:    call __gnu_f2h_ieee
+; V8-OPT-NEXT:    call __truncsfhf2
 ; V8-OPT-NEXT:    mov %i0, %o0
 ; V8-OPT-NEXT:    sth %o0, [%i1]
 ; V8-OPT-NEXT:    ret
@@ -176,7 +176,7 @@ define void @test_fptrunc_float(float %f, ptr %p) nounwind {
 ; V8-UNOPT-NEXT:    save %sp, -96, %sp
 ; V8-UNOPT-NEXT:    mov %i0, %o0
 ; V8-UNOPT-NEXT:    st %o0, [%fp+-4]
-; V8-UNOPT-NEXT:    call __gnu_f2h_ieee
+; V8-UNOPT-NEXT:    call __truncsfhf2
 ; V8-UNOPT-NEXT:    ld [%fp+-4], %f0
 ; V8-UNOPT-NEXT:    sth %o0, [%i1]
 ; V8-UNOPT-NEXT:    ret
@@ -185,7 +185,7 @@ define void @test_fptrunc_float(float %f, ptr %p) nounwind {
 ; V9-LABEL: test_fptrunc_float:
 ; V9:       ! %bb.0:
 ; V9-NEXT:    save %sp, -96, %sp
-; V9-NEXT:    call __gnu_f2h_ieee
+; V9-NEXT:    call __truncsfhf2
 ; V9-NEXT:    mov %i0, %o0
 ; V9-NEXT:    sth %o0, [%i1]
 ; V9-NEXT:    ret
@@ -194,7 +194,7 @@ define void @test_fptrunc_float(float %f, ptr %p) nounwind {
 ; SPARC64-LABEL: test_fptrunc_float:
 ; SPARC64:       ! %bb.0:
 ; SPARC64-NEXT:    save %sp, -176, %sp
-; SPARC64-NEXT:    call __gnu_f2h_ieee
+; SPARC64-NEXT:    call __truncsfhf2
 ; SPARC64-NEXT:    nop
 ; SPARC64-NEXT:    sth %o0, [%i1]
 ; SPARC64-NEXT:    ret
@@ -329,15 +329,15 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
 ; V8-OPT-LABEL: test_fadd:
 ; V8-OPT:       ! %bb.0:
 ; V8-OPT-NEXT:    save %sp, -104, %sp
-; V8-OPT-NEXT:    call __gnu_h2f_ieee
+; V8-OPT-NEXT:    call __extendhfsf2
 ; V8-OPT-NEXT:    lduh [%i0], %o0
 ; V8-OPT-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill
-; V8-OPT-NEXT:    call __gnu_h2f_ieee
+; V8-OPT-NEXT:    call __extendhfsf2
 ; V8-OPT-NEXT:    lduh [%i1], %o0
 ; V8-OPT-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload
 ; V8-OPT-NEXT:    fadds %f1, %f0, %f0
 ; V8-OPT-NEXT:    st %f0, [%fp+-4]
-; V8-OPT-NEXT:    call __gnu_f2h_ieee
+; V8-OPT-NEXT:    call __truncsfhf2
 ; V8-OPT-NEXT:    ld [%fp+-4], %o0
 ; V8-OPT-NEXT:    sth %o0, [%i0]
 ; V8-OPT-NEXT:    ret
@@ -346,16 +346,16 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
 ; V8-UNOPT-LABEL: test_fadd:
 ; V8-UNOPT:       ! %bb.0:
 ; V8-UNOPT-NEXT:    save %sp, -104, %sp
-; V8-UNOPT-NEXT:    call __gnu_h2f_ieee
+; V8-UNOPT-NEXT:    call __extendhfsf2
 ; V8-UNOPT-NEXT:    lduh [%i0], %o0
 ; V8-UNOPT-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill
-; V8-UNOPT-NEXT:    call __gnu_h2f_ieee
+; V8-UNOPT-NEXT:    call __extendhfsf2
 ; V8-UNOPT-NEXT:    lduh [%i1], %o0
 ; V8-UNOPT-NEXT:    fmovs %f0, %f1
 ; V8-UNOPT-NEXT:    ld [%fp+-8], %f0 ! 4-byte Folded Reload
 ; V8-UNOPT-NEXT:    fadds %f0, %f1, %f0
 ; V8-UNOPT-NEXT:    st %f0, [%fp+-4]
-; V8-UNOPT-NEXT:    call __gnu_f2h_ieee
+; V8-UNOPT-NEXT:    call __truncsfhf2
 ; V8-UNOPT-NEXT:    ld [%fp+-4], %o0
 ; V8-UNOPT-NEXT:    sth %o0, [%i0]
 ; V8-UNOPT-NEXT:    ret
@@ -364,15 +364,15 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
 ; V9-LABEL: test_fadd:
 ; V9:       ! %bb.0:
 ; V9-NEXT:    save %sp, -104, %sp
-; V9-NEXT:    call __gnu_h2f_ieee
+; V9-NEXT:    call __extendhfsf2
 ; V9-NEXT:    lduh [%i0], %o0
 ; V9-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill
-; V9-NEXT:    call __gnu_h2f_ieee
+; V9-NEXT:    call __extendhfsf2
 ; V9-NEXT:    lduh [%i1], %o0
 ; V9-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload
 ; V9-NEXT:    fadds %f1, %f0, %f0
 ; V9-NEXT:    st %f0, [%fp+-4]
-; V9-NEXT:    call __gnu_f2h_ieee
+; V9-NEXT:    call __truncsfhf2
 ; V9-NEXT:    ld [%fp+-4], %o0
 ; V9-NEXT:    sth %o0, [%i0]
 ; V9-NEXT:    ret
@@ -381,13 +381,13 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
 ; SPARC64-LABEL: test_fadd:
 ; SPARC64:       ! %bb.0:
 ; SPARC64-NEXT:    save %sp, -192, %sp
-; SPARC64-NEXT:    call __gnu_h2f_ieee
+; SPARC64-NEXT:    call __extendhfsf2
 ; SPARC64-NEXT:    lduh [%i0], %o0
 ; SPARC64-NEXT:    st %f0, [%fp+2043] ! 4-byte Folded Spill
-; SPARC64-NEXT:    call __gnu_h2f_ieee
+; SPARC64-NEXT:    call __extendhfsf2
 ; SPARC64-NEXT:    lduh [%i1], %o0
 ; SPARC64-NEXT:    ld [%fp+2043], %f1 ! 4-byte Folded Reload
-; SPARC64-NEXT:    call __gnu_f2h_ieee
+; SPARC64-NEXT:    call __truncsfhf2
 ; SPARC64-NEXT:    fadds %f1, %f0, %f1
 ; SPARC64-NEXT:    sth %o0, [%i0]
 ; SPARC64-NEXT:    ret
@@ -403,15 +403,15 @@ define void @test_fmul(ptr %p, ptr %q) nounwind {
 ; V8-OPT-LABEL: test_fmul:
 ; V8-OPT:       ! %bb.0:
 ; V8-OPT-NEXT:    save %sp, -104, %sp
-; V8-OPT-NEXT:    call __gnu_h2f_ieee
+; V8-OPT-NEXT:    call __extendhfsf2
 ; V8-OPT-NEXT:    lduh [%i0], %o0
 ; V8-OPT-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill
-; V8-OPT-NEXT:    call __gnu_h2f_ieee
+; V8-OPT-NEXT:    call __extendhfsf2
 ; V8-OPT-NEXT:    lduh [%i1], %o0
 ; V8-OPT-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload
 ; V8-OPT-NEXT:    fmuls %f1, %f0, %f0
 ; V8-OPT-NEXT:    st %f0, [%fp+-4]
-; V8-OPT-NEXT:    call __gnu_f2h_ieee
+; V8-OPT-NEXT:    call __truncsfhf2
 ; V8-OPT-NEXT:    ld [%fp+-4], %o0
 ; V8-OPT-NEXT:    sth %o0, [%i0]
 ; V8-OPT-NEXT:    ret
@@ -420,16 +420,16 @@ define void @test_fmul(ptr %p, ptr %q) nounwind {
 ; V8-UNOPT-LABEL: test_fmul:
 ; V8-UNOPT:       ! %bb.0:
 ; V8-UNOPT-NEXT:    save %sp, -104, %sp
-; V8-UNOPT-NEXT:    call __gnu_h2f_ieee
+; V8-UNOPT-NEXT:    call __extendhfsf2
 ; V8-UNOPT-NEXT:    lduh [%i0], %o0
 ; V8-UNOPT-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill
-; V8-UNOPT-NEXT:    call __gnu_h2f_ieee
+; V8-UNOPT-NEXT:    call __extendhfsf2
 ; V8-UNOPT-NEXT:    lduh [%i1], %o0
 ; V8-UNOPT-NEXT:    fmovs %f0, %f1
 ; V8-UNOPT-NEXT:    ld [%fp+-8], %f0 ! 4-byte Folded Reload
 ; V8-UNOPT-NEXT:    fmuls %f0, %f1, %f0
 ; V8-UNOPT-NEXT:    st %f0, [%fp+-4]
-; V8-UNOPT-NEXT:    call __gnu_f2h_ieee
+; V8-UNOPT-NEXT:    call __truncsfhf2
 ; V8-UNOPT-NEXT:    ld [%fp+-4], %o0
 ; V8-UNOPT-NEXT:    sth %o0, [%i0]
 ; V8-UNOPT-NEXT:    ret
@@ -438,15 +438,15 @@ define void @test_fmul(ptr %p, ptr %q) nounwind {
 ; V9-LABEL: test_fmul:
 ; V9:       ! %bb.0:
 ; V9-NEXT:    save %sp, -104, %sp
-; V9-NEXT:    call __gnu_h2f_ieee
+; V9-NEXT:    call __extendhfsf2
 ; V9-NEXT:    lduh [%i0], %o0
 ; V9-NEXT:    st %f0, [%fp+-8] ! 4-byte Folded Spill
-; V9-NEXT:    call __gnu_h2f_ieee
+; V9-NEXT:    call __extendhfsf2
 ; V9-NEXT:    lduh [%i1], %o0
 ; V9-NEXT:    ld [%fp+-8], %f1 ! 4-byte Folded Reload
 ; V9-NEXT:    fmuls %f1, %f0, %f0
 ; V9-NEXT:    st %f0, [%fp+-4]
-; V9-NEXT:    call __gnu_f2h_ieee
+; V9-NEXT:    call __truncsfhf2
 ; V9-NEXT:    ld [%fp+-4], %o0
 ; V9-NEXT:    sth %o0, [%i0]
 ; V9-NEXT:    ret
@@ -455,13 +455,13 @@ define void @test_fmul(ptr %p, ptr %q) nounwind {
 ; SPARC64-LABEL: test_fmul:
 ; SPARC64:       ! %bb.0:
 ; SPARC64-NEXT:    save %sp, -192, %sp
-; SPARC64-NEXT:    call __gnu_h2f_ieee
+; SPARC64-NEXT:    call __extendhfsf2
 ; SPARC64-NEXT:    lduh [%i0], %o0
 ; SPARC64-NEXT:    st %f0, [%fp+2043] ! 4-byte Folded Spill
-; SPARC64-NEXT:    call __gnu_h2f_ieee
+; SPARC64-NEXT:    call __extendhfsf2
 ; SPARC64-NEXT:    lduh [%i1], %o0
 ; SPARC64-NEXT:    ld [%fp+2043], %f1 ! 4-byte Folded Reload
-; SPARC64-NEXT:    call __gnu_f2h_ieee
+; SPARC64-NEXT:    call __truncsfhf2
 ; SPARC64-NEXT:    fmuls %f1, %f0, %f1
 ; SPARC64-NEXT:    sth %o0, [%i0]
 ; SPARC64-NEXT:    ret
diff --git a/llvm/test/CodeGen/VE/Scalar/fp_extload_truncstore.ll b/llvm/test/CodeGen/VE/Scalar/fp_extload_truncstore.ll
index 4e30778d5c158..f105966bc4d08 100644
--- a/llvm/test/CodeGen/VE/Scalar/fp_extload_truncstore.ll
+++ b/llvm/test/CodeGen/VE/Scalar/fp_extload_truncstore.ll
@@ -26,9 +26,9 @@ define float @func_i16fp32(ptr %a) {
 ; CHECK-NEXT:    or %s0, 0, %s62
 ; CHECK-NEXT:  .LBB0_2:
 ; CHECK-NEXT:    ld2b.zx %s0, (, %s0)
-; CHECK-NEXT:    lea %s1, __gnu_h2f_ieee at lo
+; CHECK-NEXT:    lea %s1, __extendhfsf2 at lo
 ; CHECK-NEXT:    and %s1, %s1, (32)0
-; CHECK-NEXT:    lea.sl %s12, __gnu_h2f_ieee at hi(, %s1)
+; CHECK-NEXT:    lea.sl %s12, __extendhfsf2 at hi(, %s1)
 ; CHECK-NEXT:    bsic %s10, (, %s12)
 ; CHECK-NEXT:    or %s11, 0, %s9
 ; CHECK-NEXT:    ld %s10, 8(, %s11)
@@ -58,9 +58,9 @@ define double @func_i16fp64(ptr %a) {
 ; CHECK-NEXT:    or %s0, 0, %s62
 ; CHECK-NEXT:  .LBB1_2:
 ; CHECK-NEXT:    ld2b.zx %s0, (, %s0)
-; CHECK-NEXT:    lea %s1, __gnu_h2f_ieee at lo
+; CHECK-NEXT:    lea %s1, __extendhfsf2 at lo
 ; CHECK-NEXT:    and %s1, %s1, (32)0
-; CHECK-NEXT:    lea.sl %s12, __gnu_h2f_ieee at hi(, %s1)
+; CHECK-NEXT:    lea.sl %s12, __extendhfsf2 at hi(, %s1)
 ; CHECK-NEXT:    bsic %s10, (, %s12)
 ; CHECK-NEXT:    cvt.d.s %s0, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -91,9 +91,9 @@ define float @func_fp16fp32(ptr %a) {
 ; CHECK-NEXT:    or %s0, 0, %s62
 ; CHECK-NEXT:  .LBB2_2:
 ; CHECK-NEXT:    ld2b.zx %s0, (, %s0)
-; CHECK-NEXT:    lea %s1, __gnu_h2f_ieee at lo
+; CHECK-NEXT:    lea %s1, __extendhfsf2 at lo
 ; CHECK-NEXT:    and %s1, %s1, (32)0
-; CHECK-NEXT:    lea.sl %s12, __gnu_h2f_ieee at hi(, %s1)
+; CHECK-NEXT:    lea.sl %s12, __extendhfsf2 at hi(, %s1)
 ; CHECK-NEXT:    bsic %s10, (, %s12)
 ; CHECK-NEXT:    or %s11, 0, %s9
 ; CHECK-NEXT:    ld %s10, 8(, %s11)
@@ -123,9 +123,9 @@ define double @func_fp16fp64(ptr %a) {
 ; CHECK-NEXT:    or %s0, 0, %s62
 ; CHECK-NEXT:  .LBB3_2:
 ; CHECK-NEXT:    ld2b.zx %s0, (, %s0)
-; CHECK-NEXT:    lea %s1, __gnu_h2f_ieee at lo
+; CHECK-NEXT:    lea %s1, __extendhfsf2 at lo
 ; CHECK-NEXT:    and %s1, %s1, (32)0
-; CHECK-NEXT:    lea.sl %s12, __gnu_h2f_ieee at hi(, %s1)
+; CHECK-NEXT:    lea.sl %s12, __extendhfsf2 at hi(, %s1)
 ; CHECK-NEXT:    bsic %s10, (, %s12)
 ; CHECK-NEXT:    cvt.d.s %s0, %s0
 ; CHECK-NEXT:    or %s11, 0, %s9
@@ -157,9 +157,9 @@ define void @func_fp32i16(ptr %fl.ptr, float %val) {
 ; CHECK-NEXT:  .LBB4_2:
 ; CHECK-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill
 ; CHECK-NEXT:    or %s18, 0, %s0
-; CHECK-NEXT:    lea %s0, __gnu_f2h_ieee at lo
+; CHECK-NEXT:    lea %s0, __truncsfhf2 at lo
 ; CHECK-NEXT:    and %s0, %s0, (32)0
-; CHECK-NEXT:    lea.sl %s12, __gnu_f2h_ieee at hi(, %s0)
+; CHECK-NEXT:    lea.sl %s12, __truncsfhf2 at hi(, %s0)
 ; CHECK-NEXT:    or %s0, 0, %s1
 ; CHECK-NEXT:    bsic %s10, (, %s12)
 ; CHECK-NEXT:    st2b %s0, (, %s18)
@@ -194,15 +194,15 @@ define half @func_fp32fp16(ptr %fl.ptr, float %a) {
 ; CHECK-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill
 ; CHECK-NEXT:    st %s19, 296(, %s11) # 8-byte Folded Spill
 ; CHECK-NEXT:    or %s18, 0, %s0
-; CHECK-NEXT:    lea %s0, __gnu_f2h_ieee at lo
+; CHECK-NEXT:    lea %s0, __truncsfhf2 at lo
 ; CHECK-NEXT:    and %s0, %s0, (32)0
-; CHECK-NEXT:    lea.sl %s12, __gnu_f2h_ieee at hi(, %s0)
+; CHECK-NEXT:    lea.sl %s12, __truncsfhf2 at hi(, %s0)
 ; CHECK-NEXT:    or %s0, 0, %s1
 ; CHECK-NEXT:    bsic %s10, (, %s12)
 ; CHECK-NEXT:    or %s19, 0, %s0
-; CHECK-NEXT:    lea %s0, __gnu_h2f_ieee at lo
+; CHECK-NEXT:    lea %s0, __extendhfsf2 at lo
 ; CHECK-NEXT:    and %s0, %s0, (32)0
-; CHECK-NEXT:    lea.sl %s12, __gnu_h2f_ieee at hi(, %s0)
+; CHECK-NEXT:    lea.sl %s12, __extendhfsf2 at hi(, %s0)
 ; CHECK-NEXT:    or %s0, 0, %s19
 ; CHECK-NEXT:    bsic %s10, (, %s12)
 ; CHECK-NEXT:    st2b %s19, (, %s18)
diff --git a/llvm/test/CodeGen/X86/cvt16.ll b/llvm/test/CodeGen/X86/cvt16.ll
index c6c088297c0ea..db615c8065d03 100644
--- a/llvm/test/CodeGen/X86/cvt16.ll
+++ b/llvm/test/CodeGen/X86/cvt16.ll
@@ -41,7 +41,7 @@ define void @test1(float %src, ptr %dest) nounwind {
 ; SOFTFLOAT:       # %bb.0:
 ; SOFTFLOAT-NEXT:    pushq %rbx
 ; SOFTFLOAT-NEXT:    movq %rsi, %rbx
-; SOFTFLOAT-NEXT:    callq __gnu_f2h_ieee at PLT
+; SOFTFLOAT-NEXT:    callq __truncsfhf2 at PLT
 ; SOFTFLOAT-NEXT:    movw %ax, (%rbx)
 ; SOFTFLOAT-NEXT:    popq %rbx
 ; SOFTFLOAT-NEXT:    retq
@@ -66,7 +66,7 @@ define float @test2(ptr nocapture %src) nounwind {
 ; SOFTFLOAT:       # %bb.0:
 ; SOFTFLOAT-NEXT:    pushq %rax
 ; SOFTFLOAT-NEXT:    movzwl (%rdi), %edi
-; SOFTFLOAT-NEXT:    callq __gnu_h2f_ieee at PLT
+; SOFTFLOAT-NEXT:    callq __extendhfsf2 at PLT
 ; SOFTFLOAT-NEXT:    popq %rcx
 ; SOFTFLOAT-NEXT:    retq
   %1 = load i16, ptr %src, align 2
@@ -94,9 +94,9 @@ define float @test3(float %src) nounwind uwtable readnone {
 ; SOFTFLOAT:       # %bb.0:
 ; SOFTFLOAT-NEXT:    pushq %rax
 ; SOFTFLOAT-NEXT:    .cfi_def_cfa_offset 16
-; SOFTFLOAT-NEXT:    callq __gnu_f2h_ieee at PLT
+; SOFTFLOAT-NEXT:    callq __truncsfhf2 at PLT
 ; SOFTFLOAT-NEXT:    movzwl %ax, %edi
-; SOFTFLOAT-NEXT:    callq __gnu_h2f_ieee at PLT
+; SOFTFLOAT-NEXT:    callq __extendhfsf2 at PLT
 ; SOFTFLOAT-NEXT:    popq %rcx
 ; SOFTFLOAT-NEXT:    .cfi_def_cfa_offset 8
 ; SOFTFLOAT-NEXT:    retq
@@ -126,7 +126,7 @@ define double @test4(ptr nocapture %src) nounwind {
 ; SOFTFLOAT:       # %bb.0:
 ; SOFTFLOAT-NEXT:    pushq %rax
 ; SOFTFLOAT-NEXT:    movzwl (%rdi), %edi
-; SOFTFLOAT-NEXT:    callq __gnu_h2f_ieee at PLT
+; SOFTFLOAT-NEXT:    callq __extendhfsf2 at PLT
 ; SOFTFLOAT-NEXT:    movl %eax, %edi
 ; SOFTFLOAT-NEXT:    callq __extendsfdf2 at PLT
 ; SOFTFLOAT-NEXT:    popq %rcx
diff --git a/llvm/test/CodeGen/X86/fmf-flags.ll b/llvm/test/CodeGen/X86/fmf-flags.ll
index 24dabfc18b9e3..16ebf70126f8b 100644
--- a/llvm/test/CodeGen/X86/fmf-flags.ll
+++ b/llvm/test/CodeGen/X86/fmf-flags.ll
@@ -124,13 +124,13 @@ define dso_local float @div_arcp_by_const(half %x) {
 ; X86-NEXT:    .cfi_def_cfa_offset 8
 ; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-NEXT:    movl %eax, (%esp)
-; X86-NEXT:    calll __gnu_h2f_ieee
+; X86-NEXT:    calll __extendhfsf2
 ; X86-NEXT:    fmuls {{\.?LCPI[0-9]+_[0-9]+}}
 ; X86-NEXT:    fstps (%esp)
-; X86-NEXT:    calll __gnu_f2h_ieee
+; X86-NEXT:    calll __truncsfhf2
 ; X86-NEXT:    movzwl %ax, %eax
 ; X86-NEXT:    movl %eax, (%esp)
-; X86-NEXT:    calll __gnu_h2f_ieee
+; X86-NEXT:    calll __extendhfsf2
 ; X86-NEXT:    popl %eax
 ; X86-NEXT:    .cfi_def_cfa_offset 4
 ; X86-NEXT:    retl
diff --git a/llvm/test/CodeGen/X86/fp-i129.ll b/llvm/test/CodeGen/X86/fp-i129.ll
index 97116ce4e621f..c55c19abbd9b8 100644
--- a/llvm/test/CodeGen/X86/fp-i129.ll
+++ b/llvm/test/CodeGen/X86/fp-i129.ll
@@ -96,7 +96,7 @@ define i257 @fptosi257_double(double %a) nounwind {
 ; half tests
 define i257 @fptosi_half(half %a) nounwind {
 ; X86-LABEL: fptosi_half:
-; X86: __gnu_h2f_ieee
+; X86: __extendhfsf2
 ;
 ; X64-LABEL: fptosi_half:
 ; X64: __extendhfsf2
@@ -106,7 +106,7 @@ define i257 @fptosi_half(half %a) nounwind {
 
 define half @uitofp_half(i257 %a) nounwind {
 ; X86-LABEL: uitofp_half:
-; X86: __gnu_f2h_ieee
+; X86: __truncsfhf2
 ;
 ; X64-LABEL: uitofp_half:
 ; X64: __truncsfhf2
diff --git a/llvm/test/CodeGen/X86/fp128-cast-strict.ll b/llvm/test/CodeGen/X86/fp128-cast-strict.ll
index f141153d059ac..707b05f3478db 100644
--- a/llvm/test/CodeGen/X86/fp128-cast-strict.ll
+++ b/llvm/test/CodeGen/X86/fp128-cast-strict.ll
@@ -28,7 +28,7 @@ define dso_local void @TestFPExtF16_F128() nounwind strictfp {
 ; X64-AVX512-LABEL: TestFPExtF16_F128:
 ; X64-AVX512:       # %bb.0: # %entry
 ; X64-AVX512-NEXT:    pushq %rax
-; X64-AVX512-NEXT:    vmovsh vf16(%rip), %xmm0
+; X64-AVX512-NEXT:    vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
 ; X64-AVX512-NEXT:    callq __extendhftf2 at PLT
 ; X64-AVX512-NEXT:    vmovaps %xmm0, vf128(%rip)
 ; X64-AVX512-NEXT:    popq %rax
@@ -40,7 +40,7 @@ define dso_local void @TestFPExtF16_F128() nounwind strictfp {
 ; X86-NEXT:    subl $40, %esp
 ; X86-NEXT:    movzwl vf16, %eax
 ; X86-NEXT:    movl %eax, (%esp)
-; X86-NEXT:    calll __gnu_h2f_ieee
+; X86-NEXT:    calll __extendhfsf2
 ; X86-NEXT:    fstps {{[0-9]+}}(%esp)
 ; X86-NEXT:    wait
 ; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax
diff --git a/llvm/test/CodeGen/X86/fptosi-sat-scalar.ll b/llvm/test/CodeGen/X86/fptosi-sat-scalar.ll
index 04fce7badb951..85f4c945230e1 100644
--- a/llvm/test/CodeGen/X86/fptosi-sat-scalar.ll
+++ b/llvm/test/CodeGen/X86/fptosi-sat-scalar.ll
@@ -2060,7 +2060,7 @@ define i1 @test_signed_i1_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $24, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2158,7 +2158,7 @@ define i8 @test_signed_i8_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $12, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2253,7 +2253,7 @@ define i13 @test_signed_i13_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $12, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2349,7 +2349,7 @@ define i16 @test_signed_i16_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $12, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2445,7 +2445,7 @@ define i19 @test_signed_i19_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $12, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2538,7 +2538,7 @@ define i32 @test_signed_i32_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $12, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2633,7 +2633,7 @@ define i50 @test_signed_i50_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $20, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2758,7 +2758,7 @@ define i64 @test_signed_i64_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $20, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2885,7 +2885,7 @@ define i100 @test_signed_i100_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $60, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    leal {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
 ; X86-X87-NEXT:    fsts {{[0-9]+}}(%esp)
@@ -3064,7 +3064,7 @@ define i128 @test_signed_i128_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $60, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    leal {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
 ; X86-X87-NEXT:    fsts {{[0-9]+}}(%esp)
diff --git a/llvm/test/CodeGen/X86/fptoui-sat-scalar.ll b/llvm/test/CodeGen/X86/fptoui-sat-scalar.ll
index fefc92c313511..47dc3ca3616ea 100644
--- a/llvm/test/CodeGen/X86/fptoui-sat-scalar.ll
+++ b/llvm/test/CodeGen/X86/fptoui-sat-scalar.ll
@@ -1883,7 +1883,7 @@ define i1 @test_unsigned_i1_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $12, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -1965,7 +1965,7 @@ define i8 @test_unsigned_i8_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $12, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2047,7 +2047,7 @@ define i13 @test_unsigned_i13_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $12, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2128,7 +2128,7 @@ define i16 @test_unsigned_i16_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $12, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2209,7 +2209,7 @@ define i19 @test_unsigned_i19_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $28, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2295,7 +2295,7 @@ define i32 @test_unsigned_i32_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $28, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    orl $3072, %eax # imm = 0xC00
@@ -2382,7 +2382,7 @@ define i50 @test_unsigned_i50_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $24, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}
 ; X86-X87-NEXT:    fxch %st(1)
 ; X86-X87-NEXT:    fucom %st(1)
@@ -2526,7 +2526,7 @@ define i64 @test_unsigned_i64_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $20, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}
 ; X86-X87-NEXT:    fxch %st(1)
 ; X86-X87-NEXT:    fucom %st(1)
@@ -2667,7 +2667,7 @@ define i100 @test_unsigned_i100_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $44, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    leal {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
 ; X86-X87-NEXT:    fsts {{[0-9]+}}(%esp)
@@ -2821,7 +2821,7 @@ define i128 @test_unsigned_i128_f16(half %f) nounwind {
 ; X86-X87-NEXT:    subl $60, %esp
 ; X86-X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
-; X86-X87-NEXT:    calll __gnu_h2f_ieee
+; X86-X87-NEXT:    calll __extendhfsf2
 ; X86-X87-NEXT:    leal {{[0-9]+}}(%esp), %eax
 ; X86-X87-NEXT:    movl %eax, (%esp)
 ; X86-X87-NEXT:    fsts {{[0-9]+}}(%esp)
diff --git a/llvm/test/CodeGen/X86/frem.ll b/llvm/test/CodeGen/X86/frem.ll
index 35d16c3bac70d..959265d08299a 100644
--- a/llvm/test/CodeGen/X86/frem.ll
+++ b/llvm/test/CodeGen/X86/frem.ll
@@ -82,7 +82,7 @@ define void @frem_f128(fp128 %a0, fp128 %a1, ptr%p3) nounwind {
 ; CHECK:       # %bb.0:
 ; CHECK-NEXT:    pushq %rbx
 ; CHECK-NEXT:    movq %rdi, %rbx
-; CHECK-NEXT:    callq fmodf128
+; CHECK-NEXT:    callq fmodf128 at PLT
 ; CHECK-NEXT:    vmovaps %xmm0, (%rbx)
 ; CHECK-NEXT:    popq %rbx
 ; CHECK-NEXT:    retq
diff --git a/llvm/test/CodeGen/X86/half-constrained.ll b/llvm/test/CodeGen/X86/half-constrained.ll
index 0f73129d984bd..f1874cc03000a 100644
--- a/llvm/test/CodeGen/X86/half-constrained.ll
+++ b/llvm/test/CodeGen/X86/half-constrained.ll
@@ -15,7 +15,7 @@ define float @half_to_float() strictfp {
 ; X86-NOF16C-NEXT:    .cfi_def_cfa_offset 16
 ; X86-NOF16C-NEXT:    movzwl a, %eax
 ; X86-NOF16C-NEXT:    movl %eax, (%esp)
-; X86-NOF16C-NEXT:    calll __gnu_h2f_ieee
+; X86-NOF16C-NEXT:    calll __extendhfsf2
 ; X86-NOF16C-NEXT:    addl $12, %esp
 ; X86-NOF16C-NEXT:    .cfi_def_cfa_offset 4
 ; X86-NOF16C-NEXT:    retl
@@ -64,7 +64,7 @@ define double @half_to_double() strictfp {
 ; X86-NOF16C-NEXT:    .cfi_def_cfa_offset 16
 ; X86-NOF16C-NEXT:    movzwl a, %eax
 ; X86-NOF16C-NEXT:    movl %eax, (%esp)
-; X86-NOF16C-NEXT:    calll __gnu_h2f_ieee
+; X86-NOF16C-NEXT:    calll __extendhfsf2
 ; X86-NOF16C-NEXT:    addl $12, %esp
 ; X86-NOF16C-NEXT:    .cfi_def_cfa_offset 4
 ; X86-NOF16C-NEXT:    retl
@@ -116,7 +116,7 @@ define x86_fp80 @half_to_fp80() strictfp {
 ; X86-NOF16C-NEXT:    .cfi_def_cfa_offset 16
 ; X86-NOF16C-NEXT:    movzwl a, %eax
 ; X86-NOF16C-NEXT:    movl %eax, (%esp)
-; X86-NOF16C-NEXT:    calll __gnu_h2f_ieee
+; X86-NOF16C-NEXT:    calll __extendhfsf2
 ; X86-NOF16C-NEXT:    addl $12, %esp
 ; X86-NOF16C-NEXT:    .cfi_def_cfa_offset 4
 ; X86-NOF16C-NEXT:    retl
@@ -166,7 +166,7 @@ define void @float_to_half(float %0) strictfp {
 ; X86-NOF16C-NEXT:    flds {{[0-9]+}}(%esp)
 ; X86-NOF16C-NEXT:    fstps (%esp)
 ; X86-NOF16C-NEXT:    wait
-; X86-NOF16C-NEXT:    calll __gnu_f2h_ieee
+; X86-NOF16C-NEXT:    calll __truncsfhf2
 ; X86-NOF16C-NEXT:    movw %ax, a
 ; X86-NOF16C-NEXT:    addl $12, %esp
 ; X86-NOF16C-NEXT:    .cfi_def_cfa_offset 4
@@ -324,17 +324,17 @@ define void @add() strictfp {
 ; X86-NOF16C-NEXT:    .cfi_def_cfa_offset 16
 ; X86-NOF16C-NEXT:    movzwl a, %eax
 ; X86-NOF16C-NEXT:    movl %eax, (%esp)
-; X86-NOF16C-NEXT:    calll __gnu_h2f_ieee
+; X86-NOF16C-NEXT:    calll __extendhfsf2
 ; X86-NOF16C-NEXT:    fstps {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
 ; X86-NOF16C-NEXT:    wait
 ; X86-NOF16C-NEXT:    movzwl b, %eax
 ; X86-NOF16C-NEXT:    movl %eax, (%esp)
-; X86-NOF16C-NEXT:    calll __gnu_h2f_ieee
+; X86-NOF16C-NEXT:    calll __extendhfsf2
 ; X86-NOF16C-NEXT:    flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload
 ; X86-NOF16C-NEXT:    faddp %st, %st(1)
 ; X86-NOF16C-NEXT:    fstps (%esp)
 ; X86-NOF16C-NEXT:    wait
-; X86-NOF16C-NEXT:    calll __gnu_f2h_ieee
+; X86-NOF16C-NEXT:    calll __truncsfhf2
 ; X86-NOF16C-NEXT:    movw %ax, c
 ; X86-NOF16C-NEXT:    addl $12, %esp
 ; X86-NOF16C-NEXT:    .cfi_def_cfa_offset 4
diff --git a/llvm/test/CodeGen/X86/ldexp.ll b/llvm/test/CodeGen/X86/ldexp.ll
index 3c6e14598571d..859139463b7e3 100644
--- a/llvm/test/CodeGen/X86/ldexp.ll
+++ b/llvm/test/CodeGen/X86/ldexp.ll
@@ -608,14 +608,14 @@ define half @ldexp_f16(half %arg0, i32 %arg1) {
 ; WIN32-NEXT:    movl {{[0-9]+}}(%esp), %esi
 ; WIN32-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; WIN32-NEXT:    movl %eax, (%esp)
-; WIN32-NEXT:    calll ___gnu_h2f_ieee
+; WIN32-NEXT:    calll ___extendhfsf2
 ; WIN32-NEXT:    movl %esi, {{[0-9]+}}(%esp)
 ; WIN32-NEXT:    fstpl (%esp)
 ; WIN32-NEXT:    calll _ldexp
 ; WIN32-NEXT:    fstps {{[0-9]+}}(%esp)
 ; WIN32-NEXT:    flds {{[0-9]+}}(%esp)
 ; WIN32-NEXT:    fstps (%esp)
-; WIN32-NEXT:    calll ___gnu_f2h_ieee
+; WIN32-NEXT:    calll ___truncsfhf2
 ; WIN32-NEXT:    addl $16, %esp
 ; WIN32-NEXT:    popl %esi
 ; WIN32-NEXT:    retl
diff --git a/llvm/test/CodeGen/X86/llvm.frexp.ll b/llvm/test/CodeGen/X86/llvm.frexp.ll
index 96de34519556d..8436c1052552e 100644
--- a/llvm/test/CodeGen/X86/llvm.frexp.ll
+++ b/llvm/test/CodeGen/X86/llvm.frexp.ll
@@ -45,7 +45,7 @@ define { half, i32 } @test_frexp_f16_i32(half %a) {
 ; WIN32-NEXT:    subl $20, %esp
 ; WIN32-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; WIN32-NEXT:    movl %eax, (%esp)
-; WIN32-NEXT:    calll ___gnu_h2f_ieee
+; WIN32-NEXT:    calll ___extendhfsf2
 ; WIN32-NEXT:    leal {{[0-9]+}}(%esp), %eax
 ; WIN32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
 ; WIN32-NEXT:    fstpl (%esp)
@@ -54,7 +54,7 @@ define { half, i32 } @test_frexp_f16_i32(half %a) {
 ; WIN32-NEXT:    flds {{[0-9]+}}(%esp)
 ; WIN32-NEXT:    fstps (%esp)
 ; WIN32-NEXT:    movl {{[0-9]+}}(%esp), %esi
-; WIN32-NEXT:    calll ___gnu_f2h_ieee
+; WIN32-NEXT:    calll ___truncsfhf2
 ; WIN32-NEXT:    movl %esi, %edx
 ; WIN32-NEXT:    addl $20, %esp
 ; WIN32-NEXT:    popl %esi
@@ -95,7 +95,7 @@ define half @test_frexp_f16_i32_only_use_fract(half %a) {
 ; WIN32-NEXT:    subl $20, %esp
 ; WIN32-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; WIN32-NEXT:    movl %eax, (%esp)
-; WIN32-NEXT:    calll ___gnu_h2f_ieee
+; WIN32-NEXT:    calll ___extendhfsf2
 ; WIN32-NEXT:    leal {{[0-9]+}}(%esp), %eax
 ; WIN32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
 ; WIN32-NEXT:    fstpl (%esp)
@@ -103,7 +103,7 @@ define half @test_frexp_f16_i32_only_use_fract(half %a) {
 ; WIN32-NEXT:    fstps {{[0-9]+}}(%esp)
 ; WIN32-NEXT:    flds {{[0-9]+}}(%esp)
 ; WIN32-NEXT:    fstps (%esp)
-; WIN32-NEXT:    calll ___gnu_f2h_ieee
+; WIN32-NEXT:    calll ___truncsfhf2
 ; WIN32-NEXT:    addl $20, %esp
 ; WIN32-NEXT:    retl
   %result = call { half, i32 } @llvm.frexp.f16.i32(half %a)
@@ -146,7 +146,7 @@ define i32 @test_frexp_f16_i32_only_use_exp(half %a) {
 ; WIN32-NEXT:    subl $16, %esp
 ; WIN32-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; WIN32-NEXT:    movl %eax, (%esp)
-; WIN32-NEXT:    calll ___gnu_h2f_ieee
+; WIN32-NEXT:    calll ___extendhfsf2
 ; WIN32-NEXT:    leal {{[0-9]+}}(%esp), %eax
 ; WIN32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
 ; WIN32-NEXT:    fstpl (%esp)



More information about the llvm-commits mailing list