[all-commits] [llvm/llvm-project] 401f22: [ARM] Add pass for handling undef early-clobber va...

Jack Styles via All-commits all-commits at lists.llvm.org
Thu Jan 11 05:50:36 PST 2024


  Branch: refs/heads/users/stylie777/add_arm_init_undef_pass
  Home:   https://github.com/llvm/llvm-project
  Commit: 401f22810225a288e417d62ac6f09ac4ffdc5d76
      https://github.com/llvm/llvm-project/commit/401f22810225a288e417d62ac6f09ac4ffdc5d76
  Author: Jack Styles <jack.styles at arm.com>
  Date:   2024-01-11 (Thu, 11 Jan 2024)

  Changed paths:
    M llvm/lib/Target/ARM/ARM.h
    M llvm/lib/Target/ARM/ARMAsmPrinter.cpp
    A llvm/lib/Target/ARM/ARMInitUndef.cpp
    M llvm/lib/Target/ARM/ARMInstrInfo.td
    M llvm/lib/Target/ARM/ARMTargetMachine.cpp
    M llvm/lib/Target/ARM/CMakeLists.txt
    M llvm/test/CodeGen/ARM/O3-pipeline.ll
    M llvm/test/CodeGen/Thumb2/mve-intrinsics/vcaddq.ll

  Log Message:
  -----------
  [ARM] Add pass for handling undef early-clobber values

When using Greedy Register Allocation, there are times where
early-clobber values are ignored, and assigned the same register.
This is illeagal behaviour for these intructions. To get around this,
using Pseudo instructions for early-clobber registers gives them a
definition and allows Greedy to assign them to a different register.
This then meets the ARM Architecture Reference Manual and
matches the defined behaviour.

This patch takes a similar approach to the RISC-V pass added as part
of #3b8c0b3 to fix issue 50157.




More information about the All-commits mailing list