The current implementation of ShuffleVectorOp assumes all vectors are
scalable. LLVM IR allows shufflevector operations on scalable vectors,
and the current translation between LLVM Dialect and LLVM IR does the
rigth thing when the shuffle mask is all zeroes. This is required to
do a splat operation on a scalable vector, but it doesn't make sense
for scalable vectors outside of that operation, i.e.: with non-all zero
masks.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
This is a WiP for now. This patch comes with an issues I'd like to discuss (and fix) before it gets approved. The discussion thread is: Llvm.shufflevector operations for scalable vectors
looks good, except the error reported in verify
mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp | ||
---|---|---|
1934 | I don't quite understand the error text (starting with "on"). |
mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp | ||
---|---|---|
1934 | In the end, the output would be something like "llvm.shufflevector` op on scalable vectors...", but you are right, I shouldn't abuse error handling like that. Phrasing still feels a bit awkward to me, but I hope it's clearer this way. |
I don't quite understand the error text (starting with "on").
Can you please rephrase?