Skip to content

Commit 83cc936

Browse files
committed
Propagate depth correctly
1 parent 7a7b474 commit 83cc936

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16504,7 +16504,7 @@ static void knownBitsForWorkitemID(const GCNSubtarget &ST,
1650416504

1650516505
static void knownBitsForSBFE(const MachineInstr &MI, GISelValueTracking &VT,
1650616506
KnownBits &Known, const APInt &DemandedElts,
16507-
unsigned BFEWidth, bool SExt) {
16507+
unsigned BFEWidth, bool SExt, unsigned Depth) {
1650816508
const MachineRegisterInfo &MRI = VT.getMachineFunction().getRegInfo();
1650916509
const MachineOperand &Src1 = MI.getOperand(2);
1651016510

@@ -16526,7 +16526,8 @@ static void knownBitsForSBFE(const MachineInstr &MI, GISelValueTracking &VT,
1652616526
Src1Cst & maskTrailingOnes<unsigned>((BFEWidth == 32) ? 5 : 6);
1652716527
const unsigned Width = (Src1Cst >> 16) & maskTrailingOnes<unsigned>(6);
1652816528

16529-
VT.computeKnownBitsImpl(MI.getOperand(1).getReg(), Known, DemandedElts);
16529+
VT.computeKnownBitsImpl(MI.getOperand(1).getReg(), Known, DemandedElts,
16530+
Depth + 1);
1653016531

1653116532
Known.Zero = Known.Zero.lshr(Offset);
1653216533
Known.One = Known.One.lshr(Offset);
@@ -16548,16 +16549,16 @@ void SITargetLowering::computeKnownBitsForTargetInstr(
1654816549
switch (MI->getOpcode()) {
1654916550
case AMDGPU::S_BFE_I32:
1655016551
return knownBitsForSBFE(*MI, VT, Known, DemandedElts, /*Width=*/32,
16551-
/*SExt=*/true);
16552+
/*SExt=*/true, Depth);
1655216553
case AMDGPU::S_BFE_U32:
1655316554
return knownBitsForSBFE(*MI, VT, Known, DemandedElts, /*Width=*/32,
16554-
/*SExt=*/false);
16555+
/*SExt=*/false, Depth);
1655516556
case AMDGPU::S_BFE_I64:
1655616557
return knownBitsForSBFE(*MI, VT, Known, DemandedElts, /*Width=*/64,
16557-
/*SExt=*/true);
16558+
/*SExt=*/true, Depth);
1655816559
case AMDGPU::S_BFE_U64:
1655916560
return knownBitsForSBFE(*MI, VT, Known, DemandedElts, /*Width=*/64,
16560-
/*SExt=*/false);
16561+
/*SExt=*/false, Depth);
1656116562
case AMDGPU::G_INTRINSIC:
1656216563
case AMDGPU::G_INTRINSIC_CONVERGENT: {
1656316564
Intrinsic::ID IID = cast<GIntrinsic>(MI)->getIntrinsicID();

0 commit comments

Comments
 (0)