There are a lot of combines in AArch64PostLegalizerCombiner which exist to facilitate instruction matching in the selector. (E.g. matching for G_ZIP and other shuffle vector pseudos)
It still makes sense to select these instructions at -O0.
Matching earlier in a combiner can reduce complexity in the selector significantly. For example, a good portion of our selection code for compares would be a lot easier to represent in a combine.
This patch moves matching combines into a "AArch64PostLegalizerLowering" combiner which runs at all optimization levels.
Not sure why the create functions use a verb instead of the noun, we should keep it consistent.