On Thu, Jun 26, 2025 at 2:02 PM H.J. Lu <hjl.to...@gmail.com> wrote:
>
> Since float vector constant
>
> (const_vector:V4SF [(const_double:SF -QNaN [-QNaN]) repeated x4])
>
> is an all 1s float vector constant, update the remove_redundant_vector
> pass to replace
>
> (insn 20 18 21 2 (set (reg:V4SF 124)
>         (const_vector:V4SF [
>                 (const_double:SF -QNaN [-QNaN]) repeated x4
>             ])) "x.cc":26:5 2426 {movv4sf_internal}
>      (nil))
>
> with
>
> (insn 49 2 5 2 (set (reg:V16QI 135)
>         (const_vector:V16QI [
>                 (const_int -1 [0xffffffffffffffff]) repeated x16
>             ])) -1
>      (nil))
> ...
> (insn 20 18 21 2 (set (reg:V4SF 124)
>         (subreg:V4SF (reg:V16QI 135) 0)) "x.cc":26:5 2426 {movv4sf_internal}
>      (nil))
>
> gcc/
>
> PR target/120819
> * config/i386/i386-features.cc (ix86_broadcast_inner): Also handle
> all 1s float vector constant.
>
> gcc/testsuite/
>
> PR target/120819
> * g++.target/i386/pr120819.C: New test.
>
> OK for master?

Ok.
>
> Thanks.
>
>
> --
> H.J.



-- 
BR,
Hongtao

Reply via email to