This pull request modifies almost 300 lines, so the rest of the codes including backend optimization will be added in wrap-up phase.
I analyze llvm O3 pipelines defined in buildPerModulePipeline and create our adaptive pipelines. These contain inlining process. It is observed that there are some cases where inlining should not occur, i.e. in matmul3 and matmul4. Thus, I add SetIsNoInlinePass which calculates number of colors and decide whether CallInst should be removed by inlining or not. However, there is a problem. After inlining, loop unrolling unrolls loops and increase number of colors of some functions, causing lack of colors. So results of matmul3 and matmul4 looks bad at this point. This would be dealt in wrap-up phase by considering both loop unrolling and pipelines. Moreover, result degradation of rmq1d_naive should be analyzed. Seeming we need an outliner!
This pull request modifies almost 300 lines, so the rest of the codes including backend optimization will be added in wrap-up phase. I analyze llvm O3 pipelines defined in
buildPerModulePipeline
and create our adaptive pipelines. These contain inlining process. It is observed that there are some cases where inlining should not occur, i.e. inmatmul3
andmatmul4
. Thus, I addSetIsNoInlinePass
which calculates number of colors and decide whetherCallInst
should be removed by inlining or not. However, there is a problem. After inlining, loop unrolling unrolls loops and increase number of colors of some functions, causing lack of colors. So results ofmatmul3
andmatmul4
looks bad at this point. This would be dealt in wrap-up phase by considering both loop unrolling and pipelines. Moreover, result degradation ofrmq1d_naive
should be analyzed. Seeming we need an outliner!Benchmark Results