Skip to content

Commit 2df652a

Browse files
authored
[CodeGen] Simplify updateLiveIn in MachineSink (#79831)
When a whole register is added a basic block's liveins, use LaneBitmask::getAll for the live lanes instead of trying to calculate an accurate mask of the lanes that comprise the register. This simplifies the code and matches other places where a whole register is marked as livein. This also avoids problems when regunits that are synthesized by TableGen to represent ad hoc aliasing have a lane mask of 0. Fixes #78942
1 parent 97c19a4 commit 2df652a

File tree

4 files changed

+5
-10
lines changed

4 files changed

+5
-10
lines changed

llvm/lib/CodeGen/MachineSink.cpp

+2-7
Original file line numberDiff line numberDiff line change
@@ -1949,13 +1949,8 @@ static void updateLiveIn(MachineInstr *MI, MachineBasicBlock *SuccBB,
19491949
for (unsigned DefReg : DefedRegsInCopy)
19501950
for (MCPhysReg S : TRI->subregs_inclusive(DefReg))
19511951
SuccBB->removeLiveIn(S);
1952-
for (auto U : UsedOpsInCopy) {
1953-
Register SrcReg = MI->getOperand(U).getReg();
1954-
LaneBitmask Mask;
1955-
for (MCRegUnitMaskIterator S(SrcReg, TRI); S.isValid(); ++S)
1956-
Mask |= (*S).second;
1957-
SuccBB->addLiveIn(SrcReg, Mask);
1958-
}
1952+
for (auto U : UsedOpsInCopy)
1953+
SuccBB->addLiveIn(MI->getOperand(U).getReg());
19591954
SuccBB->sortUniqueLiveIns();
19601955
}
19611956

llvm/test/CodeGen/AMDGPU/av_spill_cross_bb_usage.mir

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ body: |
4747
; GCN-NEXT: {{ $}}
4848
; GCN-NEXT: bb.1:
4949
; GCN-NEXT: successors: %bb.2(0x80000000)
50-
; GCN-NEXT: liveins: $exec:0x000000000000000F, $sgpr30, $sgpr31, $vgpr0:0x0000000000000003, $vgpr1:0x0000000000000003, $vgpr2:0x0000000000000003, $vgpr3:0x0000000000000003, $vgpr4:0x0000000000000003, $vgpr5:0x0000000000000003, $vgpr6:0x0000000000000003, $vgpr7:0x0000000000000003, $vgpr8:0x0000000000000003, $vgpr9:0x0000000000000003, $vgpr40, $sgpr30_sgpr31, $vgpr10_vgpr11:0x000000000000000F, $vgpr14_vgpr15:0x000000000000000F, $vgpr41_vgpr42:0x000000000000000F, $vgpr43_vgpr44:0x000000000000000F, $vgpr45_vgpr46:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F
50+
; GCN-NEXT: liveins: $exec, $sgpr30, $sgpr31, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr40, $sgpr30_sgpr31, $vgpr10_vgpr11:0x000000000000000F, $vgpr14_vgpr15:0x000000000000000F, $vgpr41_vgpr42:0x000000000000000F, $vgpr43_vgpr44:0x000000000000000F, $vgpr45_vgpr46:0x000000000000000F, $vgpr56_vgpr57:0x000000000000000F, $vgpr58_vgpr59:0x000000000000000F, $vgpr60_vgpr61:0x000000000000000F
5151
; GCN-NEXT: {{ $}}
5252
; GCN-NEXT: renamable $vgpr57 = COPY $vgpr9, implicit $exec
5353
; GCN-NEXT: renamable $vgpr56 = COPY $vgpr8, implicit $exec

llvm/test/CodeGen/AMDGPU/branch-folding-implicit-def-subreg.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,7 @@ define amdgpu_kernel void @f1(ptr addrspace(1) %arg, ptr addrspace(1) %arg1, i64
808808
; GFX90A-NEXT: {{ $}}
809809
; GFX90A-NEXT: bb.58:
810810
; GFX90A-NEXT: successors: %bb.7(0x80000000)
811-
; GFX90A-NEXT: liveins: $exec:0x000000000000000F, $sgpr12, $sgpr13, $sgpr14, $sgpr15:0x0000000000000003, $sgpr23:0x0000000000000003, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7:0x000000000000000F, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr24_sgpr25, $sgpr26_sgpr27, $sgpr28_sgpr29, $sgpr42_sgpr43, $sgpr16_sgpr17_sgpr18_sgpr19:0x00000000000000F0, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $vgpr2_vgpr3:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr18_vgpr19:0x000000000000000F, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x000000000000000F, $vgpr24_vgpr25:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
811+
; GFX90A-NEXT: liveins: $exec, $sgpr12, $sgpr13, $sgpr14, $sgpr15, $sgpr23, $vgpr30, $vgpr31, $sgpr4_sgpr5, $sgpr6_sgpr7:0x000000000000000F, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr24_sgpr25, $sgpr26_sgpr27, $sgpr28_sgpr29, $sgpr42_sgpr43, $sgpr16_sgpr17_sgpr18_sgpr19:0x00000000000000F0, $sgpr20_sgpr21_sgpr22_sgpr23:0x000000000000003C, $vgpr2_vgpr3:0x000000000000000F, $vgpr10_vgpr11:0x000000000000000F, $vgpr18_vgpr19:0x000000000000000F, $vgpr20_vgpr21:0x000000000000000F, $vgpr22_vgpr23:0x000000000000000F, $vgpr24_vgpr25:0x000000000000000F, $sgpr0_sgpr1_sgpr2_sgpr3
812812
; GFX90A-NEXT: {{ $}}
813813
; GFX90A-NEXT: renamable $vgpr15 = COPY killed renamable $sgpr23, implicit $exec
814814
; GFX90A-NEXT: renamable $vgpr17 = COPY killed renamable $sgpr15, implicit $exec

llvm/test/CodeGen/AMDGPU/postra-machine-sink.mir

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# CHECK-LABEL: bb.0:
66
# CHECK: renamable $sgpr1 = COPY renamable $sgpr2
77
# CHECK-LABEL: bb.1:
8-
# CHECK: liveins: $sgpr0_sgpr1:0x000000000000000F
8+
# CHECK: liveins: $sgpr0_sgpr1
99
# CHECK: renamable $vgpr1_vgpr2 = COPY renamable $sgpr0_sgpr1
1010

1111
---

0 commit comments

Comments
 (0)