This PR depends on #727, #731, #750, #746, and their dependencies, as well as D150952. It also depends on #746 but does not include it yet, and CI is expected to fail while it doesn't.
TODO:
[x] Decide when to lower func ops to LLVM (resolved by #750).
Until now, we converted tt.func and friends to func.func and those into llvm.func in one go (by adding patterns for both steps to the same pass). However, this doesn't allow to use -convert-linalg-to-loops, which only works on func.func and which this PR uses for the first time. I guess that this indicates, that we shouldn't lower everything to LLVM, but changing that probably requires redesigning the whole pipeline (or actually designing one rather than just getting a first thing to work).
This PR depends on
#727, #731, #750,#746, and their dependencies,as well as D150952.It also depends on #746 but does not include it yet, and CI is expected to fail while it doesn't.TODO:
func
ops to LLVM (resolved by #750). Until now, we convertedtt.func
and friends tofunc.func
and those intollvm.func
in one go (by adding patterns for both steps to the same pass). However, this doesn't allow to use-convert-linalg-to-loops
, which only works onfunc.func
and which this PR uses for the first time. I guess that this indicates, that we shouldn't lower everything to LLVM, but changing that probably requires redesigning the whole pipeline (or actually designing one rather than just getting a first thing to work).