Skip to content

Commit 769d14f

Browse files
committed
fixup! fixup! [RISCV] Optimized and with atomic_load into zextload when safe.
corrected wrong usage of maskTrailingOnes
1 parent 78ecf8a commit 769d14f

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15297,11 +15297,11 @@ static SDValue reduceANDOfAtomicLoad(SDNode *N,
1529715297
return SDValue();
1529815298

1529915299
EVT LoadedVT = ALoad->getMemoryVT();
15300-
uint64_t Mask = maskTrailingOnes<uint64_t>(LoadedVT.getSizeInBits());
15301-
uint64_t ExpectedMask = LoadedVT.getSizeInBits() == 8 ? 0xFF
15302-
: LoadedVT.getSizeInBits() == 16 ? 0xFFFF
15303-
: LoadedVT.getSizeInBits() == 32 ? 0xFFFFFFFF
15304-
: 0xFFFFFFFFFFFFFFFF;
15300+
ConstantSDNode *MaskConst = dyn_cast<ConstantSDNode>(N->getOperand(1));
15301+
if (!MaskConst)
15302+
return SDValue();
15303+
uint64_t Mask = MaskConst->getZExtValue();
15304+
uint64_t ExpectedMask = maskTrailingOnes<uint64_t>(LoadedVT.getSizeInBits());
1530515305
if (Mask != ExpectedMask)
1530615306
return SDValue();
1530715307

0 commit comments

Comments
 (0)