[VP,Integer,#2] ExpandVectorPredication pass
authorSimon Moll <simon.moll@emea.nec.com>
Fri, 30 Apr 2021 11:43:48 +0000 (13:43 +0200)
committerSimon Moll <simon.moll@emea.nec.com>
Fri, 30 Apr 2021 13:47:28 +0000 (15:47 +0200)
commit43bc584dc05e24c6d44ece8e07d4bff585adaf6d
tree7fa48799edf45ea95d755f39a8bbd8cf6ba88f52
parent181c492ee72c2234e50a60dda467a587f1e8dc08
[VP,Integer,#2] ExpandVectorPredication pass

This patch implements expansion of llvm.vp.* intrinsics
(https://llvm.org/docs/LangRef.html#vector-predication-intrinsics).

VP expansion is required for targets that do not implement VP code
generation. Since expansion is controllable with TTI, targets can switch
on the VP intrinsics they do support in their backend offering a smooth
transition strategy for VP code generation (VE, RISC-V V, ARM SVE,
AVX512, ..).

Reviewed By: rogfer01

Differential Revision: https://reviews.llvm.org/D78203
21 files changed:
llvm/include/llvm/Analysis/TargetTransformInfo.h
llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
llvm/include/llvm/CodeGen/ExpandVectorPredication.h [new file with mode: 0644]
llvm/include/llvm/CodeGen/MachinePassRegistry.def
llvm/include/llvm/CodeGen/Passes.h
llvm/include/llvm/IR/IntrinsicInst.h
llvm/include/llvm/InitializePasses.h
llvm/include/llvm/LinkAllPasses.h
llvm/lib/Analysis/TargetTransformInfo.cpp
llvm/lib/CodeGen/CMakeLists.txt
llvm/lib/CodeGen/ExpandVectorPredication.cpp [new file with mode: 0644]
llvm/lib/CodeGen/TargetPassConfig.cpp
llvm/lib/IR/IntrinsicInst.cpp
llvm/test/CodeGen/AArch64/O0-pipeline.ll
llvm/test/CodeGen/AArch64/O3-pipeline.ll
llvm/test/CodeGen/ARM/O3-pipeline.ll
llvm/test/CodeGen/Generic/expand-vp.ll [new file with mode: 0644]
llvm/test/CodeGen/X86/O0-pipeline.ll
llvm/test/CodeGen/X86/opt-pipeline.ll
llvm/tools/llc/llc.cpp
llvm/tools/opt/opt.cpp