http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54231

--- Comment #10 from Thiago Macieira <thiago at kde dot org> 2012-08-13 
09:53:32 UTC ---
Another test:

$ cat main_avx.c
#define BZERO bzero_avx
#pragma GCC target ("avx")
#include "main.c"

$ cat main_sse2.c
#define BZERO bzero_sse2
#pragma GCC target ("sse2")
#include "main.c"

$ cat main.c
#include <immintrin.h>

void BZERO(char *ptr, size_t count)
{
    __m128i zero = _mm_set1_epi8(0);
    while (count--) {
        _mm_stream_si128((__m128i*)ptr, zero);
        ptr += 16;
    }
}

$ gcc -flto -O2 -shared -o libtest.so main_avx.c main_sse2.c
$ objdump -Cdr --no-show-raw-insn libtest.so
[...]

0000000000000650 <bzero_sse2>:
 650:   test   %rsi,%rsi
 653:   pxor   %xmm0,%xmm0
 657:   je     66e <bzero_sse2+0x1e>
 659:   nopl   0x0(%rax)
 660:   movntdq %xmm0,(%rdi)
 664:   add    $0x10,%rdi
 668:   sub    $0x1,%rsi
 66c:   jne    660 <bzero_sse2+0x10>
 66e:   repz retq 

0000000000000670 <bzero_avx>:
 670:   test   %rsi,%rsi
 673:   pxor   %xmm0,%xmm0
 677:   je     68e <bzero_avx+0x1e>
 679:   nopl   0x0(%rax)
 680:   movntdq %xmm0,(%rdi)
 684:   add    $0x10,%rdi
 688:   sub    $0x1,%rsi
 68c:   jne    680 <bzero_avx+0x10>
 68e:   repz retq

Reply via email to