Skip to content
  • Bill Wendling's avatar
    Add support for the v1i64 type. This makes better code for this: · 98d2104c
    Bill Wendling authored
    #include <mmintrin.h>
    
    extern __m64 C;
    
    void baz(__v2si *A, __v2si *B)
    {
      *A = C;
      _mm_empty();
    }
    
    We get this:
    
    _baz:
            call "L1$pb"
    "L1$pb":
            popl %eax
            movl L_C$non_lazy_ptr-"L1$pb"(%eax), %eax
            movq (%eax), %mm0
            movl 4(%esp), %eax
            movq %mm0, (%eax)
            emms
            ret
    
    GCC gives us this:
    
    _baz:
            pushl   %ebx
            call    L3
    "L00000000001$pb":
    L3:
            popl    %ebx
            subl    $8, %esp
            movl    L_C$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
            movl    (%eax), %edx
            movl    4(%eax), %ecx
            movl    16(%esp), %eax
            movl    %edx, (%eax)
            movl    %ecx, 4(%eax)
            emms
            addl    $8, %esp
            popl    %ebx
            ret
    
    llvm-svn: 35351
    98d2104c
Loading