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
[email protected]