[ModuloSchedule] Introduce PeelingModuloScheduleExpander
authorJames Molloy <jmolloy@google.com>
Wed, 4 Sep 2019 12:54:24 +0000 (12:54 +0000)
committerJames Molloy <jmolloy@google.com>
Wed, 4 Sep 2019 12:54:24 +0000 (12:54 +0000)
commitfef9f59055792e98ca619284a1fae4bfc5f959ef
tree3cde3bbfe966101d3c197de3fcca659008eaaafe
parent92e13f2eabebc60644d36283cc40d2433d035b6e
[ModuloSchedule] Introduce PeelingModuloScheduleExpander

This is the beginnings of a reimplementation of ModuloScheduleExpander. It works
by generating a single-block correct pipelined kernel and then peeling out the
prolog and epilogs.

This patch implements kernel generation as well as a validator that will
confirm the number of phis added is the same as the ModuloScheduleExpander.

Prolog and epilog peeling will come in a different patch.

Differential Revision: https://reviews.llvm.org/D67081

llvm-svn: 370893
llvm/include/llvm/CodeGen/ModuloSchedule.h
llvm/lib/CodeGen/MachinePipeliner.cpp
llvm/lib/CodeGen/ModuloSchedule.cpp