[llvm] [GlobalISel] Add known bits calculation for atomic G_LOAD (PR #222870)

via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 11 05:26:52 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()) {
----------------
MishkaSimakov wrote:

Thank you for the quick review.
Is there anything left to port from ATOMIC_LOAD case in `SelectionDAG::computeKnownBits?
Should we represent atomic loads as G_SEXTLOAD/G_ZEXTLOAD if `TL.getExtendForAtomicOps()` is SIGN_EXTEND/ZERO_EXTEND? This would give more information in the known-bits analysis.

https://github.com/llvm/llvm-project/pull/222870


More information about the llvm-commits mailing list