[Verifier] Parallelize verification and dom checking. NFC.
This changes the outer verification loop to not recurse into IsolatedFromAbove operations - instead return them up to a place where a parallel for loop can process them all in parallel. This also changes Dominance checking to happen on IsolatedFromAbove chunks of the region tree, which makes it easy to fold operation and dominance verification into a single simple parallel regime. This speeds up firtool in CIRCT from ~40s to 31s on a large testcase in -verify-each mode (the default). The .fir parser and module passes in particular benefit from this - FModule passes (roughly analogous to function passes) were already running the verifier in parallel as part of the pass manager. This allows the whole-module passes to verify their enclosed functions / FModules in parallel. -verify-each mode is still faster (26.3s on the same testcase), but we do expect the verifier to take *some* time. Differential Revision: https://reviews.llvm.org/D104207
Loading
Please sign in to comment