Skip to content

Commit 5a8d2dd

Browse files
author
Aditi Medhane
authored
[AMDGPU] Handle subregisters properly in generic operand legalizer (#108496)
Fix for the issue found during COPY introduction during legalization of PHI operands for sgpr to vgpr copy when subreg is involved.
1 parent 08f5f6d commit 5a8d2dd

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

llvm/lib/Target/AMDGPU/SIInstrInfo.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6231,10 +6231,9 @@ void SIInstrInfo::legalizeGenericOperand(MachineBasicBlock &InsertMBB,
62316231
return;
62326232

62336233
Register DstReg = MRI.createVirtualRegister(DstRC);
6234-
auto Copy = BuildMI(InsertMBB, I, DL, get(AMDGPU::COPY), DstReg).add(Op);
6235-
6234+
auto Copy =
6235+
BuildMI(InsertMBB, I, DL, get(AMDGPU::COPY), DstReg).addReg(OpReg);
62366236
Op.setReg(DstReg);
6237-
Op.setSubReg(0);
62386237

62396238
MachineInstr *Def = MRI.getVRegDef(OpReg);
62406239
if (!Def)

llvm/test/CodeGen/AMDGPU/phi-vgpr-input-moveimm.mir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ body: |
7373
; GCN-NEXT: successors: %bb.2(0x80000000)
7474
; GCN-NEXT: {{ $}}
7575
; GCN-NEXT: [[S_ADD_U:%[0-9]+]]:sreg_64 = S_ADD_U64_PSEUDO [[COPY]], [[COPY1]], implicit-def $scc
76-
; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_ADD_U]].sub0, implicit $exec
76+
; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY [[S_ADD_U]], implicit $exec
7777
; GCN-NEXT: S_BRANCH %bb.2
7878
; GCN-NEXT: {{ $}}
7979
; GCN-NEXT: bb.2:
8080
; GCN-NEXT: successors: %bb.3(0x80000000)
8181
; GCN-NEXT: {{ $}}
82-
; GCN-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B64_e32_]].sub0, %bb.3, [[COPY2]], %bb.1
82+
; GCN-NEXT: [[PHI:%[0-9]+]]:vgpr_32 = PHI [[V_MOV_B64_e32_]].sub0, %bb.3, [[COPY2]].sub0, %bb.1
8383
; GCN-NEXT: S_BRANCH %bb.3
8484
; GCN-NEXT: {{ $}}
8585
; GCN-NEXT: bb.3:

0 commit comments

Comments
 (0)