Frederic Riss <frederic.r...@gmail.com> writes: > 136 is a pseudo. I have movdf and movsf patterns that accepts > constants. I'm not sure what happens. Also, strictly speaking, the > unrecognized pattern above is a SI move and not a floating point move, > isn't it?
Yes, it is. > I managed to get thinks going by constraining MODES_TIEABLE_P and > adding 2 patterns of the form: > > [(set (subreg:SI (match_operand:DF 0 "register_operand" "=r") 0) > (match_operand 1 "immediate_operand" "i"))] > and > [(set (subreg:SI (match_operand:DF 0 "register_operand" "=r") 4) > (match_operand 1 "immediate_operand" "i"))] These kinds of things should not normally require explicit patterns, they should be recognized by your movsi or supporting insns. Could you be failing to accept subregs in your movsi predicate? > This result lead me to think that MODES_TIEABLE_P also controls what > kind of subreg expressions are allowed and thus prevented the initial > pattern from being matched, is that true? Note that splitting DF > values in SI subparts is exactly what I prevented by my > MODES_TIEABLE_P modification. MODES_TIEABLE_P does not affect pattern matching. Ian