Files
clang-p2996/llvm/test/CodeGen/SystemZ/splitMove_addressReg.mir
Jonas Paulsson d6ee7e8481 [SystemZ] Handle address clobbering in splitMove(). (#92105)
When expanding an L128 (which is used to reload i128) it is
possible that the quadword destination register clobbers an
address register. This patch adds an assertion against the case
where both of the expanded parts clobber the address, and in the
case where one of the expanded parts do so puts it last.

Fixes #91437
2024-05-15 08:36:26 +02:00

27 lines
481 B
YAML

# RUN: llc -mtriple=s390x-linux-gnu -run-pass=postrapseudos \
# RUN: %s -o - -verify-machineinstrs | FileCheck %s
#
# Test that a L128 reload do not overwrite an address register prematurely
# after being split into two LGs.
--- |
target triple = "s390x-unknown-unknown"
define void @fun() {
ret void
}
...
# CHECK: name: fun
---
name: 'fun'
body: |
bb.0:
liveins: $r4d, $r15d
$r4q = L128 $r15d, 14920, killed $r4d
Return
...