This diff adds an integration test to multi-root PDL matching. It consists of two subtests:
- A 1-layer perceptron with split forward / backward operations.
- A 2-layer perceptron with fused forward / backward operations.
These tests use a collection of hand-written patterns and TensorFlow operations to be matched. The first test has a DAG / SSA dominant resulting match; the second does not and is therefore stored in a graph region.
This diff also includes two bug fixes:
- Mark the pdl_interp dialect as a dependent in the TestPDLByteCodePass. This is needed, because we create ops from that dialect as a part of the PDL-to-PDLInterp lowering.
- Fix of the starting index in the liveness range for the ForEach operations (bug exposed by the integration test).
If it's simpler for the walk to be pre-order, you can make it so