mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-25 13:45:34 +00:00
[GlobalISel] Don't RegBankSelect target-specific instructions.
They don't have types and should be using register classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277447 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a124aa1825
commit
b48427578b
@ -32,6 +32,11 @@ static inline bool isPreISelGenericOpcode(unsigned Opcode) {
|
||||
return Opcode >= TargetOpcode::PRE_ISEL_GENERIC_OPCODE_START &&
|
||||
Opcode <= TargetOpcode::PRE_ISEL_GENERIC_OPCODE_END;
|
||||
}
|
||||
|
||||
/// Check whether the given Opcode is a target-specific opcode.
|
||||
static inline bool isTargetSpecificOpcode(unsigned Opcode) {
|
||||
return Opcode > TargetOpcode::PRE_ISEL_GENERIC_OPCODE_END;
|
||||
}
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
||||
|
@ -554,7 +554,13 @@ bool RegBankSelect::runOnMachineFunction(MachineFunction &MF) {
|
||||
MII != End;) {
|
||||
// MI might be invalidated by the assignment, so move the
|
||||
// iterator before hand.
|
||||
assignInstr(*MII++);
|
||||
MachineInstr &MI = *MII++;
|
||||
|
||||
// Ignore target-specific instructions: they should use proper regclasses.
|
||||
if (isTargetSpecificOpcode(MI.getOpcode()))
|
||||
continue;
|
||||
|
||||
assignInstr(MI);
|
||||
}
|
||||
}
|
||||
OptMode = SaveOptMode;
|
||||
|
@ -54,6 +54,8 @@
|
||||
entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @ignoreTargetSpecificInst() { ret void }
|
||||
...
|
||||
|
||||
---
|
||||
@ -327,3 +329,28 @@ body: |
|
||||
%1(64) = COPY %x1
|
||||
%2(64) = G_OR <2 x s32> %0, %1
|
||||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: ignoreTargetSpecificInst
|
||||
name: ignoreTargetSpecificInst
|
||||
isSSA: true
|
||||
# CHECK: registers:
|
||||
# CHECK-NEXT: - { id: 0, class: gpr64 }
|
||||
# CHECK-NEXT: - { id: 1, class: gpr64 }
|
||||
registers:
|
||||
- { id: 0, class: gpr64 }
|
||||
- { id: 1, class: gpr64 }
|
||||
body: |
|
||||
bb.0:
|
||||
liveins: %x0
|
||||
|
||||
; CHECK: %0 = COPY %x0
|
||||
; CHECK-NEXT: %1 = ADDXrr %0, %0
|
||||
; CHECK-NEXT: %x0 = COPY %1
|
||||
; CHECK-NEXT: RET_ReallyLR implicit %x0
|
||||
|
||||
%0 = COPY %x0
|
||||
%1 = ADDXrr %0, %0
|
||||
%x0 = COPY %1
|
||||
RET_ReallyLR implicit %x0
|
||||
...
|
||||
|
Loading…
x
Reference in New Issue
Block a user