[all-commits] [llvm/llvm-project] fed150: [RISCV][VP] Lower FP VP ISD nodes to RVV instructions

Fraser Cormack via All-commits all-commits at lists.llvm.org
Thu Jun 17 02:12:34 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: fed1503e855a1e3cf936fa0866f099bf1c8c9416
      https://github.com/llvm/llvm-project/commit/fed1503e855a1e3cf936fa0866f099bf1c8c9416
  Author: Fraser Cormack <fraser at codeplay.com>
  Date:   2021-06-17 (Thu, 17 Jun 2021)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
    A llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfadd-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfdiv-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmul-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfrdiv-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfrsub-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfsub-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/vfadd-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/vfdiv-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/vfmul-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/vfrdiv-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/vfrsub-vp.ll
    A llvm/test/CodeGen/RISCV/rvv/vfsub-vp.ll

  Log Message:
  -----------
  [RISCV][VP] Lower FP VP ISD nodes to RVV instructions

With the exception of `frem`, this patch supports the current set of VP
floating-point binary intrinsics by lowering them to to RVV instructions. It
does so by using the existing `RISCVISD *_VL` custom nodes as an intermediate
layer. Both scalable and fixed-length vectors are supported by using this
method.

The `frem` node is unsupported due to a lack of available instructions. For
fixed-length vectors we could scalarize but that option is not (currently)
available for scalable-vector types. The support is intentionally left out so
it equivalent for both vector types.

The matching of vector/scalar forms is currently lacking, as scalable vector
types do not lower to the custom `VFMV_V_F_VL` node. We could either make
floating-point scalable vector splats lower to this node, or support the
matching of multiple kinds of splat via a `ComplexPattern`, much like we do for
integer types.

Reviewed By: rogfer01

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




More information about the All-commits mailing list