Apply all necessary tilings and interchangings to get a macro-kernel
authorRoman Gareev <gareevroman@gmail.com>
Mon, 25 Jul 2016 09:42:53 +0000 (09:42 +0000)
committerRoman Gareev <gareevroman@gmail.com>
Mon, 25 Jul 2016 09:42:53 +0000 (09:42 +0000)
commit3a18a931a8f47879c4b246600a2bd59ca4f61c82
treec145b0d3c80f4f6acb23c00b91a3af4964fbc4b1
parent73f5c785c103edb05a5619c30eff040511816561
Apply all necessary tilings and interchangings to get a macro-kernel

This is the second patch to apply the BLIS matmul optimization pattern
on matmul kernels
(http://www.cs.utexas.edu/users/flame/pubs/TOMS-BLIS-Analytical.pdf).
BLIS implements gemm as three nested loops around a macro-kernel, plus
two packing routines. The macro-kernel is implemented in terms
of two additional loops around a micro-kernel. The micro-kernel
is a loop around a rank-1 (i.e., outer product) update. In this change
we create the BLIS macro-kernel by applying a combination of tiling
and interchanging. In subsequent changes we will implement the packing
transformation.

Reviewed-by: Tobias Grosser <tobias@grosser.es>
Differential Revision: http://reviews.llvm.org/D21491

llvm-svn: 276627
polly/include/polly/ScheduleOptimizer.h
polly/lib/Transform/ScheduleOptimizer.cpp
polly/test/ScheduleOptimizer/pattern-matching-based-opts_3.ll