[llvm] [SLP]Remove emission of vector_insert/vector_extract instrinsics (PR #148007)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 10 10:27:46 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {undef deprecator}-->
:warning: undef deprecator found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git diff -U0 --pickaxe-regex -S '([^a-zA-Z0-9#_-]undef[^a-zA-Z0-9_-]|UndefValue::get)' 'HEAD~1' HEAD llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp llvm/test/Transforms/PhaseOrdering/X86/fmaddsub.ll llvm/test/Transforms/SLPVectorizer/AArch64/InstructionsState-is-invalid-0.ll llvm/test/Transforms/SLPVectorizer/AArch64/alternate-vectorization-split-node.ll llvm/test/Transforms/SLPVectorizer/AArch64/getelementptr.ll llvm/test/Transforms/SLPVectorizer/AArch64/loadorder.ll llvm/test/Transforms/SLPVectorizer/AArch64/multiple_reduction.ll llvm/test/Transforms/SLPVectorizer/AArch64/reduce-fadd.ll llvm/test/Transforms/SLPVectorizer/AArch64/scalarization-overhead.ll llvm/test/Transforms/SLPVectorizer/AArch64/shuffle-vectors-mask-size.ll llvm/test/Transforms/SLPVectorizer/AArch64/vec3-calls.ll llvm/test/Transforms/SLPVectorizer/AArch64/vectorizable-selects-uniform-cmps.ll llvm/test/Transforms/SLPVectorizer/RISCV/combined-loads-stored.ll llvm/test/Transforms/SLPVectorizer/RISCV/complex-loads.ll llvm/test/Transforms/SLPVectorizer/RISCV/gather-insert-point-restore.ll llvm/test/Transforms/SLPVectorizer/RISCV/gather-node-with-no-users.ll llvm/test/Transforms/SLPVectorizer/RISCV/horizontal-list.ll llvm/test/Transforms/SLPVectorizer/RISCV/loads-ordering.ll llvm/test/Transforms/SLPVectorizer/RISCV/reductions.ll llvm/test/Transforms/SLPVectorizer/RISCV/revec-getGatherCost.ll llvm/test/Transforms/SLPVectorizer/RISCV/revec.ll llvm/test/Transforms/SLPVectorizer/RISCV/unordered-loads-operands.ll llvm/test/Transforms/SLPVectorizer/SystemZ/pr34619.ll llvm/test/Transforms/SLPVectorizer/SystemZ/reuse-non-power-of-2-reorder.ll llvm/test/Transforms/SLPVectorizer/SystemZ/revec-fix-128169.ll llvm/test/Transforms/SLPVectorizer/X86/alternate-cast-inseltpoison.ll llvm/test/Transforms/SLPVectorizer/X86/alternate-cast.ll llvm/test/Transforms/SLPVectorizer/X86/alternate-fp-inseltpoison.ll llvm/test/Transforms/SLPVectorizer/X86/alternate-fp.ll llvm/test/Transforms/SLPVectorizer/X86/alternate-int-inseltpoison.ll llvm/test/Transforms/SLPVectorizer/X86/alternate-int.ll llvm/test/Transforms/SLPVectorizer/X86/bool-mask.ll llvm/test/Transforms/SLPVectorizer/X86/buildvector-reused-with-bv-subvector.ll llvm/test/Transforms/SLPVectorizer/X86/buildvector-schedule-for-subvector.ll llvm/test/Transforms/SLPVectorizer/X86/cast-operand-extracted.ll llvm/test/Transforms/SLPVectorizer/X86/entry-no-bundle-but-extra-use-on-vec.ll llvm/test/Transforms/SLPVectorizer/X86/ext-used-scalar-different-bitwidth.ll llvm/test/Transforms/SLPVectorizer/X86/external-reduced-value-vectorized.ll llvm/test/Transforms/SLPVectorizer/X86/extractelemets-extended-by-poison.ll llvm/test/Transforms/SLPVectorizer/X86/full-match-with-poison-scalar.ll llvm/test/Transforms/SLPVectorizer/X86/full-matched-bv-with-subvectors.ll llvm/test/Transforms/SLPVectorizer/X86/gather-node-same-as-vect-but-order.ll llvm/test/Transforms/SLPVectorizer/X86/horizontal-list.ll llvm/test/Transforms/SLPVectorizer/X86/horizontal-minmax.ll llvm/test/Transforms/SLPVectorizer/X86/identity-match-splat-less-defined.ll llvm/test/Transforms/SLPVectorizer/X86/insert-subvector.ll llvm/test/Transforms/SLPVectorizer/X86/inst_size_bug.ll llvm/test/Transforms/SLPVectorizer/X86/landing-pad-for-split-node.ll llvm/test/Transforms/SLPVectorizer/X86/malformed_phis.ll llvm/test/Transforms/SLPVectorizer/X86/matched-nodes-updated.ll llvm/test/Transforms/SLPVectorizer/X86/matched-shuffled-entries.ll llvm/test/Transforms/SLPVectorizer/X86/minbitwidth-transformed-operand.ll llvm/test/Transforms/SLPVectorizer/X86/multi-node-reuse-in-bv.ll llvm/test/Transforms/SLPVectorizer/X86/non-load-reduced-as-part-of-bv.ll llvm/test/Transforms/SLPVectorizer/X86/non-power-2-num-elems-reused.ll llvm/test/Transforms/SLPVectorizer/X86/non-power-of-2-order-detection.ll llvm/test/Transforms/SLPVectorizer/X86/non-power-of-2-subvectors-insert.ll llvm/test/Transforms/SLPVectorizer/X86/non-schedulable-instructions-become-schedulable.ll llvm/test/Transforms/SLPVectorizer/X86/non-schedulable-split-node.ll llvm/test/Transforms/SLPVectorizer/X86/phi-node-reshuffled-part.ll llvm/test/Transforms/SLPVectorizer/X86/phi-nodes-incoming-same-blocks.ll llvm/test/Transforms/SLPVectorizer/X86/reduced-value-vectorized-later.ll llvm/test/Transforms/SLPVectorizer/X86/reduction-logical.ll llvm/test/Transforms/SLPVectorizer/X86/reduction-with-removed-extracts.ll llvm/test/Transforms/SLPVectorizer/X86/remark-partial-loads-vectorize.ll llvm/test/Transforms/SLPVectorizer/X86/reorder-possible-strided-node.ll llvm/test/Transforms/SLPVectorizer/X86/reorder-reused-subvector.ll llvm/test/Transforms/SLPVectorizer/X86/replaced-external-in-reduction.ll llvm/test/Transforms/SLPVectorizer/X86/resched.ll llvm/test/Transforms/SLPVectorizer/X86/resized-bv-values-non-power-of2-node.ll llvm/test/Transforms/SLPVectorizer/X86/revec-SplitVectorize.ll llvm/test/Transforms/SLPVectorizer/X86/revec-getStoreMinimumVF.ll llvm/test/Transforms/SLPVectorizer/X86/revec-load-compress.ll llvm/test/Transforms/SLPVectorizer/X86/revec-reduced-value-vectorized-later.ll llvm/test/Transforms/SLPVectorizer/X86/same-values-sub-node-with-poisons.ll llvm/test/Transforms/SLPVectorizer/X86/split-load8_2-unord.ll llvm/test/Transforms/SLPVectorizer/X86/split-node-full-match.ll llvm/test/Transforms/SLPVectorizer/X86/split-node-no-reorder-copy.ll llvm/test/Transforms/SLPVectorizer/X86/split-node-parent-operands-in-spill.ll llvm/test/Transforms/SLPVectorizer/X86/split-node-reorder-node-with-ops.ll llvm/test/Transforms/SLPVectorizer/X86/split-vector-operand-with-reuses.ll llvm/test/Transforms/SLPVectorizer/X86/subvector-minbitwidth-unsigned-value.ll llvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll llvm/test/Transforms/SLPVectorizer/X86/trunc-node-reused.ll llvm/test/Transforms/SLPVectorizer/X86/vec3-calls.ll llvm/test/Transforms/SLPVectorizer/extract-many-users-buildvector.ll llvm/test/Transforms/SLPVectorizer/gathered-consecutive-loads-different-types.ll llvm/test/Transforms/SLPVectorizer/partial-register-extract.ll llvm/test/Transforms/SLPVectorizer/reduction-whole-regs-loads.ll llvm/test/Transforms/SLPVectorizer/resized-alt-shuffle-after-minbw.ll llvm/test/Transforms/SLPVectorizer/revec-insertelement.ll llvm/test/Transforms/SLPVectorizer/revec-reduction-logical.ll llvm/test/Transforms/SLPVectorizer/revec-shufflevector.ll llvm/test/Transforms/SLPVectorizer/revec.ll
``````````
</details>
The following files introduce new uses of undef:
- llvm/test/Transforms/SLPVectorizer/RISCV/revec.ll
- llvm/test/Transforms/SLPVectorizer/SystemZ/revec-fix-128169.ll
- llvm/test/Transforms/SLPVectorizer/X86/multi-node-reuse-in-bv.ll
- llvm/test/Transforms/SLPVectorizer/X86/non-power-2-num-elems-reused.ll
- llvm/test/Transforms/SLPVectorizer/X86/split-node-full-match.ll
- llvm/test/Transforms/SLPVectorizer/resized-alt-shuffle-after-minbw.ll
- llvm/test/Transforms/SLPVectorizer/revec.ll
[Undef](https://llvm.org/docs/LangRef.html#undefined-values) is now deprecated and should only be used in the rare cases where no replacement is possible. For example, a load of uninitialized memory yields `undef`. You should use `poison` values for placeholders instead.
In tests, avoid using `undef` and having tests that trigger undefined behavior. If you need an operand with some unimportant value, you can add a new argument to the function and use that instead.
For example, this is considered a bad practice:
```llvm
define void @fn() {
...
br i1 undef, ...
}
```
Please use the following instead:
```llvm
define void @fn(i1 %cond) {
...
br i1 %cond, ...
}
```
Please refer to the [Undefined Behavior Manual](https://llvm.org/docs/UndefinedBehavior.html) for more information.
https://github.com/llvm/llvm-project/pull/148007
More information about the llvm-commits
mailing list