[all-commits] [llvm/llvm-project] f142c4: [RISCV] Set getMinVectorRegisterBitWidth to 16 if ...

Kito Cheng via All-commits all-commits at lists.llvm.org
Fri Jan 7 19:16:34 PST 2022

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: f142c45f1e494f8dbdcc1bcf14122d128ac8f3fe
  Author: Kito Cheng <kito.cheng at sifive.com>
  Date:   2022-01-08 (Sat, 08 Jan 2022)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
    A llvm/test/Transforms/SLPVectorizer/RISCV/lit.local.cfg
    A llvm/test/Transforms/SLPVectorizer/RISCV/rvv-min-vector-size.ll

  Log Message:
  [RISCV] Set getMinVectorRegisterBitWidth to 16 if enable fixed length vector code gen for RVV

getMinVectorRegisterBitWidth means what vector types is supported in
this target, and actually RISC-V support all fixed length vector types with
vector length less than `getMinRVVVectorSizeInBits`, so set it to 16,
means 2 x i8, that is minimal fixed length vector size in theory.

That also fixed one issue, some testcase migth become non-vectorizable
when `-riscv-v-vector-bits-min` set to larger value, because the vector size is
smaller than `-riscv-v-vector-bits-min`.

For example, following code can vectorize by SLP with
`-riscv-v-vector-bits-min=128` or `-riscv-v-vector-bits-min=256`, but
can't vectorize `-riscv-v-vector-bits-min=512` or larger:

void foo(double *da) {
  da[0] = 0;
  da[1] = 1;
  da[2] = 2;
  da[3] = 3;

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D116534

More information about the All-commits mailing list