On 11.11.19 15:39, Richard Henderson wrote: > On 11/7/19 12:52 PM, Andreas Krebbel wrote: >> +; Such patterns get directly emitted by noce_emit_store_flag. >> +(define_insn_and_split "*cstorecc<mode>_z13" >> + [(set (match_operand:GPR 0 "register_operand" "=&d") >> + (match_operator:GPR 1 "s390_comparison" >> + [(match_operand 2 "cc_reg_operand" "c") >> + (match_operand 3 "const_int_operand" "")]))] > > The clobbered-output seems superfluous, since it can't overlap "c". I thought it would be "more" correct this way, but it might lead to an extra reload being emitted - right?
> I believe the only valid const_int is 0, fwiw, so perhaps matching any > const_int is overkill. We also have CCRAW mode where that value is != 0. > Does it help Z12 to allow the 3-insn sequence using LOC(G)R? Prior to z13 we prefer the variant using a conditional branch. Andreas > >> + "TARGET_Z13" >> + "#" > > + "reload_completed" >> + [(set (match_dup 0) (const_int 0)) >> + (set (match_dup 0) >> + (if_then_else:GPR >> + (match_op_dup 1 [(match_dup 2) (match_dup 3)]) >> + (const_int 1) >> + (match_dup 0)))]) > > > r~ >