Richard Henderson wrote: > On 11/12/2014 09:41 PM, Ulrich Weigand wrote: > > * optabs.c (prepare_operand): Gracefully fail if the mode of X > > does not match the operand mode expected by the insn pattern. > > This is ok.
I've checked this in now, thanks. > I wondered whether s390 benefit from following i386 in allowing > mov<>cc to accept immediate operands pre-reload. This could then > be re-used by cstorecc4 to allow any CC mode to expand to LOCR > when available. Well, we already compile int test (long x, long y) { return x < y; } to cgr %r2,%r3 # 44 *cmpdi_ccs/1 [length = 4] lhi %r1,0 # 43 *movsi_zarch/1 [length = 4] lhi %r2,1 # 7 *movsi_zarch/1 [length = 4] locrnl %r2,%r1 # 45 *movsicc/2 [length = 4] lgfr %r2,%r2 # 17 *extendsidi2/1 [length = 4] br %r14 # 50 return [length = 2] with -march=z196 or higher. The LOCR is not introduced via cstorecc4, but instead directly by noce_emit_cmove via emit_conditional_move. It doesn't seem to matter that the patterns don't accept immediate operands; those are loaded into registers by maybe_legitimize_operand, which already tries a copy_to_mode_reg. Bye, Ulrich -- Dr. Ulrich Weigand GNU/Linux compilers and toolchain ulrich.weig...@de.ibm.com