[RISCV] Enable interleaved access vectorization
authorLuke Lau <luke@igalia.com>
Thu, 9 Mar 2023 16:18:28 +0000 (16:18 +0000)
committerLuke Lau <luke@igalia.com>
Wed, 15 Mar 2023 21:56:30 +0000 (21:56 +0000)
commitacc03ad10af4f379a644e3956cb9aca54e40696c
treeb7555787373dd875195d556e145c420aad60f565
parent765d8a192180f8f33618087b15c022fe758044af
[RISCV] Enable interleaved access vectorization

The loop vectorizer supports generating interleaved loads and stores via
shuffle patterns for fixed length vectors.
This enables it for RISC-V, since interleaved shuffle patterns can be
lowered to vlseg/vsseg in https://reviews.llvm.org/D145022

Reviewed By: reames

Differential Revision: https://reviews.llvm.org/D145155
llvm/include/llvm/IR/Instructions.h
llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
llvm/test/Transforms/LoopVectorize/RISCV/interleaved-accesses.ll
llvm/test/Transforms/LoopVectorize/RISCV/interleaved-cost.ll [new file with mode: 0644]
llvm/test/Transforms/LoopVectorize/RISCV/zvl32b.ll