[llvm] [GlobalISel] Add known bits calculation for atomic G_LOAD (PR #222870)
Tim Gymnich via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 11 03:09:01 PDT 2026
================
@@ -708,7 +708,23 @@ void GISelValueTracking::computeKnownBitsImpl(Register R, KnownBits &Known,
KnownBits KnownRange(MMO->getMemoryType().getScalarSizeInBits());
if (const MDNode *Ranges = MMO->getRanges())
computeKnownBitsFromRangeMetadata(*Ranges, KnownRange);
- Known = KnownRange.anyext(Known.getBitWidth());
+
+ if (MMO->isAtomic()) {
+ switch (TL.getExtendForAtomicOps()) {
+ case ISD::ZERO_EXTEND:
+ Known = KnownRange.zext(Known.getBitWidth());
+ break;
+ case ISD::SIGN_EXTEND:
+ Known = KnownRange.sext(Known.getBitWidth());
+ break;
+ default:
+ Known = KnownRange.anyext(Known.getBitWidth());
+ break;
+ }
+ } else {
+ Known = KnownRange.anyext(Known.getBitWidth());
+ }
----------------
tgymnich wrote:
at this point we have no guarantee that an atomic load actually will get extended later on.
https://github.com/llvm/llvm-project/pull/222870
More information about the llvm-commits
mailing list