[llvm] [SystemZ] Remove the `softPromoteHalfType` override (PR #175410)

via llvm-commits llvm-commits at lists.llvm.org
Sun Jan 11 06:00:09 PST 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-systemz

Author: Trevor Gross (tgross35)

<details>
<summary>Changes</summary>

`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

---
Full diff: https://github.com/llvm/llvm-project/pull/175410.diff


2 Files Affected:

- (modified) llvm/lib/Target/SystemZ/SystemZISelLowering.h (-1) 
- (modified) llvm/test/CodeGen/SystemZ/fmuladd-soft-float.ll (+13-9) 


``````````diff
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

``````````

</details>


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


More information about the llvm-commits mailing list