i386-sse-stack-align.S revision 1.10 1 1.10 christos /* Copyright 2012-2023 Free Software Foundation, Inc.
2 1.1 christos
3 1.1 christos This file is part of GDB.
4 1.1 christos
5 1.1 christos This program is free software; you can redistribute it and/or modify
6 1.1 christos it under the terms of the GNU General Public License as published by
7 1.1 christos the Free Software Foundation; either version 3 of the License, or
8 1.1 christos (at your option) any later version.
9 1.1 christos
10 1.1 christos This program is distributed in the hope that it will be useful,
11 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of
12 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 1.1 christos GNU General Public License for more details.
14 1.1 christos
15 1.1 christos You should have received a copy of the GNU General Public License
16 1.1 christos along with this program. If not, see <http://www.gnu.org/licenses/>. */
17 1.1 christos
18 1.1 christos /*
19 1.1 christos gcc -S -o gdb.arch/i386-sse-stack-align.{S,c} -Wall -m32 -msse
20 1.1 christos */
21 1.1 christos
22 1.1 christos .file "i386-sse-stack-align.c"
23 1.1 christos .text
24 1.1 christos .type foo, @function
25 1.1 christos foo:
26 1.1 christos .LFB0:
27 1.1 christos .cfi_startproc
28 1.1 christos pushl %ebp
29 1.1 christos .cfi_def_cfa_offset 8
30 1.1 christos .cfi_offset 5, -8
31 1.1 christos movl %esp, %ebp
32 1.1 christos .cfi_def_cfa_register 5
33 1.1 christos subl $40, %esp
34 1.1 christos movaps %xmm0, -24(%ebp)
35 1.1 christos movaps %xmm1, -40(%ebp)
36 1.1 christos movaps -24(%ebp), %xmm0
37 1.1 christos movaps -40(%ebp), %xmm1
38 1.1 christos mulps %xmm1, %xmm0
39 1.1 christos addps -24(%ebp), %xmm0
40 1.1 christos leave
41 1.1 christos .cfi_restore 5
42 1.1 christos .cfi_def_cfa 4, 4
43 1.1 christos ret
44 1.1 christos .cfi_endproc
45 1.1 christos .LFE0:
46 1.1 christos .size foo, .-foo
47 1.1 christos .type f, @function
48 1.1 christos f:
49 1.1 christos .LFB1:
50 1.1 christos .cfi_startproc
51 1.1 christos pushl %ebp
52 1.1 christos .cfi_def_cfa_offset 8
53 1.1 christos .cfi_offset 5, -8
54 1.1 christos movl %esp, %ebp
55 1.1 christos .cfi_def_cfa_register 5
56 1.1 christos subl $40, %esp
57 1.1 christos movaps .LC0, %xmm0
58 1.1 christos movaps %xmm0, -24(%ebp)
59 1.1 christos movaps -24(%ebp), %xmm1
60 1.1 christos movaps -24(%ebp), %xmm0
61 1.1 christos call foo
62 1.1 christos movaps %xmm0, -40(%ebp)
63 1.1 christos leal -40(%ebp), %eax
64 1.1 christos movss (%eax), %xmm0
65 1.1 christos cvttss2si %xmm0, %eax
66 1.1 christos leave
67 1.1 christos .cfi_restore 5
68 1.1 christos .cfi_def_cfa 4, 4
69 1.1 christos ret
70 1.1 christos .cfi_endproc
71 1.1 christos .LFE1:
72 1.1 christos .size f, .-f
73 1.10 christos .type test_g0, @function
74 1.10 christos test_g0:
75 1.1 christos .LFB2:
76 1.1 christos .cfi_startproc
77 1.1 christos pushl %ebp
78 1.1 christos .cfi_def_cfa_offset 8
79 1.1 christos .cfi_offset 5, -8
80 1.1 christos movl %esp, %ebp
81 1.1 christos .cfi_def_cfa_register 5
82 1.1 christos subl $8, %esp
83 1.1 christos call f
84 1.1 christos leave
85 1.1 christos .cfi_restore 5
86 1.1 christos .cfi_def_cfa 4, 4
87 1.1 christos ret
88 1.1 christos .cfi_endproc
89 1.1 christos .LFE2:
90 1.10 christos .size test_g0, .-test_g0
91 1.10 christos .type test_g1, @function
92 1.10 christos test_g1:
93 1.1 christos .LFB3:
94 1.1 christos .cfi_startproc
95 1.1 christos pushl %ebp
96 1.1 christos .cfi_def_cfa_offset 8
97 1.1 christos .cfi_offset 5, -8
98 1.1 christos movl %esp, %ebp
99 1.1 christos .cfi_def_cfa_register 5
100 1.1 christos subl $8, %esp
101 1.1 christos call f
102 1.1 christos leave
103 1.1 christos .cfi_restore 5
104 1.1 christos .cfi_def_cfa 4, 4
105 1.1 christos ret
106 1.1 christos .cfi_endproc
107 1.1 christos .LFE3:
108 1.10 christos .size test_g1, .-test_g1
109 1.10 christos .type test_g2, @function
110 1.10 christos test_g2:
111 1.1 christos .LFB4:
112 1.1 christos .cfi_startproc
113 1.1 christos pushl %ebp
114 1.1 christos .cfi_def_cfa_offset 8
115 1.1 christos .cfi_offset 5, -8
116 1.1 christos movl %esp, %ebp
117 1.1 christos .cfi_def_cfa_register 5
118 1.1 christos subl $8, %esp
119 1.1 christos call f
120 1.1 christos leave
121 1.1 christos .cfi_restore 5
122 1.1 christos .cfi_def_cfa 4, 4
123 1.1 christos ret
124 1.1 christos .cfi_endproc
125 1.1 christos .LFE4:
126 1.10 christos .size test_g2, .-test_g2
127 1.10 christos .type test_g3, @function
128 1.10 christos test_g3:
129 1.1 christos .LFB5:
130 1.1 christos .cfi_startproc
131 1.1 christos pushl %ebp
132 1.1 christos .cfi_def_cfa_offset 8
133 1.1 christos .cfi_offset 5, -8
134 1.1 christos movl %esp, %ebp
135 1.1 christos .cfi_def_cfa_register 5
136 1.1 christos subl $8, %esp
137 1.1 christos call f
138 1.1 christos leave
139 1.1 christos .cfi_restore 5
140 1.1 christos .cfi_def_cfa 4, 4
141 1.1 christos ret
142 1.1 christos .cfi_endproc
143 1.1 christos .LFE5:
144 1.10 christos .size test_g3, .-test_g3
145 1.10 christos .type test_g4, @function
146 1.10 christos test_g4:
147 1.1 christos .LFB6:
148 1.1 christos .cfi_startproc
149 1.1 christos pushl %ebp
150 1.1 christos .cfi_def_cfa_offset 8
151 1.1 christos .cfi_offset 5, -8
152 1.1 christos movl %esp, %ebp
153 1.1 christos .cfi_def_cfa_register 5
154 1.1 christos subl $8, %esp
155 1.1 christos call f
156 1.1 christos leave
157 1.1 christos .cfi_restore 5
158 1.1 christos .cfi_def_cfa 4, 4
159 1.1 christos ret
160 1.1 christos .cfi_endproc
161 1.1 christos .LFE6:
162 1.10 christos .size test_g4, .-test_g4
163 1.1 christos .globl main
164 1.1 christos .type main, @function
165 1.1 christos main:
166 1.1 christos .LFB7:
167 1.1 christos .cfi_startproc
168 1.1 christos pushl %ebp
169 1.1 christos .cfi_def_cfa_offset 8
170 1.1 christos .cfi_offset 5, -8
171 1.1 christos movl %esp, %ebp
172 1.1 christos .cfi_def_cfa_register 5
173 1.1 christos pushl %ebx
174 1.1 christos andl $-16, %esp
175 1.1 christos subl $16, %esp
176 1.1 christos .cfi_offset 3, -12
177 1.10 christos call test_g0
178 1.1 christos movl %eax, %ebx
179 1.1 christos movl $1, (%esp)
180 1.10 christos call test_g1
181 1.1 christos addl %eax, %ebx
182 1.1 christos movl $2, 4(%esp)
183 1.1 christos movl $1, (%esp)
184 1.10 christos call test_g2
185 1.1 christos addl %eax, %ebx
186 1.1 christos movl $3, 8(%esp)
187 1.1 christos movl $2, 4(%esp)
188 1.1 christos movl $1, (%esp)
189 1.10 christos call test_g3
190 1.1 christos addl %eax, %ebx
191 1.1 christos movl $4, 12(%esp)
192 1.1 christos movl $3, 8(%esp)
193 1.1 christos movl $2, 4(%esp)
194 1.1 christos movl $1, (%esp)
195 1.10 christos call test_g4
196 1.1 christos addl %ebx, %eax
197 1.1 christos movl -4(%ebp), %ebx
198 1.1 christos leave
199 1.1 christos .cfi_restore 5
200 1.1 christos .cfi_def_cfa 4, 4
201 1.1 christos .cfi_restore 3
202 1.1 christos ret
203 1.1 christos .cfi_endproc
204 1.1 christos .LFE7:
205 1.1 christos .size main, .-main
206 1.1 christos .section .rodata
207 1.1 christos .align 16
208 1.1 christos .LC0:
209 1.1 christos .long 1065353216
210 1.1 christos .long 1073741824
211 1.1 christos .long 1077936128
212 1.1 christos .long 1082130432
213 1.1 christos .ident "GCC: (GNU) 4.6.4 20120612 (prerelease)"
214 1.1 christos .section .note.GNU-stack,"",@progbits
215