https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102154

--- Comment #9 from Hongtao.liu <crazylht at gmail dot com> ---

> 
> (define_insn "movsf_hardfloat"
>   [(set (match_operand:SF 0 "nonimmediate_operand"
>        "=!r,       f,         v,          wa,        m,         wY,
>         Z,         m,         wa,         !r,        f,         wa,
>         !r,        *c*l,      !r,         *h")
>       (match_operand:SF 1 "input_operand"
>        "m,         m,         wY,         Z,         f,         v,
>         wa,        r,         j,          j,         f,         wa,
>         r,         r,         *h,         0"))]
>   "(register_operand (operands[0], SFmode)
>    || register_operand (operands[1], SFmode))
>    && TARGET_HARD_FLOAT
>    && (TARGET_ALLOW_SF_SUBREG
>        || valid_sf_si_move (operands[0], operands[1], SFmode))"
> 
> Oh, The pattern disllow sf subreg.

Here TARGET_ALLOW_SF_SUBREG || valid_sf_si_move (operands[0], operands[1],
SFmode) is false, others are true which means input_operand accept (subreg:SF
(reg:DI 4))

Reply via email to