llvm.org GIT mirror llvm / a2c38ae
Update. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36407 91177308-0d34-0410-b5e6-96231b3b80d8 Bill Wendling 13 years ago
1 changed file(s) with 37 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
22 //===---------------------------------------------------------------------===//
33
44 //===---------------------------------------------------------------------===//
5
6 This:
7
8 #include
9
10 __v2si qux(int A) {
11 return (__v2si){ 0, A };
12 }
13
14 is compiled into:
15
16 _qux:
17 subl $28, %esp
18 movl 32(%esp), %eax
19 movd %eax, %mm0
20 movq %mm0, (%esp)
21 movl (%esp), %eax
22 movl %eax, 20(%esp)
23 movq %mm0, 8(%esp)
24 movl 12(%esp), %eax
25 movl %eax, 16(%esp)
26 movq 16(%esp), %mm0
27 addl $28, %esp
28 ret
29
30 Yuck!
31
32 GCC gives us:
33
34 _qux:
35 subl $12, %esp
36 movl 16(%esp), %eax
37 movl 20(%esp), %edx
38 movl $0, (%eax)
39 movl %edx, 4(%eax)
40 addl $12, %esp
41 ret $4