summaryrefslogtreecommitdiff
path: root/lib/Target
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2007-04-24 21:20:03 +0000
committerBill Wendling <isanbard@gmail.com>2007-04-24 21:20:03 +0000
commita2c38ae90db202c50cfd290983189482497b0851 (patch)
tree0129363258582d600d045989e1794a0e0b721370 /lib/Target
parentb53e98eb30e58c1c6129c81bd12f303e5a680ed2 (diff)
downloadllvm-a2c38ae90db202c50cfd290983189482497b0851.tar.gz
llvm-a2c38ae90db202c50cfd290983189482497b0851.tar.bz2
llvm-a2c38ae90db202c50cfd290983189482497b0851.tar.xz
Update.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36407 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r--lib/Target/X86/README-MMX.txt37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/Target/X86/README-MMX.txt b/lib/Target/X86/README-MMX.txt
index 1a6f129c56..f3a625e65d 100644
--- a/lib/Target/X86/README-MMX.txt
+++ b/lib/Target/X86/README-MMX.txt
@@ -3,3 +3,40 @@
//===---------------------------------------------------------------------===//
//===---------------------------------------------------------------------===//
+
+This:
+
+#include <mmintrin.h>
+
+__v2si qux(int A) {
+ return (__v2si){ 0, A };
+}
+
+is compiled into:
+
+_qux:
+ subl $28, %esp
+ movl 32(%esp), %eax
+ movd %eax, %mm0
+ movq %mm0, (%esp)
+ movl (%esp), %eax
+ movl %eax, 20(%esp)
+ movq %mm0, 8(%esp)
+ movl 12(%esp), %eax
+ movl %eax, 16(%esp)
+ movq 16(%esp), %mm0
+ addl $28, %esp
+ ret
+
+Yuck!
+
+GCC gives us:
+
+_qux:
+ subl $12, %esp
+ movl 16(%esp), %eax
+ movl 20(%esp), %edx
+ movl $0, (%eax)
+ movl %edx, 4(%eax)
+ addl $12, %esp
+ ret $4