[all-commits] [llvm/llvm-project] 635164: [AArch64][SVE] Improve SVE codegen for fixed lengt...

Bradley Smith via All-commits all-commits at lists.llvm.org
Mon May 10 06:53:00 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 635164b95a8e5d8c0c40804c7ffa3981a82b917a
      https://github.com/llvm/llvm-project/commit/635164b95a8e5d8c0c40804c7ffa3981a82b917a
  Author: Bradley Smith <bradley.smith at arm.com>
  Date:   2021-05-10 (Mon, 10 May 2021)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.h
    A llvm/test/CodeGen/AArch64/sve-fixed-length-bitcast.ll

  Log Message:
  -----------
  [AArch64][SVE] Improve SVE codegen for fixed length BITCAST

Expanding a fixed length operation involves wrapping the operation in an
insert/extract subvector pair, as such, when this is done to bitcast we
end up with an extract_subvector of a bitcast. DAGCombine tries to
convert this into a bitcast of an extract_subvector which restores the
initial fixed length bitcast, causing an infinite loop of legalization.

As part of this patch, we must make sure the above DAGCombine does not
trigger after legalization if the created bitcast would not be legal.

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




More information about the All-commits mailing list