------- Additional Comments From uros at kss-loka dot si 2005-06-21 12:04 ------- New testcase (everything is initialized this time):
--cut here-- #include <mmintrin.h> __v8qi test () { __v8qi mm0 = {1,2,3,4,5,6,7,8}; __v8qi mm1 = {11,22,33,44,55,66,77,88}; volatile __m64 x; x = _mm_add_pi8 (mm0, mm1); return x; } --cut here-- Pass 0 Register 67 costs: AD_REGS:4000 Q_REGS:4000 NON_Q_REGS:4000 INDEX_REGS:4000 LEGACY_REGS:4000 GENERAL_REGS:4000 MMX_REGS:46000 INT_SSE_REGS:38000 MEM:16000 Register 67 pref GENERAL_REGS or none Pass 1 Register 67 costs: AD_REGS:4000 Q_REGS:4000 NON_Q_REGS:4000 INDEX_REGS:4000 LEGACY_REGS:4000 GENERAL_REGS:4000 MMX_REGS:46000 INT_SSE_REGS:38000 MEM:16000 69 registers. ... (insn:HI 18 45 22 1 (set (reg:V8QI 67) (mem/u/i:V8QI (symbol_ref/u:SI ("*.LC2") [flags 0x2]) [0 S8 A64])) 766 {*movv8qi_internal} (nil) (expr_list:REG_EQUIV (const_vector:V8QI [ (const_int 12 [0xc]) (const_int 24 [0x18]) (const_int 36 [0x24]) (const_int 48 [0x30]) (const_int 60 [0x3c]) (const_int 72 [0x48]) (const_int 84 [0x54]) (const_int 96 [0x60]) ]) (nil))) ... test: pushl %ebp movl %esp, %ebp subl $24, %esp movl $807671820, %eax movl $1616136252, %edx movl %eax, -8(%ebp) movl %edx, -4(%ebp) movl -8(%ebp), %eax movl -4(%ebp), %edx movl %eax, -24(%ebp) movl %edx, -20(%ebp) movq -24(%ebp), %mm1 leave movq %mm1, %mm0 ret -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22076