[llvm] [DemandedBits] Support non-constant shift amounts for funnel shifts (PR #180569)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 6 21:48:51 PST 2026
github-actions[bot] wrote:
<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results
* 131917 tests passed
* 2984 tests skipped
* 2 tests failed
## Failed Tests
(click on a test name to see its output)
### LLVM
<details>
<summary>LLVM.Analysis/DemandedBits/fshl.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -S -disable-output -passes="print<demanded-bits>" < C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshl.ll 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshl.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -S -disable-output '-passes=print<demanded-bits>'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshl.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshl.ll:133:14: error: CHECK-DAG: expected string not found in input
# | ; CHECK-DAG: DemandedBits: 0xffffff00 for %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %c)
# | ^
# | <stdin>:61:76: note: scanning from here
# | Printing analysis 'Demanded Bits Analysis' for function 'test_fshl_range_3':
# | ^
# | <stdin>:65:1: note: possible intended match here
# | DemandedBits: 0xffff for %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %c)
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshl.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 56: DemandedBits: 0xffffffff for %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %b2)
# | 57: DemandedBits: 0xffffffff for %a in %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %b2)
# | 58: DemandedBits: 0xffffffff for %b in %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %b2)
# | 59: DemandedBits: 0x1f for %b2 in %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %b2)
# | 60: DemandedBits: 0xffffffffffffffff for @llvm.fshl.i32 in %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %b2)
# | 61: Printing analysis 'Demanded Bits Analysis' for function 'test_fshl_range_3':
# | dag:133'0 X~ error: no match found
# | 62: DemandedBits: 0xffffffff for %shl = shl i32 %fshl, 16
# | dag:133'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 63: DemandedBits: 0xffff for %fshl in %shl = shl i32 %fshl, 16
# | dag:133'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 64: DemandedBits: 0xffffffff for 16 in %shl = shl i32 %fshl, 16
# | dag:133'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 65: DemandedBits: 0xffff for %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %c)
# | dag:133'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | dag:133'1 ? possible intended match
# | 66: DemandedBits: 0xffffffff for %a in %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %c)
# | dag:133'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 67: DemandedBits: 0xffffffff for %b in %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %c)
# | dag:133'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 68: DemandedBits: 0x1f for %c in %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %c)
# | dag:133'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 69: DemandedBits: 0xffffffffffffffff for @llvm.fshl.i32 in %fshl = call i32 @llvm.fshl.i32(i32 %a, i32 %b, i32 %c)
# | dag:133'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 70: Printing analysis 'Demanded Bits Analysis' for function 'test_fshl_range_4':
# | dag:133'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>LLVM.Analysis/DemandedBits/fshr.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -S -disable-output -passes="print<demanded-bits>" < C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshr.ll 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshr.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -S -disable-output '-passes=print<demanded-bits>'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshr.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshr.ll:84:16: error: CHECK-LABEL: expected string not found in input
# | ; CHECK-LABEL: 'test_lshr_range_1'
# | ^
# | <stdin>:33:68: note: scanning from here
# | Printing analysis 'Demanded Bits Analysis' for function 'test_fshr':
# | ^
# | <stdin>:41:57: note: possible intended match here
# | Printing analysis 'Demanded Bits Analysis' for function 'test_fshr_range_1':
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Analysis\DemandedBits\fshr.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 28: DemandedBits: 0xff for %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 8)
# | 29: DemandedBits: 0x0 for %a in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 8)
# | 30: DemandedBits: 0xff00 for %b in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 8)
# | 31: DemandedBits: 0x1f for 8 in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 8)
# | 32: DemandedBits: 0xffffffffffffffff for @llvm.fshr.i32 in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 8)
# | 33: Printing analysis 'Demanded Bits Analysis' for function 'test_fshr':
# | label:84'0 X~ error: no match found
# | 34: DemandedBits: 0xff for %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 %c)
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 35: DemandedBits: 0xffffffff for %a in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 %c)
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 36: DemandedBits: 0xffffffff for %b in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 %c)
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 37: DemandedBits: 0x1f for %c in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 %c)
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 38: DemandedBits: 0xffffffffffffffff for @llvm.fshr.i32 in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 %c)
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 39: DemandedBits: 0xff for %tr = trunc i32 %fshr to i8
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 40: DemandedBits: 0xff for %fshr in %tr = trunc i32 %fshr to i8
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 41: Printing analysis 'Demanded Bits Analysis' for function 'test_fshr_range_1':
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | label:84'1 ? possible intended match
# | 42: DemandedBits: 0xff for %shl.t = trunc i32 %fshr to i8
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 43: DemandedBits: 0xff for %fshr in %shl.t = trunc i32 %fshr to i8
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 44: DemandedBits: 0xff for %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 %b2)
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 45: DemandedBits: 0xffffffff for %a in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 %b2)
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 46: DemandedBits: 0x7ff for %b in %fshr = call i32 @llvm.fshr.i32(i32 %a, i32 %b, i32 %b2)
# | label:84'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.
https://github.com/llvm/llvm-project/pull/180569
More information about the llvm-commits
mailing list