https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95632
--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Uroš Bizjak from comment #5) > (In reply to Mel Chen from comment #2) > > Is it possible to pretend that we have a pattern that can match xor (reg:SI > > 80), (reg: SI 72), 0xa001 in combine pass? > > And then, if the constant part is too large to put in to the immediate part, > > it can be split to 2 xor in split pass. > > Please note that the combine pass has its own (rather limited) splitter, it > is documented in the second part of "Defining How to Split Instructions" > paragraph. The example is dealing with the instruction that has too large > immediate part, and looks similar to your problem. Oh, I missed the discussion above. In this case, x86 implements pre-reload splits, please see patterns decorated with ix86_pre_reload_split condition.