Skip to content

Commit ae15e5b

Browse files
committed
Propagate depth correctly
1 parent 74b1ed3 commit ae15e5b

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
@@ -16832,7 +16832,7 @@ static void knownBitsForWorkitemID(const GCNSubtarget &ST,
1683216832

1683316833
static void knownBitsForSBFE(const MachineInstr &MI, GISelValueTracking &VT,
1683416834
KnownBits &Known, const APInt &DemandedElts,
16835-
unsigned BFEWidth, bool SExt) {
16835+
unsigned BFEWidth, bool SExt, unsigned Depth) {
1683616836
const MachineRegisterInfo &MRI = VT.getMachineFunction().getRegInfo();
1683716837
const MachineOperand &Src1 = MI.getOperand(2);
1683816838

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

16857-
VT.computeKnownBitsImpl(MI.getOperand(1).getReg(), Known, DemandedElts);
16857+
VT.computeKnownBitsImpl(MI.getOperand(1).getReg(), Known, DemandedElts,
16858+
Depth + 1);
1685816859

1685916860
Known.Zero = Known.Zero.lshr(Offset);
1686016861
Known.One = Known.One.lshr(Offset);
@@ -16876,16 +16877,16 @@ void SITargetLowering::computeKnownBitsForTargetInstr(
1687616877
switch (MI->getOpcode()) {
1687716878
case AMDGPU::S_BFE_I32:
1687816879
return knownBitsForSBFE(*MI, VT, Known, DemandedElts, /*Width=*/32,
16879-
/*SExt=*/true);
16880+
/*SExt=*/true, Depth);
1688016881
case AMDGPU::S_BFE_U32:
1688116882
return knownBitsForSBFE(*MI, VT, Known, DemandedElts, /*Width=*/32,
16882-
/*SExt=*/false);
16883+
/*SExt=*/false, Depth);
1688316884
case AMDGPU::S_BFE_I64:
1688416885
return knownBitsForSBFE(*MI, VT, Known, DemandedElts, /*Width=*/64,
16885-
/*SExt=*/true);
16886+
/*SExt=*/true, Depth);
1688616887
case AMDGPU::S_BFE_U64:
1688716888
return knownBitsForSBFE(*MI, VT, Known, DemandedElts, /*Width=*/64,
16888-
/*SExt=*/false);
16889+
/*SExt=*/false, Depth);
1688916890
case AMDGPU::G_INTRINSIC:
1689016891
case AMDGPU::G_INTRINSIC_CONVERGENT: {
1689116892
Intrinsic::ID IID = cast<GIntrinsic>(MI)->getIntrinsicID();

0 commit comments

Comments
 (0)