/* Copyright 2012-2023 Free Software Foundation, Inc. This file is part of GDB. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* gcc -S -o gdb.arch/i386-sse-stack-align.{S,c} -Wall -m32 -msse */ .file "i386-sse-stack-align.c" .text .type foo, @function foo: .LFB0: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $40, %esp movaps %xmm0, -24(%ebp) movaps %xmm1, -40(%ebp) movaps -24(%ebp), %xmm0 movaps -40(%ebp), %xmm1 mulps %xmm1, %xmm0 addps -24(%ebp), %xmm0 leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE0: .size foo, .-foo .type f, @function f: .LFB1: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $40, %esp movaps .LC0, %xmm0 movaps %xmm0, -24(%ebp) movaps -24(%ebp), %xmm1 movaps -24(%ebp), %xmm0 call foo movaps %xmm0, -40(%ebp) leal -40(%ebp), %eax movss (%eax), %xmm0 cvttss2si %xmm0, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE1: .size f, .-f .type test_g0, @function test_g0: .LFB2: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $8, %esp call f leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE2: .size test_g0, .-test_g0 .type test_g1, @function test_g1: .LFB3: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $8, %esp call f leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE3: .size test_g1, .-test_g1 .type test_g2, @function test_g2: .LFB4: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $8, %esp call f leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE4: .size test_g2, .-test_g2 .type test_g3, @function test_g3: .LFB5: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $8, %esp call f leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE5: .size test_g3, .-test_g3 .type test_g4, @function test_g4: .LFB6: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 subl $8, %esp call f leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE6: .size test_g4, .-test_g4 .globl main .type main, @function main: .LFB7: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 pushl %ebx andl $-16, %esp subl $16, %esp .cfi_offset 3, -12 call test_g0 movl %eax, %ebx movl $1, (%esp) call test_g1 addl %eax, %ebx movl $2, 4(%esp) movl $1, (%esp) call test_g2 addl %eax, %ebx movl $3, 8(%esp) movl $2, 4(%esp) movl $1, (%esp) call test_g3 addl %eax, %ebx movl $4, 12(%esp) movl $3, 8(%esp) movl $2, 4(%esp) movl $1, (%esp) call test_g4 addl %ebx, %eax movl -4(%ebp), %ebx leave .cfi_restore 5 .cfi_def_cfa 4, 4 .cfi_restore 3 ret .cfi_endproc .LFE7: .size main, .-main .section .rodata .align 16 .LC0: .long 1065353216 .long 1073741824 .long 1077936128 .long 1082130432 .ident "GCC: (GNU) 4.6.4 20120612 (prerelease)" .section .note.GNU-stack,"",@progbits