[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