[all-commits] [llvm/llvm-project] b62e6f: [SelectionDAG] Handle promotion + widening in getC...

sdesmalen-arm via All-commits all-commits at lists.llvm.org
Fri Oct 1 00:20:16 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b62e6f19d71359f2c901c834764191355ad06420
      https://github.com/llvm/llvm-project/commit/b62e6f19d71359f2c901c834764191355ad06420
  Author: Sander de Smalen <sander.desmalen at arm.com>
  Date:   2021-10-01 (Fri, 01 Oct 2021)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
    M llvm/test/CodeGen/AArch64/sve-extract-scalable-vector.ll

  Log Message:
  -----------
  [SelectionDAG] Handle promotion + widening in getCopyToPartsVector

Some vectors require both widening and promotion for their legalization.
This case is not yet handled in getCopyToPartsVector and falls back
on scalarizing by default. BBecause scalable vectors can't easily be
scalarised, we need to implement this in two separate stages:
1. Widen the vector.
2. Promote the vector.

As part of this patch, PromoteIntRes_CONCAT_VECTORS also needed to be
made scalable aware. Instead of falling back on scalarizing the vector
(fixed-width only), each sub-part of the CONCAT vector is promoted,
and the operation is performed on the type with the widest element type,
finally truncating the result to the promoted result type.

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




More information about the All-commits mailing list