diff options
author | Evan Cheng <evan.cheng@apple.com> | 2009-02-22 08:13:45 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2009-02-22 08:13:45 +0000 |
commit | 2448aa1d8d3c1a83e10a017f76f8f4e60b33a566 (patch) | |
tree | 849941a6dddfdb73045c9d52ab38cf2f7dd1f4c5 /llvm/lib/Target | |
parent | e4ffc030e2869bda17a9b9798092e929114863bd (diff) | |
download | bcm5719-llvm-2448aa1d8d3c1a83e10a017f76f8f4e60b33a566.tar.gz bcm5719-llvm-2448aa1d8d3c1a83e10a017f76f8f4e60b33a566.zip |
Add a note.
llvm-svn: 65275
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/X86/README-MMX.txt | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/README-MMX.txt b/llvm/lib/Target/X86/README-MMX.txt index 7ad623e40d5..a6c8616b6d2 100644 --- a/llvm/lib/Target/X86/README-MMX.txt +++ b/llvm/lib/Target/X86/README-MMX.txt @@ -41,3 +41,31 @@ _qux: addl $12, %esp ret $4 +//===---------------------------------------------------------------------===// + +We generate crappy code for this: + +__m64 t() { + return _mm_cvtsi32_si64(1); +} + +_t: + subl $12, %esp + movl $1, %eax + movd %eax, %mm0 + movq %mm0, (%esp) + movl (%esp), %eax + movl 4(%esp), %edx + addl $12, %esp + ret + +The extra stack traffic is covered in the previous entry. But the other reason +is we are not smart about materializing constants in MMX registers. With -m64 + + movl $1, %eax + movd %eax, %mm0 + movd %mm0, %rax + ret + +We should be using a constantpool load instead: + movq LC0(%rip), %rax |