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

--- Comment #2 from Hongtao.liu <crazylht at gmail dot com> ---
(In reply to H.J. Lu from comment #1)
> SLP thinks that it needs 4 stores to store 4 bytes of integer constant.
> But it takes only 1 4-byte store.

I think we can simplify that at combine.

Failed to match this instruction:
(set (mem:V4QI (reg:DI 84) [0 MEM <vector(4) char> [(char *)c_2(D)]+0 S4 A8])
    (const_vector:V4QI [
            (const_int 0 [0])
            (const_int 1 [0x1])
            (const_int 2 [0x2])
            (const_int 3 [0x3])
        ]))

x86 at most supports mov imm64, m64, so v2qi/v4qi/v8qi/v2hi/v4hi/v2hf/v4hf
const_vector stores can be simplified to just mov imm64/imm32/imm16,
m64/m32/m16.

Reply via email to