1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/*
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Clip testing in SPARC assembly
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if __arch64__
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LDPTR		ldx
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_DATA	0x00
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_START	0x08
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_COUNT	0x10
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_STRIDE	0x14
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_SIZE	0x18
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_FLAGS	0x1c
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#else
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LDPTR		ld
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_DATA	0x00
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_START	0x04
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_COUNT	0x08
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_STRIDE	0x0c
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_SIZE	0x10
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_FLAGS	0x14
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VEC_SIZE_1   	1
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VEC_SIZE_2   	3
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VEC_SIZE_3   	7
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VEC_SIZE_4   	15
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org        .register %g2, #scratch
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org        .register %g3, #scratch
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.text
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.align		64
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgone_dot_zero:
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.word		0x3f800000	/* 1.0f */
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* This trick is shamelessly stolen from the x86
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * Mesa asm.  Very clever, and we can do it too
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * since we have the necessary add with carry
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * instructions on Sparc.
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclip_table:
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	 0,  1,  0,  2,  4,  5,  4,  6
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	 0,  1,  0,  2,  8,  9,  8, 10
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	32, 33, 32, 34, 36, 37, 36, 38
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	32, 33, 32, 34, 40, 41, 40, 42
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	 0,  1,  0,  2,  4,  5,  4,  6
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	 0,  1,  0,  2,  8,  9,  8, 10
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	16, 17, 16, 18, 20, 21, 20, 22
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	16, 17, 16, 18, 24, 25, 24, 26
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	63, 61, 63, 62, 55, 53, 55, 54
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	63, 61, 63, 62, 59, 57, 59, 58
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	47, 45, 47, 46, 39, 37, 39, 38
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	47, 45, 47, 46, 43, 41, 43, 42
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	63, 61, 63, 62, 55, 53, 55, 54
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	63, 61, 63, 62, 59, 57, 59, 58
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	31, 29, 31, 30, 23, 21, 23, 22
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.byte	31, 29, 31, 30, 27, 25, 27, 26
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* GLvector4f *clip_vec, GLvector4f *proj_vec,
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   GLubyte clipMask[], GLubyte *orMask, GLubyte *andMask,
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org   GLboolean viewport_z_enable */
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.align		64
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org__pc_tramp:
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	retl
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 nop
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.globl		_mesa_sparc_cliptest_points4
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_sparc_cliptest_points4:
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	save		%sp, -64, %sp
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	call		__pc_tramp
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 sub		%o7, (. - one_dot_zero - 4), %g1
74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%g1 + 0x0], %f4
75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	add		%g1, 0x4, %g1
76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + V4F_STRIDE], %l1
78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + V4F_COUNT], %l3
79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	LDPTR		[%i0 + V4F_START], %i0
80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	LDPTR		[%i1 + V4F_START], %i5
81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ldub		[%i3], %g2
82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ldub		[%i4], %g3
83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	sll		%g3, 8, %g3
84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	or		%g2, %g3, %g2
85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i1 + V4F_FLAGS], %g3
87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	or		%g3, VEC_SIZE_4, %g3
88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%g3, [%i1 + V4F_FLAGS]
89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	mov		3, %g3
90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%g3, [%i1 + V4F_SIZE]
91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%l3, [%i1 + V4F_COUNT]
92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	clr		%l2
93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	clr		%l0
94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* l0:	i
96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * l3:	count
97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * l1:	stride
98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * l2:	c
99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * g2:	(tmpAndMask << 8) | tmpOrMask
100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * g1:	clip_table
101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * i0:	from[stride][i]
102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * i2:	clipMask
103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * i5:	vProj[4][i]
104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org1:	ld		[%i0 + 0x0c], %f3	! LSU	Group
107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + 0x0c], %g5	! LSU	Group
108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + 0x08], %g4	! LSU	Group
109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	fdivs		%f4, %f3, %f8		! FGM
110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addcc		%g5, %g5, %g5		! IEU1	Group
111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g0, 0x0, %g3		! IEU1	Group
112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addcc		%g4, %g4, %g4		! IEU1	Group
113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	subcc		%g5, %g4, %g0		! IEU1	Group
115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + 0x04], %g4	! LSU	Group
116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addcc		%g4, %g4, %g4		! IEU1	Group
118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	subcc		%g5, %g4, %g0		! IEU1	Group
120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + 0x00], %g4	! LSU	Group
121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addcc		%g4, %g4, %g4		! IEU1	Group
123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	subcc		%g5, %g4, %g0		! IEU1	Group
125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ldub		[%g1 + %g3], %g3	! LSU	Group
127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	cmp		%g3, 0			! IEU1	Group, stall
128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	be		2f			! CTI
129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 stb		%g3, [%i2]		! LSU
130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	sll		%g3, 8, %g4		! IEU1	Group
131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	add		%l2, 1, %l2		! IEU0
132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%g0, [%i5 + 0x00]	! LSU
133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	or		%g4, 0xff, %g4		! IEU0	Group
134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	or		%g2, %g3, %g2		! IEU1
135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%g0, [%i5 + 0x04]	! LSU
136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	and		%g2, %g4, %g2		! IEU0	Group
137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%g0, [%i5 + 0x08]	! LSU
138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	b		3f			! CTI
139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 st		%f4, [%i5 + 0x0c]	! LSU	Group
140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org2:	ld		[%i0 + 0x00], %f0	! LSU	Group
141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + 0x04], %f1	! LSU	Group
142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + 0x08], %f2	! LSU	Group
143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	fmuls		%f0, %f8, %f0		! FGM
144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%f0, [%i5 + 0x00]	! LSU	Group
145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	fmuls		%f1, %f8, %f1		! FGM
146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%f1, [%i5 + 0x04]	! LSU	Group
147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	fmuls		%f2, %f8, %f2		! FGM
148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%f2, [%i5 + 0x08]	! LSU	Group
149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	st		%f8, [%i5 + 0x0c]	! LSU	Group
150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org3:	add		%i5, 0x10, %i5		! IEU1
151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	add		%l0, 1, %l0		! IEU0	Group
152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	add		%i2, 1, %i2		! IEU0	Group
153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	cmp		%l0, %l3		! IEU1	Group
154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	bne		1b			! CTI
155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 add		%i0, %l1, %i0		! IEU0	Group
156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	stb		%g2, [%i3]		! LSU
157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	srl		%g2, 8, %g3		! IEU0	Group
158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	cmp		%l2, %l3		! IEU1	Group
159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	bl,a		1f			! CTI
160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 clr		%g3			! IEU0
161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org1:	stb		%g3, [%i4]		! LSU	Group
162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ret					! CTI	Group
163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 restore	%i1, 0x0, %o0
164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	.globl		_mesa_sparc_cliptest_points4_np
166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_sparc_cliptest_points4_np:
167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	save		%sp, -64, %sp
168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	call		__pc_tramp
170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 sub		%o7, (. - one_dot_zero - 4), %g1
171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	add		%g1, 0x4, %g1
172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + V4F_STRIDE], %l1
174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + V4F_COUNT], %l3
175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	LDPTR		[%i0 + V4F_START], %i0
176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ldub		[%i3], %g2
177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ldub		[%i4], %g3
178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	sll		%g3, 8, %g3
179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	or		%g2, %g3, %g2
180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	clr		%l2
182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	clr		%l0
183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	/* l0:	i
185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * l3:	count
186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * l1:	stride
187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * l2:	c
188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * g2:	(tmpAndMask << 8) | tmpOrMask
189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * g1:	clip_table
190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * i0:	from[stride][i]
191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 * i2:	clipMask
192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 */
193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org1:	ld		[%i0 + 0x0c], %g5	! LSU	Group
195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + 0x08], %g4	! LSU	Group
196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addcc		%g5, %g5, %g5		! IEU1	Group
197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g0, 0x0, %g3		! IEU1	Group
198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addcc		%g4, %g4, %g4		! IEU1	Group
199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	subcc		%g5, %g4, %g0		! IEU1	Group
201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + 0x04], %g4	! LSU	Group
202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addcc		%g4, %g4, %g4		! IEU1	Group
204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	subcc		%g5, %g4, %g0		! IEU1	Group
206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ld		[%i0 + 0x00], %g4	! LSU	Group
207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addcc		%g4, %g4, %g4		! IEU1	Group
209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	subcc		%g5, %g4, %g0		! IEU1	Group
211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	addx		%g3, %g3, %g3		! IEU1	Group
212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ldub		[%g1 + %g3], %g3	! LSU	Group
213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	cmp		%g3, 0			! IEU1	Group, stall
214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	be		2f			! CTI
215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 stb		%g3, [%i2]		! LSU
216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	sll		%g3, 8, %g4		! IEU1	Group
217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	add		%l2, 1, %l2		! IEU0
218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	or		%g4, 0xff, %g4		! IEU0	Group
219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	or		%g2, %g3, %g2		! IEU1
220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	and		%g2, %g4, %g2		! IEU0	Group
221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org2:	add		%l0, 1, %l0		! IEU0	Group
222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	add		%i2, 1, %i2		! IEU0	Group
223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	cmp		%l0, %l3		! IEU1	Group
224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	bne		1b			! CTI
225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 add		%i0, %l1, %i0		! IEU0	Group
226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	stb		%g2, [%i3]		! LSU
227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	srl		%g2, 8, %g3		! IEU0	Group
228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	cmp		%l2, %l3		! IEU1	Group
229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	bl,a		1f			! CTI
230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 clr		%g3			! IEU0
231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org1:	stb		%g3, [%i4]		! LSU	Group
232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	ret					! CTI	Group
233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	 restore	%i1, 0x0, %o0
234