[all-commits] [llvm/llvm-project] 3e1317: [RISCV] Support extraction of misaligned subvectors

Fraser Cormack via All-commits all-commits at lists.llvm.org
Sat Feb 20 07:51:16 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3e1317fd323bf92c6adaf67598697049b08bb373
      https://github.com/llvm/llvm-project/commit/3e1317fd323bf92c6adaf67598697049b08bb373
  Author: Fraser Cormack <fraser at codeplay.com>
  Date:   2021-02-20 (Sat, 20 Feb 2021)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
    M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
    M llvm/lib/Target/RISCV/RISCVISelLowering.h
    M llvm/test/CodeGen/RISCV/rvv/extract-subvector.ll

  Log Message:
  -----------
  [RISCV] Support extraction of misaligned subvectors

This patch extends the support for RVV EXTRACT_SUBVECTOR to cover those
which don't align to a vector register boundary. It accomplishes this by
extracting the nearest register-sized subvector (a subregister
operation), then sliding the vector down with VSLIDEDOWN and extracting
the subvector from the first position (a COPY operation).

Since this procedure involves the use of VSCALE and multiplication, the
handling of such operations is done during lowering to simplify the
implementation and make use of DAG combining. This necessitated moving
some helper functions from RISCVISelDAGToDAG to RISCVTargetLowering.

Reviewed By: craig.topper

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




More information about the All-commits mailing list