[all-commits] [llvm/llvm-project] 0648e4: [NFC] Pre-commit tests for D135434.

Simon Tatham via All-commits all-commits at lists.llvm.org
Tue Oct 11 05:31:46 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0648e42e5281341ea3bdf075ff653a64f8356450
      https://github.com/llvm/llvm-project/commit/0648e42e5281341ea3bdf075ff653a64f8356450
  Author: Simon Tatham <simon.tatham at arm.com>
  Date:   2022-10-11 (Tue, 11 Oct 2022)

  Changed paths:
    A llvm/test/CodeGen/Thumb2/pipeliner-inlineasm.mir
    A llvm/test/CodeGen/Thumb2/pipeliner-preserve-ties.mir

  Log Message:
  -----------
  [NFC] Pre-commit tests for D135434.

pipeliner-preserve-ties.mir demonstrates a current bug in which the
output of the Modulo Software Pipelining pass has left off a tie
between operands in the conditional `t2ADDri` instruction. It should
look like this:

    %19:rgpr = t2ADDri %1, 1, 1 /* CC::ne */, $cpsr, $noreg, implicit %1(tied-def 0)

in which the final input operand is tied to the output, because that's
the input that will become the output value if the conditionalized add
instruction does not execute, and hence, must necessarily be whatever
was in the output register beforehand.

In the input to the pipeliner, those `tied-def` specifications are
present and correct. But when the pipeliner clones MachineInstrs, it
loses them.

pipeliner-inlineasm.mir does not demonstrate any bug: the output is
already correct, because of compensation code in the machine pipeliner
that applies only to INLINEASM instructions. But no test previously
exercised that code, so I add one now before making changes in that
area.




More information about the All-commits mailing list