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

--- Comment #2 from Hongtao Liu <liuhongt at gcc dot gnu.org> ---
Also for 
void
foo2 (v128_t* a, v128_t* b)
{
   c = (*a & *b)+ *b;
}

(insn 9 8 10 2 (set (reg:V1TI 108 [ _3 ])
        (and:V1TI (reg:V1TI 99 [ _2 ])
            (mem:V1TI (reg:DI 113) [1 *a_6(D)+0 S16 A128])))
"/app/example.c":49:12 7100 {andv1ti3}
     (expr_list:REG_DEAD (reg:DI 113)
        (nil)))
(insn 10 9 13 2 (parallel [
            (set (reg:TI 109 [ _11 ])
                (plus:TI (subreg:TI (reg:V1TI 108 [ _3 ]) 0)
                    (subreg:TI (reg:V1TI 99 [ _2 ]) 0)))
            (clobber (reg:CC 17 flags))
        ]) "/app/example.c":49:17 256 {*addti3_doubleword}
     (expr_list:REG_DEAD (reg:V1TI 108 [ _3 ])
        (expr_list:REG_DEAD (reg:V1TI 99 [ _2 ])
            (expr_list:REG_UNUSED (reg:CC 17 flags)
                (nil)))))

Since V1TImode can only be accocated as SSE_REGS, reload use stack for
(subreg:TI (reg:V1TI 108 [ _3 ]) 0) since the latter only support GENERAL_REGS.

Reply via email to