Clarify invariants of software pipelining hooks
authorThomas Preud'homme <thomasp@graphcore.ai>
Tue, 29 Mar 2022 09:12:35 +0000 (10:12 +0100)
committerThomas Preud'homme <thomasp@graphcore.ai>
Tue, 29 Mar 2022 10:44:10 +0000 (11:44 +0100)
commitf1d8e46258c6a08ca1a375dc9670dd5581d6cf65
tree1f24d611fbe136e478e1276d53464a2dd740a7f9
parent7bc8ad5109eb955b8da9b279955bae098e1bd669
Clarify invariants of software pipelining hooks

PowerPC backend relies on each pair of prologue/epilogue of a software
pipelined loop to correspond to a single iteration a the loop through
its use of the BDZ instruction to skip inner prologues/epilogues and
loop kernel. However the interface does not make it clear that it is a
valid way to check that the trip count is big enough to execute inner
prologues/epilogues and kernel loop.

The API also does not specify in which order of prologues the
createTripCountGreaterCondition() hook is being called. Knowing that it
starts with the last/innermost prologues can help recording some
information when createTripCountGreaterCondition() is first executed and
reuse it in setPreheader() or adjustTripCount().

This commit documents both aspects.

Reviewed By: jmolloy

Differential Revision: https://reviews.llvm.org/D122642
llvm/include/llvm/CodeGen/TargetInstrInfo.h