Skip to content

Commit 4229aa9

Browse files
committedJul 30, 2015
AMDGPU/SI: Simplify moveSMRDToVALU()
Summary: Replace the switch on instruction opcode with a switch on register size. This way we don't need to update the switch statement when we add new SMRD variants. Reviewers: arsenm Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D11601 llvm-svn: 243652
1 parent 9d74076 commit 4229aa9

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed
 

‎llvm/lib/Target/AMDGPU/SIInstrInfo.cpp

+9-11
Original file line numberDiff line numberDiff line change
@@ -2056,13 +2056,13 @@ void SIInstrInfo::splitSMRD(MachineInstr *MI,
20562056

20572057
void SIInstrInfo::moveSMRDToVALU(MachineInstr *MI, MachineRegisterInfo &MRI) const {
20582058
MachineBasicBlock *MBB = MI->getParent();
2059-
switch (MI->getOpcode()) {
2060-
case AMDGPU::S_LOAD_DWORD_IMM:
2061-
case AMDGPU::S_LOAD_DWORD_SGPR:
2062-
case AMDGPU::S_LOAD_DWORDX2_IMM:
2063-
case AMDGPU::S_LOAD_DWORDX2_SGPR:
2064-
case AMDGPU::S_LOAD_DWORDX4_IMM:
2065-
case AMDGPU::S_LOAD_DWORDX4_SGPR: {
2059+
int DstIdx = AMDGPU::getNamedOperandIdx(MI->getOpcode(), AMDGPU::OpName::dst);
2060+
assert(DstIdx != -1);
2061+
unsigned DstRCID = get(MI->getOpcode()).OpInfo[DstIdx].RegClass;
2062+
switch(RI.getRegClass(DstRCID)->getSize()) {
2063+
case 4:
2064+
case 8:
2065+
case 16: {
20662066
unsigned NewOpcode = getVALUOp(*MI);
20672067
unsigned RegOffset;
20682068
unsigned ImmOffset;
@@ -2134,8 +2134,7 @@ void SIInstrInfo::moveSMRDToVALU(MachineInstr *MI, MachineRegisterInfo &MRI) con
21342134
MRI.replaceRegWith(DstReg, NewDstReg);
21352135
break;
21362136
}
2137-
case AMDGPU::S_LOAD_DWORDX8_IMM:
2138-
case AMDGPU::S_LOAD_DWORDX8_SGPR: {
2137+
case 32: {
21392138
MachineInstr *Lo, *Hi;
21402139
splitSMRD(MI, &AMDGPU::SReg_128RegClass, AMDGPU::S_LOAD_DWORDX4_IMM,
21412140
AMDGPU::S_LOAD_DWORDX4_SGPR, Lo, Hi);
@@ -2145,8 +2144,7 @@ void SIInstrInfo::moveSMRDToVALU(MachineInstr *MI, MachineRegisterInfo &MRI) con
21452144
break;
21462145
}
21472146

2148-
case AMDGPU::S_LOAD_DWORDX16_IMM:
2149-
case AMDGPU::S_LOAD_DWORDX16_SGPR: {
2147+
case 64: {
21502148
MachineInstr *Lo, *Hi;
21512149
splitSMRD(MI, &AMDGPU::SReg_256RegClass, AMDGPU::S_LOAD_DWORDX8_IMM,
21522150
AMDGPU::S_LOAD_DWORDX8_SGPR, Lo, Hi);

0 commit comments

Comments
 (0)
Please sign in to comment.