This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/37101] [4.2/4.3 Regression] wrong code: tree vectorizer omits bogus movq/movlps construct
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 13 Aug 2008 13:47:28 -0000
- Subject: [Bug tree-optimization/37101] [4.2/4.3 Regression] wrong code: tree vectorizer omits bogus movq/movlps construct
- References: <bug-37101-10561@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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