[llvm] [AArch64] Combine SVE shift and truncate into deinterleave (PR #213252)

via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 31 06:45:40 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 139270 tests passed
* 3613 tests skipped
* 5 tests failed

## Failed Tests
(click on a test name to see its output)

### LLVM
<details>
<summary>LLVM.Analysis/UniformityAnalysis/AMDGPU/MIR/irreducible/diverged-entry-basic-gmir.mir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\llc.exe -mtriple=amdgpu7.00-- -run-pass=print-machine-uniformity -o - C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\MIR\irreducible\diverged-entry-basic-gmir.mir 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\MIR\irreducible\diverged-entry-basic-gmir.mir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' -mtriple=amdgpu7.00-- -run-pass=print-machine-uniformity -o - 'C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\MIR\irreducible\diverged-entry-basic-gmir.mir'
# 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\UniformityAnalysis\AMDGPU\MIR\irreducible\diverged-entry-basic-gmir.mir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\MIR\irreducible\diverged-entry-basic-gmir.mir:7:15: error: CHECK-NEXT: is not on the line after the previous match
# | # CHECK-NEXT: depth=1: entries(bb.3 bb.1) bb.4 bb.2
# |               ^
# | <stdin>:6:2: note: 'next' match was here
# |  depth=1: entries(bb.3 bb.1) bb.4 bb.2
# |  ^
# | <stdin>:4:28: note: previous match ended here
# | CYCLES WITH DIVERGENT EXIT:
# |                            ^
# | <stdin>:5:1: note: non-matching line after previous match is here
# |  depth=2: entries(bb.4 bb.1) bb.2
# | ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\MIR\irreducible\diverged-entry-basic-gmir.mir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |           1: MachineUniformityInfo for function: @divergent_cycle_1 
# |           2: CYCLES ASSUMED DIVERGENT: 
# |           3:  depth=1: entries(bb.3 bb.1) bb.4 bb.2 
# |           4: CYCLES WITH DIVERGENT EXIT: 
# | next:7'0                               {   search range start (exclusive)
# |           5:  depth=2: entries(bb.4 bb.1) bb.2 
# |           6:  depth=1: entries(bb.3 bb.1) bb.4 bb.2 
# | next:7'1      !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   error: match on wrong line
# |           7:  
# |           8: BLOCK bb.0 
# |           9: DEFINITIONS 
# |          10:  %0: %0:_(s32) = G_CONSTANT i32 0 
# |          11:  %1: %1:_(s32) = G_CONSTANT i32 1 
# |           .
# |           .
# |           .
# |          55: DEFINITIONS 
# |          56:  %13: %13:_(s32) = G_ADD %3:_, %1:_ 
# |          57: TERMINATORS 
# |          58:  S_ENDPGM 0 
# |          59: END BLOCK 
# |          60: MachineUniformityInfo for function: @uniform_cycle_1 
# | next:7'2                                                         }  search range end (exclusive)
# |          61:  
# |          62: BLOCK bb.0 
# |          63: DEFINITIONS 
# |          64:  %0: %0:_(s32) = G_CONSTANT i32 0 
# |          65:  %1: %1:_(s32) = G_CONSTANT i32 1 
# |           .
# |           .
# |           .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>LLVM.Analysis/UniformityAnalysis/AMDGPU/irreducible/diverged-entry-basic.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\opt.exe C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\irreducible\diverged-entry-basic.ll -mtriple amdgcn-- -passes='print<uniformity>' -disable-output 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\irreducible\diverged-entry-basic.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\irreducible\diverged-entry-basic.ll' -mtriple amdgcn-- '-passes=print<uniformity>' -disable-output
# 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\UniformityAnalysis\AMDGPU\irreducible\diverged-entry-basic.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\irreducible\diverged-entry-basic.ll:9:10: error: CHECK: expected string not found in input
# | ; CHECK: depth=2: entries(S P) Q
# |          ^
# | <stdin>:6:27: note: scanning from here
# |  depth=1: entries(R P) S Q
# |                           ^
# | <stdin>:8:1: note: possible intended match here
# | BLOCK entry
# | ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Analysis\UniformityAnalysis\AMDGPU\irreducible\diverged-entry-basic.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            1: UniformityInfo for function 'divergent_cycle_1': 
# |            2: CYCLES ASSUMED DIVERGENT: 
# |            3:  depth=1: entries(R P) S Q 
# |            4: CYCLES WITH DIVERGENT EXIT: 
# |            5:  depth=2: entries(S P) Q 
# |            6:  depth=1: entries(R P) S Q 
# | check:9'0                              {   search range start (exclusive)
# | check:9'1                                  error: no match found in search range
# |            7:  
# |            8: BLOCK entry 
# | check:9'2     ?             possible intended match
# |            9: DEFINITIONS 
# |           10:  %cond.uni = icmp slt i32 %a, 0 
# |           11:  DIVERGENT: %tid = call i32 @llvm.amdgcn.workitem.id.x() 
# |           12:  DIVERGENT: %cond.div = icmp slt i32 %tid, 0 
# |           13: TERMINATORS 
# |            .
# |            .
# |            .
# |           48: DEFINITIONS 
# |           49:  %ee = add i32 %b, 1 
# |           50: TERMINATORS 
# |           51:  ret void 
# |           52: END BLOCK 
# |           53: UniformityInfo for function 'uniform_cycle_1': 
# | check:9'3                                                   }  search range end (exclusive)
# |           54:  
# |           55: BLOCK entry 
# |           56: DEFINITIONS 
# |           57:  %cond.uni = icmp slt i32 %a, 0 
# |           58:  DIVERGENT: %tid = call i32 @llvm.amdgcn.workitem.id.x() 
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>LLVM.CodeGen/AArch64/sve-int-mulh-pred.ll</summary>

```
Exit Code: 2

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\llc.exe -mtriple=aarch64-linux-gnu -mattr=+sve < C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve-int-mulh-pred.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve-int-mulh-pred.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' -mtriple=aarch64-linux-gnu -mattr=+sve
# .---command stderr------------
# | LLVM ERROR: Scalarization of scalable vectors is not supported.
# | PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
# | Stack dump:
# | 0.	Program arguments: c:\\_work\\llvm-project\\llvm-project\\build\\bin\\llc.exe -mtriple=aarch64-linux-gnu -mattr=+sve
# | 1.	Running pass 'Function Pass Manager' on module '<stdin>'.
# | 2.	Running pass 'AArch64 Instruction Selection' on function '@smulh_i64'
# | Exception Code: 0xC000001D
# |  #0 0x00007ff645c421e6 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x2de21e6)
# |  #1 0x00007ff8ee88bb04 (C:\Windows\System32\ucrtbase.dll+0x7bb04)
# |  #2 0x00007ff8ee88cad1 (C:\Windows\System32\ucrtbase.dll+0x7cad1)
# |  #3 0x00007ff6435ccc7a (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x76cc7a)
# |  #4 0x00007ff6435cca55 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x76ca55)
# |  #5 0x00007ff645ecd606 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x306d606)
# |  #6 0x00007ff645ed27c2 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x30727c2)
# |  #7 0x00007ff643582c40 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x722c40)
# |  #8 0x00007ff643582170 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x722170)
# |  #9 0x00007ff6435818a6 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x7218a6)
# | #10 0x00007ff64357d8e8 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x71d8e8)
# | #11 0x00007ff64357ac74 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x71ac74)
# | #12 0x00007ff643972c19 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0xb12c19)
# | #13 0x00007ff64338a430 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x52a430)
# | #14 0x00007ff643392cad (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x532cad)
# | #15 0x00007ff64338b4c0 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x52b4c0)
# | #16 0x00007ff642e6526e (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x526e)
# | #17 0x00007ff6478c81f0 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x4a681f0)
# | #18 0x00007ff8fa154cb0 (C:\Windows\System32\KERNEL32.DLL+0x14cb0)
# | #19 0x00007ff90467edcb (C:\Windows\SYSTEM32\ntdll.dll+0x7edcb)
# `-----------------------------
# error: command failed with exit status: 0xc000001d
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve-int-mulh-pred.ll'
# .---command stderr------------
# | FileCheck error: '<stdin>' is empty.
# | FileCheck command line:  c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve-int-mulh-pred.ll
# `-----------------------------
# error: command failed with exit status: 2

--

```
</details>
<details>
<summary>LLVM.CodeGen/AArch64/sve2-int-mulh.ll</summary>

```
Exit Code: 2

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\llc.exe -mtriple=aarch64-linux-gnu -mattr=+sve2 < C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve2-int-mulh.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve2-int-mulh.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' -mtriple=aarch64-linux-gnu -mattr=+sve2
# .---command stderr------------
# | LLVM ERROR: Scalarization of scalable vectors is not supported.
# | PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
# | Stack dump:
# | 0.	Program arguments: c:\\_work\\llvm-project\\llvm-project\\build\\bin\\llc.exe -mtriple=aarch64-linux-gnu -mattr=+sve2
# | 1.	Running pass 'Function Pass Manager' on module '<stdin>'.
# | 2.	Running pass 'AArch64 Instruction Selection' on function '@smulh_i64'
# | Exception Code: 0xC000001D
# |  #0 0x00007ff645c421e6 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x2de21e6)
# |  #1 0x00007ff8ee88bb04 (C:\Windows\System32\ucrtbase.dll+0x7bb04)
# |  #2 0x00007ff8ee88cad1 (C:\Windows\System32\ucrtbase.dll+0x7cad1)
# |  #3 0x00007ff6435ccc7a (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x76cc7a)
# |  #4 0x00007ff6435cca55 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x76ca55)
# |  #5 0x00007ff645ecd606 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x306d606)
# |  #6 0x00007ff645ed27c2 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x30727c2)
# |  #7 0x00007ff643582c40 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x722c40)
# |  #8 0x00007ff643582170 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x722170)
# |  #9 0x00007ff6435818a6 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x7218a6)
# | #10 0x00007ff64357d8e8 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x71d8e8)
# | #11 0x00007ff64357ac74 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x71ac74)
# | #12 0x00007ff643972c19 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0xb12c19)
# | #13 0x00007ff64338a430 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x52a430)
# | #14 0x00007ff643392cad (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x532cad)
# | #15 0x00007ff64338b4c0 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x52b4c0)
# | #16 0x00007ff642e6526e (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x526e)
# | #17 0x00007ff6478c81f0 (c:\_work\llvm-project\llvm-project\build\bin\llc.exe+0x4a681f0)
# | #18 0x00007ff8fa154cb0 (C:\Windows\System32\KERNEL32.DLL+0x14cb0)
# | #19 0x00007ff90467edcb (C:\Windows\SYSTEM32\ntdll.dll+0x7edcb)
# `-----------------------------
# error: command failed with exit status: 0xc000001d
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve2-int-mulh.ll'
# .---command stderr------------
# | FileCheck error: '<stdin>' is empty.
# | FileCheck command line:  c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve2-int-mulh.ll
# `-----------------------------
# error: command failed with exit status: 2

--

```
</details>
<details>
<summary>LLVM.CodeGen/AArch64/sve2-intrinsics-combine-rshrnb.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\llc.exe -mtriple=aarch64-linux-gnu -mattr=+sve2 < C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve2-intrinsics-combine-rshrnb.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve2-intrinsics-combine-rshrnb.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' -mtriple=aarch64-linux-gnu -mattr=+sve2
# 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\CodeGen\AArch64\sve2-intrinsics-combine-rshrnb.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve2-intrinsics-combine-rshrnb.ll:165:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: rshrnb z1.s, z1.d, #32
# |               ^
# | <stdin>:149:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:152:2: note: possible intended match here
# |  add z1.d, z1.d, z2.d
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AArch64\sve2-intrinsics-combine-rshrnb.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |           144:  .p2align 2 
# |           145:  .type wide_add_shift_add_rshrnb_d, at function 
# |           146:  .variant_pcs wide_add_shift_add_rshrnb_d 
# |           147: wide_add_shift_add_rshrnb_d: // @wide_add_shift_add_rshrnb_d 
# |           148:  .cfi_startproc 
# |           149: // %bb.0: 
# | next:165'0             {   search range start (exclusive)
# | next:165'1                 error: no match found in search range
# |           150:  mov z2.d, #0x80000000 
# |           151:  ptrue p0.s 
# |           152:  add z1.d, z1.d, z2.d 
# | next:165'2      ?                      possible intended match
# |           153:  add z0.d, z0.d, z2.d 
# |           154:  ld1w { z2.s }, p0/z, [x0, x1, lsl #2] 
# |           155:  uzp2 z0.s, z0.s, z1.s 
# |           156:  add z0.s, z2.s, z0.s 
# |           157:  st1w { z0.s }, p0, [x0, x1, lsl #2] 
# |             .
# |             .
# |             .
# |           162:  // -- End function 
# |           163:  .globl neg_wide_add_shift_add_rshrnb_d // -- Begin function neg_wide_add_shift_add_rshrnb_d 
# |           164:  .p2align 2 
# |           165:  .type neg_wide_add_shift_add_rshrnb_d, at function 
# |           166:  .variant_pcs neg_wide_add_shift_add_rshrnb_d 
# |           167: neg_wide_add_shift_add_rshrnb_d: // @neg_wide_add_shift_add_rshrnb_d 
# | next:165'3                                     }                                      search range end (exclusive)
# |           168:  .cfi_startproc 
# |           169: // %bb.0: 
# |           170:  mov z2.d, #0x800000000000 
# |           171:  ptrue p0.s 
# |           172:  add z0.d, z0.d, z2.d 
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# 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/213252


More information about the llvm-commits mailing list