Otherwise I think we extract and use a build_vector. There may be
some more improvements that can be made and there might be some
cases that we should do something different for, but this seemed like a
decent starting point.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Target/RISCV/RISCVISelLowering.cpp | ||
---|---|---|
3841 | Can widenVectorOpsToi8 be reused here? It uses truncates instead of setcc, I'm not sure if that changes the resulting code |
llvm/lib/Target/RISCV/RISCVISelLowering.cpp | ||
---|---|---|
3841 | Using SETCC avoids a vand.vi instruction from the truncate lowering that looked unnecessary to me. That probably applies to VECTOR_REVERSE, VECTOR_INTERLEAVE, and VECTOR_DEINTERLEAVE too. The main issue preventing using widenVectorOpsToi8 is that we can't create a shuffle with getNode. We have to call getVectorShuffle because the Mask isn't part of the operand list. |
Can widenVectorOpsToi8 be reused here? It uses truncates instead of setcc, I'm not sure if that changes the resulting code