mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
cb61a9aa52
Summary: Add isRenamable() predicate to MachineOperand. This predicate can be used by machine passes after register allocation to determine whether it is safe to rename a given register operand. Register operands that aren't marked as renamable may be required to be assigned their current register to satisfy constraints that are not captured by the machine IR (e.g. ABI or ISA constraints). Reviewers: qcolombet, MatzeB, hfinkel Subscribers: nemanjai, mcrosier, javed.absar, llvm-commits Differential Revision: https://reviews.llvm.org/D39400 llvm-svn: 320503
33 lines
935 B
YAML
33 lines
935 B
YAML
# RUN: llc -o - %s -mtriple=amdgcn--amdhsa -verify-machineinstrs -run-pass=greedy,virtregrewriter | FileCheck %s
|
|
--- |
|
|
|
|
define amdgpu_kernel void @func0() {
|
|
ret void
|
|
}
|
|
|
|
...
|
|
|
|
---
|
|
# We should not detect any interference between v0/v1 here and only allocate
|
|
# sgpr0-sgpr3.
|
|
#
|
|
# CHECK-LABEL: func0
|
|
# CHECK: S_NOP 0, implicit-def renamable %sgpr0
|
|
# CHECK: S_NOP 0, implicit-def renamable %sgpr3
|
|
# CHECK: S_NOP 0, implicit-def renamable %sgpr1
|
|
# CHECK: S_NOP 0, implicit-def renamable %sgpr2
|
|
# CHECK: S_NOP 0, implicit renamable %sgpr0, implicit renamable %sgpr3
|
|
# CHECK: S_NOP 0, implicit renamable %sgpr1, implicit renamable %sgpr2
|
|
name: func0
|
|
body: |
|
|
bb.0:
|
|
S_NOP 0, implicit-def undef %0.sub0 : sreg_128
|
|
S_NOP 0, implicit-def %0.sub3
|
|
S_NOP 0, implicit-def undef %1.sub1 : sreg_128
|
|
S_NOP 0, implicit-def %1.sub2
|
|
|
|
|
|
S_NOP 0, implicit %0.sub0, implicit %0.sub3
|
|
S_NOP 0, implicit %1.sub1, implicit %1.sub2
|
|
...
|