Thank you all for the discussion!
When a module is built, do the pattern matching and the MergeComposite pass currently happen before FuseOps or after? Is it possible to make it configurable, as in some use cases (like mine) the matching and merging takes the results of some previous passes, e.g. SimplifyInference, etc, as the inputs?