Add Intel AVX-512 support
[deliverable/binutils-gdb.git] / gas / testsuite / gas / cfi / cfi-i386.s
CommitLineData
2ebaa23b
AM
1 .text
2
3#; func_locvars
4#; - function with a space on the stack
5#; allocated for local variables
6
2ebaa23b
AM
7func_locvars:
8 .cfi_startproc
9
10 #; alocate space for local vars
11 sub $0x1234,%esp
12 .cfi_adjust_cfa_offset 0x1234
13
14 #; dummy body
15 movl $1,%eax
16
17 #; release space of local vars and return
18 add $0x1234,%esp
19 .cfi_adjust_cfa_offset -0x1234
20 ret
21 .cfi_endproc
22
23#; func_prologue
24#; - functions that begins with standard
25#; prologue: "pushq %rbp; movq %rsp,%rbp"
26
2ebaa23b
AM
27func_prologue:
28 .cfi_startproc
29
30 #; prologue, CFI is valid after
31 #; each instruction.
32 pushl %ebp
33 .cfi_def_cfa_offset 8
34 .cfi_offset ebp,-8
35 movl %esp, %ebp
36 .cfi_def_cfa_register ebp
37
38 #; function body
39 call func_locvars
40 addl $3, %eax
41
42 #; epilogue with valid CFI
43 #; (we're better than gcc :-)
44 leave
45 .cfi_def_cfa_register esp
46 ret
47 .cfi_endproc
48
49#; func_otherreg
50#; - function that moves frame pointer to
a60de03c 51#; another register (ebx) and then allocates
2ebaa23b
AM
52#; a space for local variables
53
2ebaa23b
AM
54func_otherreg:
55 .cfi_startproc
56
57 #; save frame pointer to ebx
58 mov %esp,%ebx
59 .cfi_def_cfa_register ebx
60
61 #; alocate space for local vars
62 #; (no .cfi_{def,adjust}_cfa_offset here,
a60de03c 63 #; because CFA is computed from ebx!)
2ebaa23b
AM
64 sub $100,%esp
65
66 #; function body
67 call func_prologue
68 add $2, %eax
69
a60de03c 70 #; restore frame pointer from ebx
2ebaa23b
AM
71 mov %ebx,%esp
72 .cfi_def_cfa esp,4
73 ret
74 .cfi_endproc
75
76#; main
77#; - typical function
2ebaa23b
AM
78main:
79 .cfi_startproc
80
81 #; only function body that doesn't
82 #; touch the stack at all.
83 call func_otherreg
84
85 #; return
86 ret
87 .cfi_endproc
88
89#; _start
90#; - standard entry point
91
2ebaa23b
AM
92 .globl _start
93_start:
94 .cfi_startproc
95 call main
96 movl %eax,%edi
97 movl $0x1,%eax
98 int $0x80
99 hlt
100 .cfi_endproc
a60de03c
JB
101
102#; func_all_registers
103#; - test for all .cfi register numbers.
104#; This function is never called and the CFI info doesn't make sense.
105
a60de03c
JB
106func_all_registers:
107 .cfi_startproc simple
108
109 .cfi_undefined eip ; nop
110 .cfi_undefined eax ; nop
111 .cfi_undefined ecx ; nop
112 .cfi_undefined edx ; nop
113 .cfi_undefined ebx ; nop
114 .cfi_undefined esp ; nop
115 .cfi_undefined ebp ; nop
116 .cfi_undefined esi ; nop
117 .cfi_undefined edi ; nop
118 .cfi_undefined eflags ; nop
119
120 .cfi_undefined es ; nop
121 .cfi_undefined cs ; nop
122 .cfi_undefined ds ; nop
123 .cfi_undefined ss ; nop
124 .cfi_undefined fs ; nop
125 .cfi_undefined gs ; nop
126 .cfi_undefined tr ; nop
127 .cfi_undefined ldtr ; nop
128
129 .cfi_undefined mxcsr ; nop
130 .cfi_undefined xmm0 ; nop
131 .cfi_undefined xmm1 ; nop
132 .cfi_undefined xmm2 ; nop
133 .cfi_undefined xmm3 ; nop
134 .cfi_undefined xmm4 ; nop
135 .cfi_undefined xmm5 ; nop
136 .cfi_undefined xmm6 ; nop
137 .cfi_undefined xmm7 ; nop
138
139 .cfi_undefined fcw ; nop
140 .cfi_undefined fsw ; nop
141 .cfi_undefined st ; nop
142 .cfi_undefined st(1) ; nop
143 .cfi_undefined st(2) ; nop
144 .cfi_undefined st(3) ; nop
145 .cfi_undefined st(4) ; nop
146 .cfi_undefined st(5) ; nop
147 .cfi_undefined st(6) ; nop
148 .cfi_undefined st(7) ; nop
149
150 .cfi_undefined mm0 ; nop
151 .cfi_undefined mm1 ; nop
152 .cfi_undefined mm2 ; nop
153 .cfi_undefined mm3 ; nop
154 .cfi_undefined mm4 ; nop
155 .cfi_undefined mm5 ; nop
156 .cfi_undefined mm6 ; nop
157 .cfi_undefined mm7 ; nop
158
43234a1e
L
159 .cfi_undefined k0 ; nop
160 .cfi_undefined k1 ; nop
161 .cfi_undefined k2 ; nop
162 .cfi_undefined k3 ; nop
163 .cfi_undefined k4 ; nop
164 .cfi_undefined k5 ; nop
165 .cfi_undefined k6 ; nop
166 .cfi_undefined k7 ; nop
167
a60de03c 168 .cfi_endproc
This page took 0.430717 seconds and 4 git commands to generate.