diff options
author | Luke Lau <luke@igalia.com> | 2025-05-28 09:45:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-28 09:45:54 +0100 |
commit | 2b9ded64b0221f4159ab603518c5f88edb8bf958 (patch) | |
tree | d8a26d348e66de083f7237c2e57c00d3e8a2fff8 /clang/lib/Lex/ModuleMapFile.cpp | |
parent | 783b39934623e734565c9d919b74d12c2f244f7d (diff) | |
download | llvm-2b9ded64b0221f4159ab603518c5f88edb8bf958.zip llvm-2b9ded64b0221f4159ab603518c5f88edb8bf958.tar.gz llvm-2b9ded64b0221f4159ab603518c5f88edb8bf958.tar.bz2 |
[VectorCombine] Support nary operands and intrinsics in scalarizeOpOrCmp (#138406)
This adds support for unary operands, and unary + ternary intrinsics in
scalarizeOpOrCmp (FKA scalarizeBinOpOrCmp).
The motivation behind this is to scalarize more intrinsics in
VectorCombine rather than in DAGCombine, so we can sink splats across
basic blocks: see https://github.com/llvm/llvm-project/pull/137786
The main change required is to generalize the existing VecC0/VecC1 rules
across n-ary ops:
- An operand can either be a constant vector or an insert of a scalar
into a constant vector
- If it's an insert, the index needs to be static and in bounds
- If it's an insert, all indices need to be the same across all operands
- If all the operands are constant vectors, bail as it will get constant
folded anyway
Diffstat (limited to 'clang/lib/Lex/ModuleMapFile.cpp')
0 files changed, 0 insertions, 0 deletions