aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2022-03-01 10:10:08 -0800
committerCraig Topper <craig.topper@sifive.com>2022-03-01 10:10:13 -0800
commitb9d6e8c44150cf03261f41c445839fa5505fb280 (patch)
treeb6b3caea21ea3638c7bf68be2f9e07d32bb614c9 /llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
parent7bc666784566187c440a213a2cd2bf98658251f5 (diff)
downloadllvm-b9d6e8c44150cf03261f41c445839fa5505fb280.zip
llvm-b9d6e8c44150cf03261f41c445839fa5505fb280.tar.gz
llvm-b9d6e8c44150cf03261f41c445839fa5505fb280.tar.bz2
[RISCV] Lower VECTOR_SPLICE to RVV instructions.
This lowers VECTOR_SPLICE of scalable vectors to a slidedown follow by a slideup. Fixed vectors are encouraged to use shufflevector instruction. The equivalent patch for fixed vectors is D119039. I've used a tail agnostic slidedown and limited the VL to only the elements that will not be overwritten by the slideup. The slideup uses VLMax for its VL. It unfortunately uses tail undisturbed policy but it isn't required as there is no tail. We just need the merge operand to carry the bits for the lower portion of the result. Care was taken to ensure that either the slideup or slidedown will be able to use a .vi instruction when the immediate is small. Which one uses the immediate depends on the sign of the immediate. Reviewed By: frasercrmck, ABataev Differential Revision: https://reviews.llvm.org/D119303
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp')
0 files changed, 0 insertions, 0 deletions