------- Comment #2 from ubizjak at gmail dot com 2008-08-13 13:47 ------- (In reply to comment #0)
> Here, the code that initializes xmm1 (also the xmm1 in my pseudo-code above): > > 107e: 48 8b 44 24 38 mov 0x38(%rsp),%rax > 1083: 48 83 c0 08 add $0x8,%rax > 1087: 66 48 0f 6e c8 movq %rax,%xmm1 > 108c: 0f 12 4c 24 38 movlps 0x38(%rsp),%xmm1 This code should implement following statement (from _.optimized dump): <bb 12>: vect_vec_iv_.590 = {rptr, rptr + 8}; ivtmp.642 = 0; ivtmp.644 = 0B; this dump is with -fverbose-asm: movq 56(%rsp), %rax # rptr, tmp114 addq $8, %rax #, tmp114 movd %rax, %xmm1 # tmp114, movlps 56(%rsp), %xmm1 # rptr, movdqa %xmm1, %xmm0 #, vect_vec_iv_.590 xorl %edx, %edx # ivtmp.642 xorl %eax, %eax # ivtmp.644 It looks to me, that movhps should be there instead of movlps. What happens if you manually change this movlps into movhps in generated asm and recompile this changed asm? -- ubizjak at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-08-13 13:47:27 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37101