[all-commits] [llvm/llvm-project] d8e1d2: [RISCV] Preserve fixed-length VL on insert_vector_...
Fraser Cormack via All-commits
all-commits at lists.llvm.org
Thu Mar 4 01:27:48 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: d8e1d2ebf47f8621cc17b5dd2401db95647554fb
https://github.com/llvm/llvm-project/commit/d8e1d2ebf47f8621cc17b5dd2401db95647554fb
Author: Fraser Cormack <fraser at codeplay.com>
Date: 2021-03-04 (Thu, 04 Mar 2021)
Changed paths:
M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
M llvm/lib/Target/RISCV/RISCVISelLowering.h
M llvm/lib/Target/RISCV/RISCVInstrInfoVSDPatterns.td
M llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-insert.ll
Log Message:
-----------
[RISCV] Preserve fixed-length VL on insert_vector_elt in more cases
This patch fixes up one case where the fixed-length-vector VL was
dropped (falling back to VLMAX) when inserting vector elements, as the
code would lower via ISD::INSERT_VECTOR_ELT (at index 0) which loses the
fixed-length vector information.
To this end, a custom node, VMV_S_XF_VL, was introduced to carry the VL
operand through to the final instruction. This node wraps the RVV
vmv.s.x and vmv.s.f instructions, which were being selected by
insert_vector_elt anyway.
There should be no observable difference in scalable-vector codegen.
There is still one outstanding drop from fixed-length VL to VLMAX, when
an i64 element is inserted into a vector on RV32; the splat (which is
custom legalized) has no notion of the original fixed-length vector
type.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D97842
More information about the All-commits
mailing list