aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetLoweringBase.cpp
diff options
context:
space:
mode:
authorBrandon Wu <brandon.wu@sifive.com>2024-08-31 19:01:29 +0800
committerGitHub <noreply@github.com>2024-08-31 19:01:29 +0800
commitdc03ee3cbba65356de62f2f27fb1934b2731000d (patch)
tree9455a888d9ff8ed5d9b7ea478803c1d9acfe2456 /llvm/lib/CodeGen/TargetLoweringBase.cpp
parent239127d731e633f89b912b0775b638c0e8b4a9eb (diff)
downloadllvm-dc03ee3cbba65356de62f2f27fb1934b2731000d.zip
llvm-dc03ee3cbba65356de62f2f27fb1934b2731000d.tar.gz
llvm-dc03ee3cbba65356de62f2f27fb1934b2731000d.tar.bz2
[llvm][RISCV] Add RISCV vector tuple type to value types(MVT) (#97993)
Summary: This patch handles the types(MVT) in `selectionDAG` for RISCV vector tuples. As described in previous patch handling llvm types, the MVTs also have 32 variants: ``` riscv_nxv1i8x2, riscv_nxv1i8x3, riscv_nxv1i8x4, riscv_nxv1i8x5, riscv_nxv1i8x6, riscv_nxv1i8x7, riscv_nxv1i8x8, riscv_nxv2i8x2, riscv_nxv2i8x3, riscv_nxv2i8x4, riscv_nxv2i8x5, riscv_nxv2i8x6, riscv_nxv2i8x7, riscv_nxv2i8x8, riscv_nxv4i8x2, riscv_nxv4i8x3, riscv_nxv4i8x4, riscv_nxv4i8x5, riscv_nxv4i8x6, riscv_nxv4i8x7, riscv_nxv4i8x8, riscv_nxv8i8x2, riscv_nxv8i8x3, riscv_nxv8i8x4, riscv_nxv8i8x5, riscv_nxv8i8x6, riscv_nxv8i8x7, riscv_nxv8i8x8, riscv_nxv16i8x2, riscv_nxv16i8x3, riscv_nxv16i8x4, riscv_nxv32i8x2. ``` Detail: An intuitive way to model vector tuple type is using nested scalable vector, e.g. `nElts=NF, EltTy=nxv2i32`. However it's not compatible to what we've done to handle scalable vector in TargetLowering, so it would need more effort to change the code to handle this concept. Another approach is encoding the `MinNumElts` info in `sz` of `MVT`, e.g. `nElts=NF, sz=(NF*MinNumElts*8)`, this makes it much easier to handle and changes less code. This patch adopts the latter approach. Stacked on https://github.com/llvm/llvm-project/pull/97992
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringBase.cpp')
0 files changed, 0 insertions, 0 deletions