[llvm] [IR] Split vector.splice into vector.splice.down and vector.splice.up (PR #170796)

via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 4 19:36:45 PST 2025


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results

* 166774 tests passed
* 2909 tests skipped
* 3 tests failed

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

### LLVM
<details>
<summary>LLVM.Assembler/auto_upgrade_intrinsics.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-as < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Assembler/auto_upgrade_intrinsics.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-dis | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Assembler/auto_upgrade_intrinsics.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-as
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-dis
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Assembler/auto_upgrade_intrinsics.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Assembler/auto_upgrade_intrinsics.ll:221:10: error: CHECK: expected string not found in input
# | ; CHECK: @llvm.vector.splice.up.v4i32(<4 x i32> %a, <4 x i32> %b, i32 3)
# |          ^
# | <stdin>:125:32: note: scanning from here
# | define void @test.vector.splice(<4 x i32> %a, <4 x i32> %b) {
# |                                ^
# | <stdin>:127:22: note: possible intended match here
# |  %2 = call <4 x i32> @llvm.vector.splice.up.v4i32(<4 x i32> %a, <4 x i32> %b, i32 2)
# |                      ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Assembler/auto_upgrade_intrinsics.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |            120: define void @test.prefetch.unnamed(ptr %ptr) { 
# |            121:  call void @llvm.prefetch.p0(ptr %ptr, i32 0, i32 3, i32 1) 
# |            122:  ret void 
# |            123: } 
# |            124:  
# |            125: define void @test.vector.splice(<4 x i32> %a, <4 x i32> %b) { 
# | check:221'0                                    X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |            126:  %1 = call <4 x i32> @llvm.vector.splice.down.v4i32(<4 x i32> %a, <4 x i32> %b, i32 3) 
# | check:221'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            127:  %2 = call <4 x i32> @llvm.vector.splice.up.v4i32(<4 x i32> %a, <4 x i32> %b, i32 2) 
# | check:221'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:221'1                          ?                                                                possible intended match
# |            128:  %3 = call <4 x i32> @llvm.vector.splice.down.v4i32(<4 x i32> %a, <4 x i32> %b, i32 1) 
# | check:221'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            129:  ret void 
# | check:221'0     ~~~~~~~~~~
# |            130: } 
# | check:221'0     ~~
# |            131:  
# | check:221'0     ~
# |            132: ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) 
# | check:221'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>LLVM.Bitcode/upgrade-vector-splice-intrinsic.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Bitcode/upgrade-vector-splice-intrinsic.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Bitcode/upgrade-vector-splice-intrinsic.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -S
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Bitcode/upgrade-vector-splice-intrinsic.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Bitcode/upgrade-vector-splice-intrinsic.ll:6:10: error: CHECK: expected string not found in input
# | ; CHECK: %res = call <8 x half> @llvm.vector.splice.v8f16(<8 x half> %a, <8 x half> %b, i32 2)
# |          ^
# | <stdin>:4:32: note: scanning from here
# | define <8 x half> @splice_fixed(<8 x half> %a, <8 x half> %b) {
# |                                ^
# | <stdin>:5:19: note: possible intended match here
# |  %res = call <8 x half> @llvm.experimental.vector.splice.v8f16(<8 x half> %a, <8 x half> %b, i32 2)
# |                   ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Bitcode/upgrade-vector-splice-intrinsic.ll:14:10: error: CHECK: expected string not found in input
# | ; CHECK: %res = call <vscale x 8 x half> @llvm.vector.splice.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %b, i32 2)
# |          ^
# | <stdin>:9:44: note: scanning from here
# | define <vscale x 8 x half> @splice_scalable(<vscale x 8 x half> %a, <vscale x 8 x half> %b) {
# |                                            ^
# | <stdin>:10:2: note: possible intended match here
# |  %res = call <vscale x 8 x half> @llvm.experimental.vector.splice.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %b, i32 2)
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Bitcode/upgrade-vector-splice-intrinsic.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             1: ; ModuleID = '<stdin>' 
# |             2: source_filename = "<stdin>" 
# |             3:  
# |             4: define <8 x half> @splice_fixed(<8 x half> %a, <8 x half> %b) { 
# | check:6'0                                     X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |             5:  %res = call <8 x half> @llvm.experimental.vector.splice.v8f16(<8 x half> %a, <8 x half> %b, i32 2) 
# | check:6'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:6'1                        ?                                                                                  possible intended match
# |             6:  ret <8 x half> %res 
# | check:6'0      ~~~~~~~~~~~~~~~~~~~~~
# |             7: } 
# | check:6'0      ~~
# |             8:  
# | check:6'0      ~
# |             9: define <vscale x 8 x half> @splice_scalable(<vscale x 8 x half> %a, <vscale x 8 x half> %b) { 
# | check:6'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:14'0                                                X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |            10:  %res = call <vscale x 8 x half> @llvm.experimental.vector.splice.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %b, i32 2) 
# | check:14'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:14'1      ?                                                                                                                                possible intended match
# |            11:  ret <vscale x 8 x half> %res 
# | check:14'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            12: } 
# | check:14'0     ~~
# |            13:  
# | check:14'0     ~
# |            14: ; Unknown intrinsic 
# | check:14'0     ~~~~~~~~~~~~~~~~~~~~
# |            15: declare <8 x half> @llvm.experimental.vector.splice.v8f16(<8 x half>, <8 x half>, i32 immarg) 
# | check:14'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>LLVM.Verifier/invalid-splice.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
not /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes=verify -S < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Verifier/invalid-splice.ll 2>&1 >/dev/null | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Verifier/invalid-splice.ll
# executed command: not /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes=verify -S
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Verifier/invalid-splice.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Verifier/invalid-splice.ll:3:10: error: CHECK: expected string not found in input
# | ; CHECK: The splice index exceeds the range [-VL, VL-1] where VL is the known minimum number of elements in the vector
# |          ^
# | <stdin>:1:1: note: scanning from here
# | The splice index exceeds the range [0, VL] where VL is the known minimum number of elements in the vector. For scalable vectors the minimum number of elements is determined from vscale_range.
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Verifier/invalid-splice.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |          1: The splice index exceeds the range [0, VL] where VL is the known minimum number of elements in the vector. For scalable vectors the minimum number of elements is determined from vscale_range. 
# | check:3     X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |          2:  %1 = call <2 x double> @llvm.vector.splice.up.v2f64(<2 x double> %a, <2 x double> %b, i32 3) 
# | check:3     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          3: The splice index exceeds the range [0, VL] where VL is the known minimum number of elements in the vector. For scalable vectors the minimum number of elements is determined from vscale_range. 
# | check:3     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          4:  %1 = call <vscale x 2 x double> @llvm.vector.splice.up.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %b, i32 3) 
# | check:3     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          5: The splice index exceeds the range [0, VL] where VL is the known minimum number of elements in the vector. For scalable vectors the minimum number of elements is determined from vscale_range. 
# | check:3     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          6:  %1 = call <vscale x 2 x double> @llvm.vector.splice.up.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %b, i32 5) 
# | check:3     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          7: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt: -: error: input module is broken! 
# | check:3     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | >>>>>>
# `-----------------------------
# 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/170796


More information about the llvm-commits mailing list