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
27 lines
481 B
YAML
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
|
|
|
|
...
|