[all-commits] [llvm/llvm-project] b15491: [AArch64][GlobalISel] Select G_SADDO and G_SSUBO

Jessica Paquette via All-commits all-commits at lists.llvm.org
Tue Dec 8 09:18:52 PST 2020


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b15491eb333809e907e51d1b05da2a6a6344a427
      https://github.com/llvm/llvm-project/commit/b15491eb333809e907e51d1b05da2a6a6344a427
  Author: Jessica Paquette <jpaquette at apple.com>
  Date:   2020-12-08 (Tue, 08 Dec 2020)

  Changed paths:
    M llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
    A llvm/lib/Target/AArch64/GISel/select-saddo.mir
    A llvm/lib/Target/AArch64/GISel/select-ssubo.mir

  Log Message:
  -----------
  [AArch64][GlobalISel] Select G_SADDO and G_SSUBO

We didn't have selector support for these.

Selection code is similar to `getAArch64XALUOOp` in AArch64ISelLowering. Similar
to that code, this returns the AArch64CC and the instruction produced. In SDAG,
this is used to optimize select + overflow and condition branch + overflow
pairs. (See `AArch64TargetLowering::LowerBR_CC` and
`AArch64TargetLowering::LowerSelect`)

(G_USUBO should be easy to add here, but it isn't legalized right now.)

This also factors out the existing G_UADDO selection code, and removes an
unnecessary check for s32/s64. AFAIK, we shouldn't ever get anything other than
s32/s64. It makes more sense for this to be handled by the type assertion in
`emitAddSub`.

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




More information about the All-commits mailing list