[llvm] cc53913 - [CodeGen] Use __extendhfsf2 and __truncsfhf2 by default (#126880)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 19 01:17:01 PST 2025
Author: Nikita Popov
Date: 2025-02-19T10:16:57+01:00
New Revision: cc539138acf742f53ef455147182a8de11980a02
URL: https://github.com/llvm/llvm-project/commit/cc539138acf742f53ef455147182a8de11980a02
DIFF: https://github.com/llvm/llvm-project/commit/cc539138acf742f53ef455147182a8de11980a02.diff
LOG: [CodeGen] Use __extendhfsf2 and __truncsfhf2 by default (#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 an 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.
Added:
lld/test/wasm/lto/Inputs/libcall-return-addr.ll
lld/test/wasm/lto/libcall-return-addr.ll
Modified:
llvm/include/llvm/IR/RuntimeLibcalls.def
llvm/lib/IR/RuntimeLibcalls.cpp
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/AArch64/16bit-float-promotion-with-nofp.ll
llvm/test/CodeGen/AArch64/atomicrmw-fadd.ll
llvm/test/CodeGen/AArch64/atomicrmw-fmax.ll
llvm/test/CodeGen/AArch64/atomicrmw-fmin.ll
llvm/test/CodeGen/AArch64/atomicrmw-fsub.ll
llvm/test/CodeGen/AArch64/strictfp_f16_abi_promote.ll
llvm/test/CodeGen/LoongArch/fp16-promote.ll
llvm/test/CodeGen/Mips/fp16-promote.ll
llvm/test/CodeGen/Mips/ldexp.ll
llvm/test/CodeGen/PowerPC/atomics.ll
llvm/test/CodeGen/PowerPC/handle-f16-storage-type.ll
llvm/test/CodeGen/PowerPC/pr48519.ll
llvm/test/CodeGen/PowerPC/pr49092.ll
llvm/test/CodeGen/PowerPC/vector-llrint.ll
llvm/test/CodeGen/PowerPC/vector-lrint.ll
llvm/test/CodeGen/SPARC/fp16-promote.ll
llvm/test/CodeGen/VE/Scalar/fp_extload_truncstore.ll
llvm/test/CodeGen/X86/cvt16.ll
llvm/test/CodeGen/X86/fmf-flags.ll
llvm/test/CodeGen/X86/fp-i129.ll
llvm/test/CodeGen/X86/fp128-cast-strict.ll
llvm/test/CodeGen/X86/fptosi-sat-scalar.ll
llvm/test/CodeGen/X86/fptoui-sat-scalar.ll
llvm/test/CodeGen/X86/frem.ll
llvm/test/CodeGen/X86/half-constrained.ll
llvm/test/CodeGen/X86/ldexp.ll
llvm/test/CodeGen/X86/llvm.frexp.ll
llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp
Removed:
lld/test/wasm/lto/Inputs/libcall-truncsfhf2.ll
lld/test/wasm/lto/libcall-truncsfhf2.ll
################################################################################
diff --git a/lld/test/wasm/lto/Inputs/libcall-return-addr.ll b/lld/test/wasm/lto/Inputs/libcall-return-addr.ll
new file mode 100644
index 0000000000000..271bdae11e49d
--- /dev/null
+++ b/lld/test/wasm/lto/Inputs/libcall-return-addr.ll
@@ -0,0 +1,6 @@
+target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-f128:64-n32:64-S128-ni:1:10:20"
+target triple = "wasm32-unknown-emscripten"
+
+define ptr @emscripten_return_address() {
+ ret ptr null
+}
diff --git a/lld/test/wasm/lto/Inputs/libcall-truncsfhf2.ll b/lld/test/wasm/lto/Inputs/libcall-truncsfhf2.ll
deleted file mode 100644
index 1439d7f8b4cb4..0000000000000
--- a/lld/test/wasm/lto/Inputs/libcall-truncsfhf2.ll
+++ /dev/null
@@ -1,6 +0,0 @@
-target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"
-target triple = "wasm32-unknown-unknown"
-
-define half @__truncsfhf2(float) {
- ret half 0.0
-}
diff --git a/lld/test/wasm/lto/libcall-return-addr.ll b/lld/test/wasm/lto/libcall-return-addr.ll
new file mode 100644
index 0000000000000..74eba74f97018
--- /dev/null
+++ b/lld/test/wasm/lto/libcall-return-addr.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as %s -o %t.o
+; RUN: llvm-as %p/Inputs/libcall-return-addr.ll -o %t.return-addr.o
+; RUN: rm -f %t.a
+; RUN: llvm-ar rcs %t.a %t.return-addr.o
+; RUN: not wasm-ld --export-all %t.o %t.a -o %t.wasm 2>&1 | FileCheck %s
+
+target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-f128:64-n32:64-S128-ni:1:10:20"
+target triple = "wasm32-unknown-emscripten"
+
+ at g_ptr = global ptr null
+
+define void @_start() {
+ %addr = call ptr @llvm.returnaddress(i32 1)
+ store ptr %addr, ptr @g_ptr
+ ret void
+}
+
+; CHECK: wasm-ld: error: {{.*}}return-addr.o): attempt to add bitcode file after LTO (emscripten_return_address)
diff --git a/lld/test/wasm/lto/libcall-truncsfhf2.ll b/lld/test/wasm/lto/libcall-truncsfhf2.ll
deleted file mode 100644
index fd07bb53890f6..0000000000000
--- a/lld/test/wasm/lto/libcall-truncsfhf2.ll
+++ /dev/null
@@ -1,20 +0,0 @@
-; RUN: llvm-as %s -o %t.o
-; RUN: llvm-as %p/Inputs/libcall-truncsfhf2.ll -o %t.truncsfhf2.o
-; RUN: rm -f %t.a
-; RUN: llvm-ar rcs %t.a %t.truncsfhf2.o
-; RUN: not wasm-ld --export-all %t.o %t.a -o %t.wasm 2>&1 | FileCheck %s
-
-target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"
-target triple = "wasm32-unknown-unknown"
-
- at g_float = global float 0.0
- at g_half = global half 0.0
-
-define void @_start() {
- %val1 = load float, ptr @g_float
- %v0 = fptrunc float %val1 to half
- store half %v0, ptr @g_half
- ret void
-}
-
-; CHECK: wasm-ld: error: {{.*}}truncsfhf2.o): attempt to add bitcode file after LTO (__truncsfhf2)
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 eb1491feb611e..c7ed73d0e95f7 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 d66e3e306d2ff..1710488e4e292 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 28cc136d76ffc..0f5e7bd254f68 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 4fc79b3d6e3f8..da4ef677440fd 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 8fce4f29035e2..dc25af9e2f1d5 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)
diff --git a/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp b/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp
index 0932938b209a4..22181ce33f0da 100644
--- a/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp
+++ b/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp
@@ -2060,7 +2060,7 @@ TEST_F(AArch64GISelMITest, LibcallFPExt) {
auto CheckStr = R"(
CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC
CHECK: $h0 = COPY [[TRUNC]]
- CHECK: BL &__gnu_h2f_ieee
+ CHECK: BL &__extendhfsf2
CHECK: $d0 = COPY
CHECK: BL &__extenddftf2
)";
@@ -2103,7 +2103,7 @@ TEST_F(AArch64GISelMITest, LibcallFPTrunc) {
auto CheckStr = R"(
CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC
CHECK: $s0 = COPY [[TRUNC]]
- CHECK: BL &__gnu_f2h_ieee
+ CHECK: BL &__truncsfhf2
CHECK: $q0 = COPY
CHECK: BL &__trunctfdf2
)";
More information about the llvm-commits
mailing list