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

--- Comment #22 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #21)
> Trying 22 -> 27:
>    22: r118:V4SF=r113:V4SF<const_vector
>       REG_EQUAL r113:V4SF<const_vector
>    27: r121:V4SF=~r118:V4SF&r113:V4SF
>       REG_DEAD r118:V4SF
>       REG_DEAD r113:V4SF
> Failed to match this instruction:
> (set (reg:V4SF 121)
>     (and:V4SF (not:V4SF (lt:V4SF (reg:V4SF 113 [ MEM <const vector(4) float>
> [(const float *)input_12(D) + ivtmp.21_83 * 1] ])
>                 (const_vector:V4SF [
>                         (const_double:SF 0.0 [0x0.0p+0]) repeated x4
>                     ])))
>         (reg:V4SF 113 [ MEM <const vector(4) float> [(const float
> *)input_12(D) + ivtmp.21_83 * 1] ])))
> 
> 
> Since we know the vector is 0, this should be changed to:
> (if_then_else (lt r113 0) 0 r113)
> 
> Which then can be recongized ...

Or the backend could recognize the and not form ...

Reply via email to