Subversion Repositories Kolibri OS

Rev

Rev 4358 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4358 Rev 4632
1
/*
1
/*
2
 * Mesa 3-D graphics library
2
 * Mesa 3-D graphics library
3
 *
3
 *
4
 * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
4
 * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
5
 *
5
 *
6
 * Permission is hereby granted, free of charge, to any person obtaining a
6
 * Permission is hereby granted, free of charge, to any person obtaining a
7
 * copy of this software and associated documentation files (the "Software"),
7
 * copy of this software and associated documentation files (the "Software"),
8
 * to deal in the Software without restriction, including without limitation
8
 * to deal in the Software without restriction, including without limitation
9
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
 * and/or sell copies of the Software, and to permit persons to whom the
10
 * and/or sell copies of the Software, and to permit persons to whom the
11
 * Software is furnished to do so, subject to the following conditions:
11
 * Software is furnished to do so, subject to the following conditions:
12
 *
12
 *
13
 * The above copyright notice and this permission notice shall be included
13
 * The above copyright notice and this permission notice shall be included
14
 * in all copies or substantial portions of the Software.
14
 * in all copies or substantial portions of the Software.
15
 *
15
 *
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
19
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
 * OTHER DEALINGS IN THE SOFTWARE.
22
 * OTHER DEALINGS IN THE SOFTWARE.
23
 */
23
 */
24
 
24
 
25
/*
25
/*
26
 * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
26
 * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
27
 * with macros like CONST, LLBL that expand to CONCAT(...).  Putting spaces
27
 * with macros like CONST, LLBL that expand to CONCAT(...).  Putting spaces
28
 * in there will break the build on some platforms.
28
 * in there will break the build on some platforms.
29
 */
29
 */
30
 
30
 
31
#include "assyntax.h"
31
#include "assyntax.h"
32
#include "matypes.h"
32
#include "matypes.h"
33
#include "xform_args.h"
33
#include "xform_args.h"
34
 
34
 
35
	SEG_TEXT
35
	SEG_TEXT
36
 
36
 
37
#define FP_ONE		1065353216
37
#define FP_ONE		1065353216
38
#define FP_ZERO		0
38
#define FP_ZERO		0
39
 
39
 
40
#define SRC0		REGOFF(0, ESI)
40
#define SRC0		REGOFF(0, ESI)
41
#define SRC1		REGOFF(4, ESI)
41
#define SRC1		REGOFF(4, ESI)
42
#define SRC2		REGOFF(8, ESI)
42
#define SRC2		REGOFF(8, ESI)
43
#define SRC3		REGOFF(12, ESI)
43
#define SRC3		REGOFF(12, ESI)
44
#define DST0		REGOFF(0, EDI)
44
#define DST0		REGOFF(0, EDI)
45
#define DST1		REGOFF(4, EDI)
45
#define DST1		REGOFF(4, EDI)
46
#define DST2		REGOFF(8, EDI)
46
#define DST2		REGOFF(8, EDI)
47
#define DST3		REGOFF(12, EDI)
47
#define DST3		REGOFF(12, EDI)
48
#define MAT0		REGOFF(0, EDX)
48
#define MAT0		REGOFF(0, EDX)
49
#define MAT1		REGOFF(4, EDX)
49
#define MAT1		REGOFF(4, EDX)
50
#define MAT2		REGOFF(8, EDX)
50
#define MAT2		REGOFF(8, EDX)
51
#define MAT3		REGOFF(12, EDX)
51
#define MAT3		REGOFF(12, EDX)
52
#define MAT4		REGOFF(16, EDX)
52
#define MAT4		REGOFF(16, EDX)
53
#define MAT5		REGOFF(20, EDX)
53
#define MAT5		REGOFF(20, EDX)
54
#define MAT6		REGOFF(24, EDX)
54
#define MAT6		REGOFF(24, EDX)
55
#define MAT7		REGOFF(28, EDX)
55
#define MAT7		REGOFF(28, EDX)
56
#define MAT8		REGOFF(32, EDX)
56
#define MAT8		REGOFF(32, EDX)
57
#define MAT9		REGOFF(36, EDX)
57
#define MAT9		REGOFF(36, EDX)
58
#define MAT10		REGOFF(40, EDX)
58
#define MAT10		REGOFF(40, EDX)
59
#define MAT11		REGOFF(44, EDX)
59
#define MAT11		REGOFF(44, EDX)
60
#define MAT12		REGOFF(48, EDX)
60
#define MAT12		REGOFF(48, EDX)
61
#define MAT13		REGOFF(52, EDX)
61
#define MAT13		REGOFF(52, EDX)
62
#define MAT14		REGOFF(56, EDX)
62
#define MAT14		REGOFF(56, EDX)
63
#define MAT15		REGOFF(60, EDX)
63
#define MAT15		REGOFF(60, EDX)
64
 
64
 
65
 
65
 
66
ALIGNTEXT16
66
ALIGNTEXT16
67
GLOBL GLNAME( __mesa_x86_transform_points2_general )
67
GLOBL GLNAME( _mesa_x86_transform_points2_general )
68
HIDDEN(__mesa_x86_transform_points2_general)
68
HIDDEN(_mesa_x86_transform_points2_general)
69
GLNAME( __mesa_x86_transform_points2_general ):
69
GLNAME( _mesa_x86_transform_points2_general ):
70
 
70
 
71
#define FRAME_OFFSET 8
71
#define FRAME_OFFSET 8
72
	PUSH_L( ESI )
72
	PUSH_L( ESI )
73
	PUSH_L( EDI )
73
	PUSH_L( EDI )
74
 
74
 
75
	MOV_L( ARG_SOURCE, ESI )
75
	MOV_L( ARG_SOURCE, ESI )
76
	MOV_L( ARG_DEST, EDI )
76
	MOV_L( ARG_DEST, EDI )
77
 
77
 
78
	MOV_L( ARG_MATRIX, EDX )
78
	MOV_L( ARG_MATRIX, EDX )
79
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
79
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
80
 
80
 
81
	TEST_L( ECX, ECX )
81
	TEST_L( ECX, ECX )
82
	JZ( LLBL(x86_p2_gr_done) )
82
	JZ( LLBL(x86_p2_gr_done) )
83
 
83
 
84
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
84
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
85
	OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
85
	OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
86
 
86
 
87
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
87
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
88
	MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
88
	MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
89
 
89
 
90
	SHL_L( CONST(4), ECX )
90
	SHL_L( CONST(4), ECX )
91
	MOV_L( REGOFF(V4F_START, ESI), ESI )
91
	MOV_L( REGOFF(V4F_START, ESI), ESI )
92
 
92
 
93
	MOV_L( REGOFF(V4F_START, EDI), EDI )
93
	MOV_L( REGOFF(V4F_START, EDI), EDI )
94
	ADD_L( EDI, ECX )
94
	ADD_L( EDI, ECX )
95
 
95
 
96
ALIGNTEXT16
96
ALIGNTEXT16
97
LLBL(x86_p2_gr_loop):
97
LLBL(x86_p2_gr_loop):
98
 
98
 
99
	FLD_S( SRC0 )			/* F4 */
99
	FLD_S( SRC0 )			/* F4 */
100
	FMUL_S( MAT0 )
100
	FMUL_S( MAT0 )
101
	FLD_S( SRC0 )			/* F5 F4 */
101
	FLD_S( SRC0 )			/* F5 F4 */
102
	FMUL_S( MAT1 )
102
	FMUL_S( MAT1 )
103
	FLD_S( SRC0 )			/* F6 F5 F4 */
103
	FLD_S( SRC0 )			/* F6 F5 F4 */
104
	FMUL_S( MAT2 )
104
	FMUL_S( MAT2 )
105
	FLD_S( SRC0 )			/* F7 F6 F5 F4 */
105
	FLD_S( SRC0 )			/* F7 F6 F5 F4 */
106
	FMUL_S( MAT3 )
106
	FMUL_S( MAT3 )
107
 
107
 
108
	FLD_S( SRC1 )			/* F0 F7 F6 F5 F4 */
108
	FLD_S( SRC1 )			/* F0 F7 F6 F5 F4 */
109
	FMUL_S( MAT4 )
109
	FMUL_S( MAT4 )
110
	FLD_S( SRC1 )			/* F1 F0 F7 F6 F5 F4 */
110
	FLD_S( SRC1 )			/* F1 F0 F7 F6 F5 F4 */
111
	FMUL_S( MAT5 )
111
	FMUL_S( MAT5 )
112
	FLD_S( SRC1 )			/* F2 F1 F0 F7 F6 F5 F4 */
112
	FLD_S( SRC1 )			/* F2 F1 F0 F7 F6 F5 F4 */
113
	FMUL_S( MAT6 )
113
	FMUL_S( MAT6 )
114
	FLD_S( SRC1 )			/* F3 F2 F1 F0 F7 F6 F5 F4 */
114
	FLD_S( SRC1 )			/* F3 F2 F1 F0 F7 F6 F5 F4 */
115
	FMUL_S( MAT7 )
115
	FMUL_S( MAT7 )
116
 
116
 
117
	FXCH( ST(3) )			/* F0 F2 F1 F3 F7 F6 F5 F4 */
117
	FXCH( ST(3) )			/* F0 F2 F1 F3 F7 F6 F5 F4 */
118
	FADDP( ST0, ST(7) )		/* F2 F1 F3 F7 F6 F5 F4 */
118
	FADDP( ST0, ST(7) )		/* F2 F1 F3 F7 F6 F5 F4 */
119
	FXCH( ST(1) )			/* F1 F2 F3 F7 F6 F5 F4 */
119
	FXCH( ST(1) )			/* F1 F2 F3 F7 F6 F5 F4 */
120
	FADDP( ST0, ST(5) )		/* F2 F3 F7 F6 F5 F4 */
120
	FADDP( ST0, ST(5) )		/* F2 F3 F7 F6 F5 F4 */
121
	FADDP( ST0, ST(3) )		/* F3 F7 F6 F5 F4 */
121
	FADDP( ST0, ST(3) )		/* F3 F7 F6 F5 F4 */
122
	FADDP( ST0, ST(1) )		/* F7 F6 F5 F4 */
122
	FADDP( ST0, ST(1) )		/* F7 F6 F5 F4 */
123
 
123
 
124
	FXCH( ST(3) )			/* F4 F6 F5 F7 */
124
	FXCH( ST(3) )			/* F4 F6 F5 F7 */
125
	FADD_S( MAT12 )
125
	FADD_S( MAT12 )
126
	FXCH( ST(2) )			/* F5 F6 F4 F7 */
126
	FXCH( ST(2) )			/* F5 F6 F4 F7 */
127
	FADD_S( MAT13 )
127
	FADD_S( MAT13 )
128
	FXCH( ST(1) )			/* F6 F5 F4 F7 */
128
	FXCH( ST(1) )			/* F6 F5 F4 F7 */
129
	FADD_S( MAT14 )
129
	FADD_S( MAT14 )
130
	FXCH( ST(3) )			/* F7 F5 F4 F6 */
130
	FXCH( ST(3) )			/* F7 F5 F4 F6 */
131
	FADD_S( MAT15 )
131
	FADD_S( MAT15 )
132
 
132
 
133
	FXCH( ST(2) )			/* F4 F5 F7 F6 */
133
	FXCH( ST(2) )			/* F4 F5 F7 F6 */
134
	FSTP_S( DST0 )			/* F5 F7 F6 */
134
	FSTP_S( DST0 )			/* F5 F7 F6 */
135
	FSTP_S( DST1 )			/* F7 F6 */
135
	FSTP_S( DST1 )			/* F7 F6 */
136
	FXCH( ST(1) )			/* F6 F7 */
136
	FXCH( ST(1) )			/* F6 F7 */
137
	FSTP_S( DST2 )			/* F7 */
137
	FSTP_S( DST2 )			/* F7 */
138
	FSTP_S( DST3 )			/* */
138
	FSTP_S( DST3 )			/* */
139
 
139
 
140
LLBL(x86_p2_gr_skip):
140
LLBL(x86_p2_gr_skip):
141
 
141
 
142
	ADD_L( CONST(16), EDI )
142
	ADD_L( CONST(16), EDI )
143
	ADD_L( EAX, ESI )
143
	ADD_L( EAX, ESI )
144
	CMP_L( ECX, EDI )
144
	CMP_L( ECX, EDI )
145
	JNE( LLBL(x86_p2_gr_loop) )
145
	JNE( LLBL(x86_p2_gr_loop) )
146
 
146
 
147
LLBL(x86_p2_gr_done):
147
LLBL(x86_p2_gr_done):
148
 
148
 
149
	POP_L( EDI )
149
	POP_L( EDI )
150
	POP_L( ESI )
150
	POP_L( ESI )
151
	RET
151
	RET
152
#undef FRAME_OFFSET
152
#undef FRAME_OFFSET
153
 
153
 
154
 
154
 
155
 
155
 
156
 
156
 
157
ALIGNTEXT16
157
ALIGNTEXT16
158
GLOBL GLNAME( __mesa_x86_transform_points2_perspective )
158
GLOBL GLNAME( _mesa_x86_transform_points2_perspective )
159
HIDDEN(__mesa_x86_transform_points2_perspective)
159
HIDDEN(_mesa_x86_transform_points2_perspective)
160
GLNAME( __mesa_x86_transform_points2_perspective ):
160
GLNAME( _mesa_x86_transform_points2_perspective ):
161
 
161
 
162
#define FRAME_OFFSET 12
162
#define FRAME_OFFSET 12
163
	PUSH_L( ESI )
163
	PUSH_L( ESI )
164
	PUSH_L( EDI )
164
	PUSH_L( EDI )
165
	PUSH_L( EBX )
165
	PUSH_L( EBX )
166
 
166
 
167
	MOV_L( ARG_SOURCE, ESI )
167
	MOV_L( ARG_SOURCE, ESI )
168
	MOV_L( ARG_DEST, EDI )
168
	MOV_L( ARG_DEST, EDI )
169
 
169
 
170
	MOV_L( ARG_MATRIX, EDX )
170
	MOV_L( ARG_MATRIX, EDX )
171
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
171
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
172
 
172
 
173
	TEST_L( ECX, ECX )
173
	TEST_L( ECX, ECX )
174
	JZ( LLBL(x86_p2_pr_done) )
174
	JZ( LLBL(x86_p2_pr_done) )
175
 
175
 
176
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
176
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
177
	OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
177
	OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
178
 
178
 
179
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
179
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
180
	MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
180
	MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
181
 
181
 
182
	SHL_L( CONST(4), ECX )
182
	SHL_L( CONST(4), ECX )
183
	MOV_L( REGOFF(V4F_START, ESI), ESI )
183
	MOV_L( REGOFF(V4F_START, ESI), ESI )
184
 
184
 
185
	MOV_L( REGOFF(V4F_START, EDI), EDI )
185
	MOV_L( REGOFF(V4F_START, EDI), EDI )
186
	ADD_L( EDI, ECX )
186
	ADD_L( EDI, ECX )
187
 
187
 
188
	MOV_L( MAT14, EBX )
188
	MOV_L( MAT14, EBX )
189
 
189
 
190
ALIGNTEXT16
190
ALIGNTEXT16
191
LLBL(x86_p2_pr_loop):
191
LLBL(x86_p2_pr_loop):
192
 
192
 
193
	FLD_S( SRC0 )			/* F4 */
193
	FLD_S( SRC0 )			/* F4 */
194
	FMUL_S( MAT0 )
194
	FMUL_S( MAT0 )
195
 
195
 
196
	FLD_S( SRC1 )			/* F1 F4 */
196
	FLD_S( SRC1 )			/* F1 F4 */
197
	FMUL_S( MAT5 )
197
	FMUL_S( MAT5 )
198
 
198
 
199
	FXCH( ST(1) )			/* F4 F1 */
199
	FXCH( ST(1) )			/* F4 F1 */
200
	FSTP_S( DST0   )		/* F1 */
200
	FSTP_S( DST0   )		/* F1 */
201
	FSTP_S( DST1   )		/* */
201
	FSTP_S( DST1   )		/* */
202
	MOV_L( EBX, DST2 )
202
	MOV_L( EBX, DST2 )
203
	MOV_L( CONST(FP_ZERO), DST3 )
203
	MOV_L( CONST(FP_ZERO), DST3 )
204
 
204
 
205
LLBL(x86_p2_pr_skip):
205
LLBL(x86_p2_pr_skip):
206
 
206
 
207
	ADD_L( CONST(16), EDI )
207
	ADD_L( CONST(16), EDI )
208
	ADD_L( EAX, ESI )
208
	ADD_L( EAX, ESI )
209
	CMP_L( ECX, EDI )
209
	CMP_L( ECX, EDI )
210
	JNE( LLBL(x86_p2_pr_loop) )
210
	JNE( LLBL(x86_p2_pr_loop) )
211
 
211
 
212
LLBL(x86_p2_pr_done):
212
LLBL(x86_p2_pr_done):
213
 
213
 
214
	POP_L( EBX )
214
	POP_L( EBX )
215
	POP_L( EDI )
215
	POP_L( EDI )
216
	POP_L( ESI )
216
	POP_L( ESI )
217
	RET
217
	RET
218
#undef FRAME_OFFSET
218
#undef FRAME_OFFSET
219
 
219
 
220
 
220
 
221
 
221
 
222
 
222
 
223
ALIGNTEXT16
223
ALIGNTEXT16
224
GLOBL GLNAME( __mesa_x86_transform_points2_3d )
224
GLOBL GLNAME( _mesa_x86_transform_points2_3d )
225
HIDDEN(__mesa_x86_transform_points2_3d)
225
HIDDEN(_mesa_x86_transform_points2_3d)
226
GLNAME( __mesa_x86_transform_points2_3d ):
226
GLNAME( _mesa_x86_transform_points2_3d ):
227
 
227
 
228
#define FRAME_OFFSET 8
228
#define FRAME_OFFSET 8
229
	PUSH_L( ESI )
229
	PUSH_L( ESI )
230
	PUSH_L( EDI )
230
	PUSH_L( EDI )
231
 
231
 
232
	MOV_L( ARG_SOURCE, ESI )
232
	MOV_L( ARG_SOURCE, ESI )
233
	MOV_L( ARG_DEST, EDI )
233
	MOV_L( ARG_DEST, EDI )
234
 
234
 
235
	MOV_L( ARG_MATRIX, EDX )
235
	MOV_L( ARG_MATRIX, EDX )
236
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
236
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
237
 
237
 
238
	TEST_L( ECX, ECX )
238
	TEST_L( ECX, ECX )
239
	JZ( LLBL(x86_p2_3dr_done) )
239
	JZ( LLBL(x86_p2_3dr_done) )
240
 
240
 
241
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
241
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
242
	OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
242
	OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
243
 
243
 
244
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
244
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
245
	MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
245
	MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
246
 
246
 
247
	SHL_L( CONST(4), ECX )
247
	SHL_L( CONST(4), ECX )
248
	MOV_L( REGOFF(V4F_START, ESI), ESI )
248
	MOV_L( REGOFF(V4F_START, ESI), ESI )
249
 
249
 
250
	MOV_L( REGOFF(V4F_START, EDI), EDI )
250
	MOV_L( REGOFF(V4F_START, EDI), EDI )
251
	ADD_L( EDI, ECX )
251
	ADD_L( EDI, ECX )
252
 
252
 
253
ALIGNTEXT16
253
ALIGNTEXT16
254
LLBL(x86_p2_3dr_loop):
254
LLBL(x86_p2_3dr_loop):
255
 
255
 
256
	FLD_S( SRC0 )			/* F4 */
256
	FLD_S( SRC0 )			/* F4 */
257
	FMUL_S( MAT0 )
257
	FMUL_S( MAT0 )
258
	FLD_S( SRC0 )			/* F5 F4 */
258
	FLD_S( SRC0 )			/* F5 F4 */
259
	FMUL_S( MAT1 )
259
	FMUL_S( MAT1 )
260
	FLD_S( SRC0 )			/* F6 F5 F4 */
260
	FLD_S( SRC0 )			/* F6 F5 F4 */
261
	FMUL_S( MAT2 )
261
	FMUL_S( MAT2 )
262
 
262
 
263
	FLD_S( SRC1 )			/* F0 F6 F5 F4 */
263
	FLD_S( SRC1 )			/* F0 F6 F5 F4 */
264
	FMUL_S( MAT4 )
264
	FMUL_S( MAT4 )
265
	FLD_S( SRC1 )			/* F1 F0 F6 F5 F4 */
265
	FLD_S( SRC1 )			/* F1 F0 F6 F5 F4 */
266
	FMUL_S( MAT5 )
266
	FMUL_S( MAT5 )
267
	FLD_S( SRC1 )			/* F2 F1 F0 F6 F5 F4 */
267
	FLD_S( SRC1 )			/* F2 F1 F0 F6 F5 F4 */
268
	FMUL_S( MAT6 )
268
	FMUL_S( MAT6 )
269
 
269
 
270
	FXCH( ST(2) )			/* F0 F1 F2 F6 F5 F4 */
270
	FXCH( ST(2) )			/* F0 F1 F2 F6 F5 F4 */
271
	FADDP( ST0, ST(5) )		/* F1 F2 F6 F5 F4 */
271
	FADDP( ST0, ST(5) )		/* F1 F2 F6 F5 F4 */
272
	FADDP( ST0, ST(3) )		/* F2 F6 F5 F4 */
272
	FADDP( ST0, ST(3) )		/* F2 F6 F5 F4 */
273
	FADDP( ST0, ST(1) )		/* F6 F5 F4 */
273
	FADDP( ST0, ST(1) )		/* F6 F5 F4 */
274
 
274
 
275
	FXCH( ST(2) )			/* F4 F5 F6 */
275
	FXCH( ST(2) )			/* F4 F5 F6 */
276
	FADD_S( MAT12 )
276
	FADD_S( MAT12 )
277
	FXCH( ST(1) )			/* F5 F4 F6 */
277
	FXCH( ST(1) )			/* F5 F4 F6 */
278
	FADD_S( MAT13 )
278
	FADD_S( MAT13 )
279
	FXCH( ST(2) )			/* F6 F4 F5 */
279
	FXCH( ST(2) )			/* F6 F4 F5 */
280
	FADD_S( MAT14 )
280
	FADD_S( MAT14 )
281
 
281
 
282
	FXCH( ST(1) )			/* F4 F6 F5 */
282
	FXCH( ST(1) )			/* F4 F6 F5 */
283
	FSTP_S( DST0 )			/* F6 F5 */
283
	FSTP_S( DST0 )			/* F6 F5 */
284
	FXCH( ST(1) )			/* F5 F6 */
284
	FXCH( ST(1) )			/* F5 F6 */
285
	FSTP_S( DST1 )			/* F6 */
285
	FSTP_S( DST1 )			/* F6 */
286
	FSTP_S( DST2 )			/* */
286
	FSTP_S( DST2 )			/* */
287
 
287
 
288
LLBL(x86_p2_3dr_skip):
288
LLBL(x86_p2_3dr_skip):
289
 
289
 
290
	ADD_L( CONST(16), EDI )
290
	ADD_L( CONST(16), EDI )
291
	ADD_L( EAX, ESI )
291
	ADD_L( EAX, ESI )
292
	CMP_L( ECX, EDI )
292
	CMP_L( ECX, EDI )
293
	JNE( LLBL(x86_p2_3dr_loop) )
293
	JNE( LLBL(x86_p2_3dr_loop) )
294
 
294
 
295
LLBL(x86_p2_3dr_done):
295
LLBL(x86_p2_3dr_done):
296
 
296
 
297
	POP_L( EDI )
297
	POP_L( EDI )
298
	POP_L( ESI )
298
	POP_L( ESI )
299
	RET
299
	RET
300
#undef FRAME_OFFSET
300
#undef FRAME_OFFSET
301
 
301
 
302
 
302
 
303
 
303
 
304
 
304
 
305
ALIGNTEXT16
305
ALIGNTEXT16
306
GLOBL GLNAME( __mesa_x86_transform_points2_3d_no_rot )
306
GLOBL GLNAME( _mesa_x86_transform_points2_3d_no_rot )
307
HIDDEN(__mesa_x86_transform_points2_3d_no_rot)
307
HIDDEN(_mesa_x86_transform_points2_3d_no_rot)
308
GLNAME( __mesa_x86_transform_points2_3d_no_rot ):
308
GLNAME( _mesa_x86_transform_points2_3d_no_rot ):
309
 
309
 
310
#define FRAME_OFFSET 12
310
#define FRAME_OFFSET 12
311
	PUSH_L( ESI )
311
	PUSH_L( ESI )
312
	PUSH_L( EDI )
312
	PUSH_L( EDI )
313
	PUSH_L( EBX )
313
	PUSH_L( EBX )
314
 
314
 
315
	MOV_L( ARG_SOURCE, ESI )
315
	MOV_L( ARG_SOURCE, ESI )
316
	MOV_L( ARG_DEST, EDI )
316
	MOV_L( ARG_DEST, EDI )
317
 
317
 
318
	MOV_L( ARG_MATRIX, EDX )
318
	MOV_L( ARG_MATRIX, EDX )
319
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
319
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
320
 
320
 
321
	TEST_L( ECX, ECX )
321
	TEST_L( ECX, ECX )
322
	JZ( LLBL(x86_p2_3dnrr_done) )
322
	JZ( LLBL(x86_p2_3dnrr_done) )
323
 
323
 
324
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
324
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
325
	OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
325
	OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
326
 
326
 
327
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
327
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
328
	MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
328
	MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
329
 
329
 
330
	SHL_L( CONST(4), ECX )
330
	SHL_L( CONST(4), ECX )
331
	MOV_L( REGOFF(V4F_START, ESI), ESI )
331
	MOV_L( REGOFF(V4F_START, ESI), ESI )
332
 
332
 
333
	MOV_L( REGOFF(V4F_START, EDI), EDI )
333
	MOV_L( REGOFF(V4F_START, EDI), EDI )
334
	ADD_L( EDI, ECX )
334
	ADD_L( EDI, ECX )
335
 
335
 
336
	MOV_L( MAT14, EBX )
336
	MOV_L( MAT14, EBX )
337
 
337
 
338
ALIGNTEXT16
338
ALIGNTEXT16
339
LLBL(x86_p2_3dnrr_loop):
339
LLBL(x86_p2_3dnrr_loop):
340
 
340
 
341
	FLD_S( SRC0 )			/* F4 */
341
	FLD_S( SRC0 )			/* F4 */
342
	FMUL_S( MAT0 )
342
	FMUL_S( MAT0 )
343
 
343
 
344
	FLD_S( SRC1 )			/* F1 F4 */
344
	FLD_S( SRC1 )			/* F1 F4 */
345
	FMUL_S( MAT5 )
345
	FMUL_S( MAT5 )
346
 
346
 
347
	FXCH( ST(1) )			/* F4 F1 */
347
	FXCH( ST(1) )			/* F4 F1 */
348
	FADD_S( MAT12 )
348
	FADD_S( MAT12 )
349
	FLD_S( MAT13 )		/* F5 F4 F1 */
349
	FLD_S( MAT13 )		/* F5 F4 F1 */
350
	FXCH( ST(2) )			/* F1 F4 F5 */
350
	FXCH( ST(2) )			/* F1 F4 F5 */
351
	FADDP( ST0, ST(2) )		/* F4 F5 */
351
	FADDP( ST0, ST(2) )		/* F4 F5 */
352
 
352
 
353
	FSTP_S( DST0 )		/* F5 */
353
	FSTP_S( DST0 )		/* F5 */
354
	FSTP_S( DST1 )		/* */
354
	FSTP_S( DST1 )		/* */
355
	MOV_L( EBX, DST2 )
355
	MOV_L( EBX, DST2 )
356
 
356
 
357
LLBL(x86_p2_3dnrr_skip):
357
LLBL(x86_p2_3dnrr_skip):
358
 
358
 
359
	ADD_L( CONST(16), EDI )
359
	ADD_L( CONST(16), EDI )
360
	ADD_L( EAX, ESI )
360
	ADD_L( EAX, ESI )
361
	CMP_L( ECX, EDI )
361
	CMP_L( ECX, EDI )
362
	JNE( LLBL(x86_p2_3dnrr_loop) )
362
	JNE( LLBL(x86_p2_3dnrr_loop) )
363
 
363
 
364
LLBL(x86_p2_3dnrr_done):
364
LLBL(x86_p2_3dnrr_done):
365
 
365
 
366
	POP_L( EBX )
366
	POP_L( EBX )
367
	POP_L( EDI )
367
	POP_L( EDI )
368
	POP_L( ESI )
368
	POP_L( ESI )
369
	RET
369
	RET
370
#undef FRAME_OFFSET
370
#undef FRAME_OFFSET
371
 
371
 
372
 
372
 
373
 
373
 
374
 
374
 
375
ALIGNTEXT16
375
ALIGNTEXT16
376
GLOBL GLNAME( __mesa_x86_transform_points2_2d )
376
GLOBL GLNAME( _mesa_x86_transform_points2_2d )
377
HIDDEN(__mesa_x86_transform_points2_2d)
377
HIDDEN(_mesa_x86_transform_points2_2d)
378
GLNAME( __mesa_x86_transform_points2_2d ):
378
GLNAME( _mesa_x86_transform_points2_2d ):
379
 
379
 
380
#define FRAME_OFFSET 8
380
#define FRAME_OFFSET 8
381
	PUSH_L( ESI )
381
	PUSH_L( ESI )
382
	PUSH_L( EDI )
382
	PUSH_L( EDI )
383
 
383
 
384
	MOV_L( ARG_SOURCE, ESI )
384
	MOV_L( ARG_SOURCE, ESI )
385
	MOV_L( ARG_DEST, EDI )
385
	MOV_L( ARG_DEST, EDI )
386
 
386
 
387
	MOV_L( ARG_MATRIX, EDX )
387
	MOV_L( ARG_MATRIX, EDX )
388
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
388
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
389
 
389
 
390
	TEST_L( ECX, ECX )
390
	TEST_L( ECX, ECX )
391
	JZ( LLBL(x86_p2_2dr_done) )
391
	JZ( LLBL(x86_p2_2dr_done) )
392
 
392
 
393
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
393
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
394
	OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
394
	OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
395
 
395
 
396
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
396
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
397
	MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
397
	MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
398
 
398
 
399
	SHL_L( CONST(4), ECX )
399
	SHL_L( CONST(4), ECX )
400
	MOV_L( REGOFF(V4F_START, ESI), ESI )
400
	MOV_L( REGOFF(V4F_START, ESI), ESI )
401
 
401
 
402
	MOV_L( REGOFF(V4F_START, EDI), EDI )
402
	MOV_L( REGOFF(V4F_START, EDI), EDI )
403
	ADD_L( EDI, ECX )
403
	ADD_L( EDI, ECX )
404
 
404
 
405
ALIGNTEXT16
405
ALIGNTEXT16
406
LLBL(x86_p2_2dr_loop):
406
LLBL(x86_p2_2dr_loop):
407
 
407
 
408
	FLD_S( SRC0 )			/* F4 */
408
	FLD_S( SRC0 )			/* F4 */
409
	FMUL_S( MAT0 )
409
	FMUL_S( MAT0 )
410
	FLD_S( SRC0 )			/* F5 F4 */
410
	FLD_S( SRC0 )			/* F5 F4 */
411
	FMUL_S( MAT1 )
411
	FMUL_S( MAT1 )
412
 
412
 
413
	FLD_S( SRC1 )			/* F0 F5 F4 */
413
	FLD_S( SRC1 )			/* F0 F5 F4 */
414
	FMUL_S( MAT4 )
414
	FMUL_S( MAT4 )
415
	FLD_S( SRC1 )			/* F1 F0 F5 F4 */
415
	FLD_S( SRC1 )			/* F1 F0 F5 F4 */
416
	FMUL_S( MAT5 )
416
	FMUL_S( MAT5 )
417
 
417
 
418
	FXCH( ST(1) )			/* F0 F1 F5 F4 */
418
	FXCH( ST(1) )			/* F0 F1 F5 F4 */
419
	FADDP( ST0, ST(3) )		/* F1 F5 F4 */
419
	FADDP( ST0, ST(3) )		/* F1 F5 F4 */
420
	FADDP( ST0, ST(1) )		/* F5 F4 */
420
	FADDP( ST0, ST(1) )		/* F5 F4 */
421
 
421
 
422
	FXCH( ST(1) )			/* F4 F5 */
422
	FXCH( ST(1) )			/* F4 F5 */
423
	FADD_S( MAT12 )
423
	FADD_S( MAT12 )
424
	FXCH( ST(1) )			/* F5 F4 */
424
	FXCH( ST(1) )			/* F5 F4 */
425
	FADD_S( MAT13 )
425
	FADD_S( MAT13 )
426
 
426
 
427
	FXCH( ST(1) )			/* F4 F5 */
427
	FXCH( ST(1) )			/* F4 F5 */
428
	FSTP_S( DST0 )		/* F5 */
428
	FSTP_S( DST0 )		/* F5 */
429
	FSTP_S( DST1 )		/* */
429
	FSTP_S( DST1 )		/* */
430
 
430
 
431
LLBL(x86_p2_2dr_skip):
431
LLBL(x86_p2_2dr_skip):
432
 
432
 
433
	ADD_L( CONST(16), EDI )
433
	ADD_L( CONST(16), EDI )
434
	ADD_L( EAX, ESI )
434
	ADD_L( EAX, ESI )
435
	CMP_L( ECX, EDI )
435
	CMP_L( ECX, EDI )
436
	JNE( LLBL(x86_p2_2dr_loop) )
436
	JNE( LLBL(x86_p2_2dr_loop) )
437
 
437
 
438
LLBL(x86_p2_2dr_done):
438
LLBL(x86_p2_2dr_done):
439
 
439
 
440
	POP_L( EDI )
440
	POP_L( EDI )
441
	POP_L( ESI )
441
	POP_L( ESI )
442
	RET
442
	RET
443
#undef FRAME_OFFSET
443
#undef FRAME_OFFSET
444
 
444
 
445
 
445
 
446
 
446
 
447
 
447
 
448
ALIGNTEXT4
448
ALIGNTEXT4
449
GLOBL GLNAME( __mesa_x86_transform_points2_2d_no_rot )
449
GLOBL GLNAME( _mesa_x86_transform_points2_2d_no_rot )
450
HIDDEN(__mesa_x86_transform_points2_2d_no_rot)
450
HIDDEN(_mesa_x86_transform_points2_2d_no_rot)
451
GLNAME( __mesa_x86_transform_points2_2d_no_rot ):
451
GLNAME( _mesa_x86_transform_points2_2d_no_rot ):
452
 
452
 
453
#define FRAME_OFFSET 8
453
#define FRAME_OFFSET 8
454
	PUSH_L( ESI )
454
	PUSH_L( ESI )
455
	PUSH_L( EDI )
455
	PUSH_L( EDI )
456
 
456
 
457
	MOV_L( ARG_SOURCE, ESI )
457
	MOV_L( ARG_SOURCE, ESI )
458
	MOV_L( ARG_DEST, EDI )
458
	MOV_L( ARG_DEST, EDI )
459
 
459
 
460
	MOV_L( ARG_MATRIX, EDX )
460
	MOV_L( ARG_MATRIX, EDX )
461
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
461
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
462
 
462
 
463
	TEST_L( ECX, ECX )
463
	TEST_L( ECX, ECX )
464
	JZ( LLBL(x86_p2_2dnrr_done) )
464
	JZ( LLBL(x86_p2_2dnrr_done) )
465
 
465
 
466
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
466
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
467
	OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
467
	OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
468
 
468
 
469
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
469
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
470
	MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
470
	MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
471
 
471
 
472
	SHL_L( CONST(4), ECX )
472
	SHL_L( CONST(4), ECX )
473
	MOV_L( REGOFF(V4F_START, ESI), ESI )
473
	MOV_L( REGOFF(V4F_START, ESI), ESI )
474
 
474
 
475
	MOV_L( REGOFF(V4F_START, EDI), EDI )
475
	MOV_L( REGOFF(V4F_START, EDI), EDI )
476
	ADD_L( EDI, ECX )
476
	ADD_L( EDI, ECX )
477
 
477
 
478
ALIGNTEXT16
478
ALIGNTEXT16
479
LLBL(x86_p2_2dnrr_loop):
479
LLBL(x86_p2_2dnrr_loop):
480
 
480
 
481
	FLD_S( SRC0 )			/* F4 */
481
	FLD_S( SRC0 )			/* F4 */
482
	FMUL_S( MAT0 )
482
	FMUL_S( MAT0 )
483
 
483
 
484
	FLD_S( SRC1 )			/* F1 F4 */
484
	FLD_S( SRC1 )			/* F1 F4 */
485
	FMUL_S( MAT5 )
485
	FMUL_S( MAT5 )
486
 
486
 
487
	FXCH( ST(1) )			/* F4 F1 */
487
	FXCH( ST(1) )			/* F4 F1 */
488
	FADD_S( MAT12 )
488
	FADD_S( MAT12 )
489
	FLD_S( MAT13 )		/* F5 F4 F1 */
489
	FLD_S( MAT13 )		/* F5 F4 F1 */
490
	FXCH( ST(2) )			/* F1 F4 F5 */
490
	FXCH( ST(2) )			/* F1 F4 F5 */
491
	FADDP( ST0, ST(2) )		/* F4 F5 */
491
	FADDP( ST0, ST(2) )		/* F4 F5 */
492
 
492
 
493
	FSTP_S( DST0   )		/* F5 */
493
	FSTP_S( DST0   )		/* F5 */
494
	FSTP_S( DST1   )		/* */
494
	FSTP_S( DST1   )		/* */
495
 
495
 
496
LLBL(x86_p2_2dnrr_skip):
496
LLBL(x86_p2_2dnrr_skip):
497
 
497
 
498
	ADD_L( CONST(16), EDI )
498
	ADD_L( CONST(16), EDI )
499
	ADD_L( EAX, ESI )
499
	ADD_L( EAX, ESI )
500
	CMP_L( ECX, EDI )
500
	CMP_L( ECX, EDI )
501
	JNE( LLBL(x86_p2_2dnrr_loop) )
501
	JNE( LLBL(x86_p2_2dnrr_loop) )
502
 
502
 
503
LLBL(x86_p2_2dnrr_done):
503
LLBL(x86_p2_2dnrr_done):
504
 
504
 
505
	POP_L( EDI )
505
	POP_L( EDI )
506
	POP_L( ESI )
506
	POP_L( ESI )
507
	RET
507
	RET
508
#undef FRAME_OFFSET
508
#undef FRAME_OFFSET
509
 
509
 
510
 
510
 
511
 
511
 
512
 
512
 
513
ALIGNTEXT16
513
ALIGNTEXT16
514
GLOBL GLNAME( __mesa_x86_transform_points2_identity )
514
GLOBL GLNAME( _mesa_x86_transform_points2_identity )
515
HIDDEN(__mesa_x86_transform_points2_identity)
515
HIDDEN(_mesa_x86_transform_points2_identity)
516
GLNAME( __mesa_x86_transform_points2_identity ):
516
GLNAME( _mesa_x86_transform_points2_identity ):
517
 
517
 
518
#define FRAME_OFFSET 12
518
#define FRAME_OFFSET 12
519
	PUSH_L( ESI )
519
	PUSH_L( ESI )
520
	PUSH_L( EDI )
520
	PUSH_L( EDI )
521
	PUSH_L( EBX )
521
	PUSH_L( EBX )
522
 
522
 
523
	MOV_L( ARG_SOURCE, ESI )
523
	MOV_L( ARG_SOURCE, ESI )
524
	MOV_L( ARG_DEST, EDI )
524
	MOV_L( ARG_DEST, EDI )
525
 
525
 
526
	MOV_L( ARG_MATRIX, EDX )
526
	MOV_L( ARG_MATRIX, EDX )
527
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
527
	MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
528
 
528
 
529
	TEST_L( ECX, ECX )
529
	TEST_L( ECX, ECX )
530
	JZ( LLBL(x86_p2_ir_done) )
530
	JZ( LLBL(x86_p2_ir_done) )
531
 
531
 
532
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
532
	MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
533
	OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
533
	OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
534
 
534
 
535
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
535
	MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
536
	MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
536
	MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
537
 
537
 
538
	SHL_L( CONST(4), ECX )
538
	SHL_L( CONST(4), ECX )
539
	MOV_L( REGOFF(V4F_START, ESI), ESI )
539
	MOV_L( REGOFF(V4F_START, ESI), ESI )
540
 
540
 
541
	MOV_L( REGOFF(V4F_START, EDI), EDI )
541
	MOV_L( REGOFF(V4F_START, EDI), EDI )
542
	ADD_L( EDI, ECX )
542
	ADD_L( EDI, ECX )
543
 
543
 
544
	CMP_L( ESI, EDI )
544
	CMP_L( ESI, EDI )
545
	JE( LLBL(x86_p2_ir_done) )
545
	JE( LLBL(x86_p2_ir_done) )
546
 
546
 
547
ALIGNTEXT16
547
ALIGNTEXT16
548
LLBL(x86_p2_ir_loop):
548
LLBL(x86_p2_ir_loop):
549
 
549
 
550
	MOV_L( SRC0, EBX )
550
	MOV_L( SRC0, EBX )
551
	MOV_L( SRC1, EDX )
551
	MOV_L( SRC1, EDX )
552
 
552
 
553
	MOV_L( EBX, DST0 )
553
	MOV_L( EBX, DST0 )
554
	MOV_L( EDX, DST1 )
554
	MOV_L( EDX, DST1 )
555
 
555
 
556
LLBL(x86_p2_ir_skip):
556
LLBL(x86_p2_ir_skip):
557
 
557
 
558
	ADD_L( CONST(16), EDI )
558
	ADD_L( CONST(16), EDI )
559
	ADD_L( EAX, ESI )
559
	ADD_L( EAX, ESI )
560
	CMP_L( ECX, EDI )
560
	CMP_L( ECX, EDI )
561
	JNE( LLBL(x86_p2_ir_loop) )
561
	JNE( LLBL(x86_p2_ir_loop) )
562
 
562
 
563
LLBL(x86_p2_ir_done):
563
LLBL(x86_p2_ir_done):
564
 
564
 
565
	POP_L( EBX )
565
	POP_L( EBX )
566
	POP_L( EDI )
566
	POP_L( EDI )
567
	POP_L( ESI )
567
	POP_L( ESI )
568
	RET
568
	RET
569
#undef FRAME_OFFSET
569
#undef FRAME_OFFSET
570
 
570
 
571
#if defined (__ELF__) && defined (__linux__)
571
#if defined (__ELF__) && defined (__linux__)
572
	.section .note.GNU-stack,"",%progbits
572
	.section .note.GNU-stack,"",%progbits
573
#endif
573
#endif