Quoting Hans-Peter Nilsson <h...@bitrange.com>:
I came to the somewhat the same conclusion for CRIS where all insns set condition codes except move to memory and a "add reg1,reg2" (no immediate operand) and to/from special registers: there'll one clobbering and one CC_REG-setting pattern plus a load of others (peephole2's mostly) to get an exact match. What would help is a kind of iterator that (also) affects the form of the insn, so you could match the clobbering and the cc0-setting insn in the same (iterator-using) pattern.
match_parallel is useful for recognizing insns with varying clobbers. Unfortunately, it is absolutely useless when you want a reasonable expander, so then you end up having a separate expander pattern, even if all you want to do is have structure of the patch_parallel without extra clobbers. Repeat for a dozen similar instructions, and it gets really annoying.