[llvm] [SystemZ] Remove the `softPromoteHalfType` override (PR #175410)
Trevor Gross via llvm-commits
llvm-commits at lists.llvm.org
Sun Jan 11 04:06:31 PST 2026
https://github.com/tgross35 updated https://github.com/llvm/llvm-project/pull/175410
>From 422c76ffd80080d08b867dd671b7467a282be999 Mon Sep 17 00:00:00 2001
From: Trevor Gross <tg at trevorgross.com>
Date: Sun, 11 Jan 2026 00:12:17 -0500
Subject: [PATCH] [SystemZ] Remove the `softPromoteHalfType` override
`softPromoteHalfType` is being phased out because it is prone to
miscompilations (further context at [1]). SystemZ is one of the few
remaining platforms to override the default, so remove it here.
This only affects SystemZ when the `soft-float` option is used.
[1]: https://github.com/llvm/llvm-project/pull/175149
---
llvm/lib/Target/SystemZ/SystemZISelLowering.h | 1 -
.../CodeGen/SystemZ/fmuladd-soft-float.ll | 22 +++++++++++--------
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/llvm/lib/Target/SystemZ/SystemZISelLowering.h b/llvm/lib/Target/SystemZ/SystemZISelLowering.h
index 4a45153a23756..13a1cd1614a53 100644
--- a/llvm/lib/Target/SystemZ/SystemZISelLowering.h
+++ b/llvm/lib/Target/SystemZ/SystemZISelLowering.h
@@ -41,7 +41,6 @@ class SystemZTargetLowering : public TargetLowering {
const SystemZSubtarget &STI);
bool useSoftFloat() const override;
- bool softPromoteHalfType() const override { return false; }
// Override TargetLowering.
MVT getScalarShiftAmountTy(const DataLayout &, EVT) const override {
diff --git a/llvm/test/CodeGen/SystemZ/fmuladd-soft-float.ll b/llvm/test/CodeGen/SystemZ/fmuladd-soft-float.ll
index a982f9af52358..c1185acc9cfee 100644
--- a/llvm/test/CodeGen/SystemZ/fmuladd-soft-float.ll
+++ b/llvm/test/CodeGen/SystemZ/fmuladd-soft-float.ll
@@ -11,24 +11,28 @@ define half @fmuladd_intrinsic_f16(half %a, half %b, half %c) #0 {
; SOFT-FLOAT-NEXT: .cfi_offset %r15, -40
; SOFT-FLOAT-NEXT: aghi %r15, -160
; SOFT-FLOAT-NEXT: .cfi_def_cfa_offset 320
-; SOFT-FLOAT-NEXT: # kill: def $r4l killed $r4l def $r4d
-; SOFT-FLOAT-NEXT: llghr %r0, %r4
-; SOFT-FLOAT-NEXT: lr %r13, %r3
-; SOFT-FLOAT-NEXT: lr %r12, %r2
-; SOFT-FLOAT-NEXT: lgr %r2, %r0
+; SOFT-FLOAT-NEXT: # kill: def $r2l killed $r2l def $r2d
+; SOFT-FLOAT-NEXT: llghr %r2, %r2
+; SOFT-FLOAT-NEXT: lr %r13, %r4
+; SOFT-FLOAT-NEXT: lr %r12, %r3
; SOFT-FLOAT-NEXT: brasl %r14, __extendhfsf2 at PLT
; SOFT-FLOAT-NEXT: llghr %r0, %r12
; SOFT-FLOAT-NEXT: lgr %r12, %r2
; SOFT-FLOAT-NEXT: lgr %r2, %r0
; SOFT-FLOAT-NEXT: brasl %r14, __extendhfsf2 at PLT
+; SOFT-FLOAT-NEXT: lgr %r3, %r2
+; SOFT-FLOAT-NEXT: lgr %r2, %r12
+; SOFT-FLOAT-NEXT: brasl %r14, __mulsf3 at PLT
+; SOFT-FLOAT-NEXT: brasl %r14, __truncsfhf2 at PLT
; SOFT-FLOAT-NEXT: llghr %r0, %r13
; SOFT-FLOAT-NEXT: lgr %r13, %r2
; SOFT-FLOAT-NEXT: lgr %r2, %r0
; SOFT-FLOAT-NEXT: brasl %r14, __extendhfsf2 at PLT
-; SOFT-FLOAT-NEXT: lgr %r3, %r2
-; SOFT-FLOAT-NEXT: lgr %r2, %r13
-; SOFT-FLOAT-NEXT: brasl %r14, __mulsf3 at PLT
-; SOFT-FLOAT-NEXT: lgr %r3, %r12
+; SOFT-FLOAT-NEXT: llghr %r0, %r13
+; SOFT-FLOAT-NEXT: lgr %r13, %r2
+; SOFT-FLOAT-NEXT: lgr %r2, %r0
+; SOFT-FLOAT-NEXT: brasl %r14, __extendhfsf2 at PLT
+; SOFT-FLOAT-NEXT: lgr %r3, %r13
; SOFT-FLOAT-NEXT: brasl %r14, __addsf3 at PLT
; SOFT-FLOAT-NEXT: brasl %r14, __truncsfhf2 at PLT
; SOFT-FLOAT-NEXT: # kill: def $r2l killed $r2l killed $r2d
More information about the llvm-commits
mailing list