[llvm] [GlobalISel] Add computeNumSignBits for SHL (PR #152067)

David Green via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 10 09:51:31 PDT 2025


https://github.com/davemgreen commented:

The tests Look good - can we add these as some simple additions for when more sign bits are now know (and some edge cases).
```
---
name:            SHLless
body:             |
  bb.1:
  ; CHECK-LABEL: name: @SHLless
  ; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
  ; CHECK-NEXT: %1:_ KnownBits:???????????????? SignBits:9
  ; CHECK-NEXT: %2:_ KnownBits:0000000000000011 SignBits:14
  ; CHECK-NEXT: %3:_ KnownBits:?????????????000 SignBits:6
    %0:_(s8) = COPY $b0
    %1:_(s16) = G_SEXT %0(s8)
    %2:_(s16) = G_CONSTANT i16 3
    %3:_(s16) = G_SHL %1, %2
...
---
name:            SHLeq
body:             |
  bb.1:
  ; CHECK-LABEL: name: @SHLeq
  ; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
  ; CHECK-NEXT: %1:_ KnownBits:???????????????? SignBits:9
  ; CHECK-NEXT: %2:_ KnownBits:0000000000001000 SignBits:12
  ; CHECK-NEXT: %3:_ KnownBits:????????00000000 SignBits:1
    %0:_(s8) = COPY $b0
    %1:_(s16) = G_SEXT %0(s8)
    %2:_(s16) = G_CONSTANT i16 8
    %3:_(s16) = G_SHL %1, %2
...
---
name:            SHLmore
body:             |
  bb.1:
  ; CHECK-LABEL: name: @SHLmore
  ; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
  ; CHECK-NEXT: %1:_ KnownBits:???????????????? SignBits:9
  ; CHECK-NEXT: %2:_ KnownBits:0000000000001101 SignBits:12
  ; CHECK-NEXT: %3:_ KnownBits:???0000000000000 SignBits:1
    %0:_(s8) = COPY $b0
    %1:_(s16) = G_SEXT %0(s8)
    %2:_(s16) = G_CONSTANT i16 13
    %3:_(s16) = G_SHL %1, %2
...
---
name:            SignBitsThroughZext
body:             |
  bb.1:
  ; CHECK-LABEL: name: @SignBitsThroughZext
  ; CHECK-NEXT: %0:_ KnownBits:???????? SignBits:1
  ; CHECK-NEXT: %1:_ KnownBits:0000000000000011 SignBits:14
  ; CHECK-NEXT: %2:_ KnownBits:???????? SignBits:4
  ; CHECK-NEXT: %3:_ KnownBits:00000000???????? SignBits:8
  ; CHECK-NEXT: %4:_ KnownBits:0000000000001000 SignBits:12
  ; CHECK-NEXT: %5:_ KnownBits:????????00000000 SignBits:4
    %0:_(s8) = COPY $b0
    %1:_(s16) = G_CONSTANT i16 3
    %2:_(s8) = G_ASHR %0, %1
    %3:_(s16) = G_ZEXT %2
    %4:_(s16) = G_CONSTANT i16 8
    %5:_(s16) = G_SHL %3, %4
...
```

Otherwise this LGTM - thanks.

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


More information about the llvm-commits mailing list