This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/32280] New: _mm_srli_si128, heinous code for some shifts
- From: "tbptbp at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 11 Jun 2007 03:00:00 -0000
- Subject: [Bug rtl-optimization/32280] New: _mm_srli_si128, heinous code for some shifts
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
I lack words to describe what happens on x86-64 to
<------------------------------------------------------>
#include <emmintrin.h>
__m128i foo(__m128i a) { return _mm_srli_si128(a, 8); }
int main() { return 0; }
<------------------------------------------------------>
# /usr/local/gcc-4.2-20060916/bin/gcc -O1 pr-psrldq.c -o pr-psrldq
000000000040042e <foo>:
40042e: 66 0f 7f 44 24 d8 movdqa %xmm0,0xffffffffffffffd8(%rsp)
400434: 48 8b 54 24 e0 mov 0xffffffffffffffe0(%rsp),%rdx
400439: 48 89 d0 mov %rdx,%rax
40043c: 31 d2 xor %edx,%edx
40043e: 48 89 44 24 e8 mov %rax,0xffffffffffffffe8(%rsp)
400443: 48 89 54 24 f0 mov %rdx,0xfffffffffffffff0(%rsp)
400448: 66 0f 6f 44 24 e8 movdqa 0xffffffffffffffe8(%rsp),%xmm0
40044e: c3 retq
gcc-4.3-20070105 is still that creative.
As far as i know, it's specific to x86-64 but i'm not sure if other shifting
ops or specific values also are pathologic.
--
Summary: _mm_srli_si128, heinous code for some shifts
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbptbp at gmail dot com
GCC host triplet: x86-64, linux, gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32280