[all-commits] [llvm/llvm-project] 99ee2d: [TargetInstrInfo] enable foldMemoryOperand for Inl...

Nick Desaulniers via All-commits all-commits at lists.llvm.org
Fri Nov 17 10:03:28 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 99ee2db198d86f685bcb07a1495a7115ffc31d7e
      https://github.com/llvm/llvm-project/commit/99ee2db198d86f685bcb07a1495a7115ffc31d7e
  Author: Nick Desaulniers <nickdesaulniers at users.noreply.github.com>
  Date:   2023-11-17 (Fri, 17 Nov 2023)

  Changed paths:
    M llvm/include/llvm/CodeGen/TargetInstrInfo.h
    M llvm/lib/CodeGen/TargetInstrInfo.cpp

  Log Message:
  -----------
  [TargetInstrInfo] enable foldMemoryOperand for InlineAsm (#70743)


foldMemoryOperand looks at pairs of instructions (generally a load to
virt reg then use of the virtreg, or def of a virtreg then a store) and
attempts to combine them.  This can reduce register pressure.

A prior commit added the ability to mark such a MachineOperand as
foldable. In terms of INLINEASM, this means that "rm" was used (rather
than just "r") to denote that the INLINEASM may use a memory operand
rather than a register operand. This effectively undoes decisions made
by the instruction selection framework.  Callers will be added in the
register allocation frameworks. This has been tested with all of the
above (which will come as follow up patches).

Thanks to @topperc who suggested this at last years LLVM US Dev Meeting
and @qcolombet who confirmed this was the right approach.

Link: https://github.com/llvm/llvm-project/issues/20571




More information about the All-commits mailing list