[all-commits] [llvm/llvm-project] 0fe096: [AArch64][FEAT_CMPBR] Codegen for Armv9.6-a compar...

David Tellenbach via All-commits all-commits at lists.llvm.org
Wed Feb 19 13:58:42 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0fe0968c936b5e3ea83ed75ad8f8bb56e517eebe
      https://github.com/llvm/llvm-project/commit/0fe0968c936b5e3ea83ed75ad8f8bb56e517eebe
  Author: David Tellenbach <dtellenbach at apple.com>
  Date:   2025-02-19 (Wed, 19 Feb 2025)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
    M llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.h
    M llvm/lib/Target/AArch64/AArch64InstrFormats.td
    M llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
    M llvm/lib/Target/AArch64/AArch64InstrInfo.h
    M llvm/lib/Target/AArch64/AArch64InstrInfo.td
    M llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
    A llvm/test/CodeGen/AArch64/cmpbr-branch-relaxation.mir
    A llvm/test/CodeGen/AArch64/cmpbr-early-ifcvt.mir
    A llvm/test/CodeGen/AArch64/cmpbr-reg-imm-at-bounds.ll
    A llvm/test/CodeGen/AArch64/cmpbr-reg-imm.ll
    A llvm/test/CodeGen/AArch64/cmpbr-reg-reg.ll

  Log Message:
  -----------
  [AArch64][FEAT_CMPBR] Codegen for Armv9.6-a compare-and-branch (#116465)

This patch adds codegen for all Arm9.6-a compare-and-branch
instructions, that operate on full w or x registers. The instruction
variants operating on half-words (cbh) and bytes (cbb) are added in a
subsequent patch.

Since CB doesn't use standard 4-bit Arm condition codes but a reduced
set of conditions, encoded in 3 bits, some conditions are expressed by
modifying operands, namely incrementing or decrementing immediate
operands and swapping register operands. To invert a CB instruction it's
therefore not enough to just modify the condition code which doesn't
play particularly well with how the backend is currently organized. We
therefore introduce a number of pseudos which operate on the standard
4-bit condition codes and lower them late during codegen.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list