[llvm] [VectorCombine] Fold permute of intrinsics into intrinsic of permutes: shuffle(intrinsic, poison/undef) -> intrinsic(shuffle) (PR #170052)

via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 3 09:22:39 PST 2025


github-actions[bot] wrote:

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

* 166687 tests passed
* 2906 tests skipped
* 1 test failed

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

### LLVM
<details>
<summary>LLVM.Transforms/VectorCombine/X86/shuffle-of-fma-const.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/VectorCombine/X86/shuffle-of-fma-const.ll -passes=vector-combine -S -mtriple=x86_64-- -mcpu=x86-64    | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/VectorCombine/X86/shuffle-of-fma-const.ll --check-prefixes=CHECK,SSE
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes=vector-combine -S -mtriple=x86_64-- -mcpu=x86-64
# 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/Transforms/VectorCombine/X86/shuffle-of-fma-const.ll --check-prefixes=CHECK,SSE
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/VectorCombine/X86/shuffle-of-fma-const.ll -passes=vector-combine -S -mtriple=x86_64-- -mcpu=x86-64-v3 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/VectorCombine/X86/shuffle-of-fma-const.ll --check-prefixes=CHECK,AVX
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/opt -passes=vector-combine -S -mtriple=x86_64-- -mcpu=x86-64-v3
# 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/Transforms/VectorCombine/X86/shuffle-of-fma-const.ll --check-prefixes=CHECK,AVX
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/VectorCombine/X86/shuffle-of-fma-const.ll:8:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: [[F:%.*]] = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float> [[A0]], <4 x float> splat (float 0x3F8DE8D040000000), <4 x float> splat (float 0xBFB3715EE0000000))
# |               ^
# | <stdin>:6:66: note: scanning from here
# | define <4 x float> @shuffle_fma_const_chain(<4 x float> %a0) #0 {
# |                                                                  ^
# | <stdin>:6:66: note: with "A0" equal to "%a0"
# | define <4 x float> @shuffle_fma_const_chain(<4 x float> %a0) #0 {
# |                                                                  ^
# | <stdin>:8:2: note: possible intended match here
# |  %res = call <4 x float> @llvm.fma.v4f32(<4 x float> %1, <4 x float> splat (float 0x3F8DE8D040000000), <4 x float> splat (float 0xBFB3715EE0000000))
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/Transforms/VectorCombine/X86/shuffle-of-fma-const.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |           1: ; ModuleID = '<stdin>' 
# |           2: source_filename = "<stdin>" 
# |           3: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" 
# |           4: target triple = "x86_64-unknown-unknown" 
# |           5:  
# |           6: define <4 x float> @shuffle_fma_const_chain(<4 x float> %a0) #0 { 
# | next:8'0                                                                      X error: no match found
# | next:8'1                                                                        with "A0" equal to "%a0"
# |           7:  %1 = shufflevector <4 x float> %a0, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0> 
# | next:8'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           8:  %res = call <4 x float> @llvm.fma.v4f32(<4 x float> %1, <4 x float> splat (float 0x3F8DE8D040000000), <4 x float> splat (float 0xBFB3715EE0000000)) 
# | next:8'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:8'2      ?                                                                                                                                                    possible intended match
# |           9:  ret <4 x float> %res 
# | next:8'0     ~~~~~~~~~~~~~~~~~~~~~~
# |          10: } 
# | next:8'0     ~~
# |          11:  
# | next:8'0     ~
# |          12: define <8 x float> @concat_fma_const_chain(<4 x float> %a0, <4 x float> %a1) #0 { 
# | next:8'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          13:  %l = tail call noundef <4 x float> @llvm.fma.v4f32(<4 x float> %a0, <4 x float> splat (float 0x3F8DE8D040000000), <4 x float> splat (float 0xBFB3715EE0000000)) 
# |           .
# |           .
# |           .
# | >>>>>>
# `-----------------------------
# 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/170052


More information about the llvm-commits mailing list