------- Comment #1 from pinskia at gcc dot gnu dot org  2007-07-31 18:46 -------
(insn 7 6 8 t.c:15 (set (reg:DI 61)
        (mem:DI (reg/v/f:DI 59 [ buf ]) [0 S8 A8])) -1 (nil))


See A8.

So the aligned attribute so not applying where you think it should be.
This is how you get the correct aligned attribute:
typedef char a __attribute__((aligned(16)));

typedef a const* aligned_byte_buffer;

And then after that memcpy is not using the vector registers:
(insn 7 6 8 t.c:17 (set (reg:DI 61)
        (mem:DI (reg/v/f:DI 59 [ buf ]) [0 S8 A128])) -1 (nil))

(insn 8 7 9 t.c:17 (set (mem/c/i:DI (reg:DI 60) [0 m+0 S8 A128])
        (reg:DI 61)) -1 (nil))

(insn 9 8 10 t.c:17 (set (reg:DI 62)
        (mem:DI (plus:DI (reg/v/f:DI 59 [ buf ])
                (const_int 8 [0x8])) [0 S8 A64])) -1 (nil))

(insn 10 9 0 t.c:17 (set (mem/c/i:DI (plus:DI (reg:DI 60)
                (const_int 8 [0x8])) [0 m+8 S8 A64])
        (reg:DI 62)) -1 (nil))


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2007-07-31 18:46:45
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32951

Reply via email to