llvm-6502/lib/Target/X86/README-MMX.txt
2007-03-22 18:42:45 +00:00

60 lines
1.0 KiB
Plaintext

//===---------------------------------------------------------------------===//
// Random ideas for the X86 backend: MMX-specific stuff.
//===---------------------------------------------------------------------===//
//===---------------------------------------------------------------------===//
We should compile
#include <mmintrin.h>
extern __m64 C;
void baz(__v2si *A, __v2si *B)
{
*A = __builtin_ia32_psllq(*B, C);
_mm_empty();
}
to:
.globl _baz
_baz:
call L3
"L00000000001$pb":
L3:
popl %ecx
subl $12, %esp
movl 20(%esp), %eax
movq (%eax), %mm0
movl L_C$non_lazy_ptr-"L00000000001$pb"(%ecx), %eax
movq (%eax), %mm1
movl 16(%esp), %eax
psllq %mm1, %mm0
movq %mm0, (%eax)
emms
addl $12, %esp
ret
not:
_baz:
subl $12, %esp
call "L1$pb"
"L1$pb":
popl %eax
movl L_C$non_lazy_ptr-"L1$pb"(%eax), %eax
movl (%eax), %ecx
movl %ecx, (%esp)
movl 4(%eax), %eax
movl %eax, 4(%esp)
movl 20(%esp), %eax
movq (%eax), %mm0
movq (%esp), %mm1
psllq %mm1, %mm0
movl 16(%esp), %eax
movq %mm0, (%eax)
emms
addl $12, %esp
ret