[all-commits] [llvm/llvm-project] 7d926b: [VE] LEGALAVL and staged VVP legalization

Simon Moll via All-commits all-commits at lists.llvm.org
Wed Feb 2 00:14:21 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7d926b71775418d2c0c1e529ab72f811507895fa
      https://github.com/llvm/llvm-project/commit/7d926b71775418d2c0c1e529ab72f811507895fa
  Author: Simon Moll <simon.moll at emea.nec.com>
  Date:   2022-02-02 (Wed, 02 Feb 2022)

  Changed paths:
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
    M llvm/lib/Target/VE/CMakeLists.txt
    M llvm/lib/Target/VE/VECustomDAG.cpp
    M llvm/lib/Target/VE/VECustomDAG.h
    M llvm/lib/Target/VE/VEISelDAGToDAG.cpp
    M llvm/lib/Target/VE/VEISelLowering.cpp
    M llvm/lib/Target/VE/VEISelLowering.h
    A llvm/lib/Target/VE/VVPISelLowering.cpp

  Log Message:
  -----------
  [VE] LEGALAVL and staged VVP legalization

The new LEGALAVL node annotates that the AVL refers to packs of 64bit.
We use a two-stage lowering approach with LEGALAVL:

First, standard SDNodes are translated into illegal VVP layer nodes.
Regardless of source (VP or standard), all VVP nodes have a mask and AVL
parameter. The AVL parameter refers to the element position (just as in
VP intrinsics).

Second, we legalize the AVL usage in VVP layer nodes. If the element
size is < 64bit, the EVL parameter has to be adjusted to refer to packs
of 64bits.  We wrap the legalized AVL in a LEGALAVL node to track this.

Reviewed By: kaz7

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




More information about the All-commits mailing list