[all-commits] [llvm/llvm-project] 9949b1: [GlobalISel][AArch64] Import + select LDR*roW and ...

Jessica Paquette via All-commits all-commits at lists.llvm.org
Thu Jan 9 12:16:19 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 9949b1a1753aa0f229c5b55ea01ec96f48164d9e
      https://github.com/llvm/llvm-project/commit/9949b1a1753aa0f229c5b55ea01ec96f48164d9e
  Author: Jessica Paquette <jpaquette at apple.com>
  Date:   2020-01-09 (Thu, 09 Jan 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64InstrFormats.td
    M llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp
    A llvm/test/CodeGen/AArch64/GlobalISel/load-wro-addressing-modes.mir
    A llvm/test/CodeGen/AArch64/GlobalISel/store-wro-addressing-modes.mir

  Log Message:
  -----------
  [GlobalISel][AArch64] Import + select LDR*roW and STR*roW patterns

This adds support for selecting a large chunk of the load/store *roW patterns.

This is pretty much a straight port of AArch64DAGToDAGISel::SelectAddrModeWRO
into GISel. The code is very similar to the XRO code. The main difference is
that in the *roW patterns, we want to try and fold in an extend, and *possibly*
a shift along with it. A good portion of this patch is refactoring the existing
XRO code.

- Add selectAddrModeWRO

- Factor out the code from selectAddrModeShiftedExtendXReg which is used by both
  selectAddrModeXRO and selectAddrModeWRO into selectExtendedSHL.
  This is similar to the function of the same name in AArch64DAGToDAGISel.

- Add support for extends to the factored out code in selectExtendedSHL.

- Teach getExtendTypeForInst how to handle AND masks that are intended to be
  used in loads/stores (necessary for this addressing mode.)

- Make getExtendTypeForInst not static because moving it made an annoying diff
  and I wanted to have the WRO/XRO functions close to each other while I was
  writing the code.

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




More information about the All-commits mailing list