Hi Johannes,
It is not an IR (encoding) in the sense that there are no new
instructions, intrinsics, or anything else that is materialized.
If the interface provides a set of functions that query information from the underlying “implementation” (via ParallelRegionInfo, ParallelCommunicationInfo) and modify something in the implementation (via ParallelIR/Builder), that sounds like an IR to me. It may be hiding the implementation details, and different compilers may use different implementations, but the 5 parallel analyses and optimizations don’t care about that: they’re operating through the interface.
I’m still confused about the hooks.
Please take a look at the Google Doc. They’re explained clearly there. We’ll be circulating that soon to the list, once we’ve finished up the more detailed parts.