[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