[llvm] [SystemZ] Enable rematerialization for scalar loads (PR #179838)

via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 16 14:51:18 PST 2026


================
@@ -0,0 +1,127 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
+; Test avoiding the unnecessary spill by marking loads as rematerializable and
+; just directly loading from where the argument was originally passed on the
+; stack - moving the load down to the remat site.
+
+; RUN: llc < %s -verify-machineinstrs -mtriple=s390x-linux-gnu -O1 | FileCheck %s
+
+define void @remat_load(
+; CHECK-LABEL: remat_load:
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    stmg %r6, %r15, 48(%r15)
+; CHECK-NEXT:    aghi %r15, -232
+; CHECK-NEXT:    std %f8, 224(%r15) # 8-byte Spill
+; CHECK-NEXT:    std %f9, 216(%r15) # 8-byte Spill
+; CHECK-NEXT:    std %f10, 208(%r15) # 8-byte Spill
+; CHECK-NEXT:    std %f11, 200(%r15) # 8-byte Spill
+; CHECK-NEXT:    std %f12, 192(%r15) # 8-byte Spill
+; CHECK-NEXT:    std %f13, 184(%r15) # 8-byte Spill
+; CHECK-NEXT:    std %f14, 176(%r15) # 8-byte Spill
+; CHECK-NEXT:    std %f15, 168(%r15) # 8-byte Spill
+; CHECK-NEXT:    ld %f0, 448(%r15)
+; CHECK-NEXT:    le %f1, 444(%r15)
+; CHECK-NEXT:    le %f2, 436(%r15)
+; CHECK-NEXT:    le %f3, 428(%r15)
+; CHECK-NEXT:    lg %r14, 456(%r15)
+; CHECK-NEXT:    lb %r3, 399(%r15)
+; CHECK-NEXT:    st %r3, 160(%r15) # 4-byte Spill
+; CHECK-NEXT:    lh %r2, 406(%r15)
+; CHECK-NEXT:    st %r2, 164(%r15) # 4-byte Spill
+; CHECK-NEXT:    l %r1, 412(%r15)
----------------
anoopkg6 wrote:

Rematerialization happens in case of i8 and i16 arguments if they are marked with signext/zeroext attribute.

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


More information about the llvm-commits mailing list