[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