As I understand it (perhaps wrongly), actual splitting only occurs after combine pass (by split1 pass).
Combine has some limited splitting capabilities.  For example it can
try to combine 3 insns, which might not match a pattern, but can match
a splitter which generates 2 insns.  I don't recall the other cases
where combine splits, nor do I offhand recall if the split insns are
ever simplified.  Search for "split" in combine.c

I think Andy is closer in its description to what actually happens. More precisely:

- if you use define_insn_and_split, it can try to combine 3 insns into 1 and later use a splitter to create multiple instruction out of it. But the splits are not simplified.

- after combining 3 instructions into 1 (fully simplified), if it does not match it can try to make 2 instructions out of the complex 1 which did not match. See find_split_point.

Paolo

Reply via email to