------- 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