sse2-memset32-atom.S revision bb12ac9b85adae96cbd38b2220c5da9a9d80bc54
1bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu/*
2bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * Copyright (C) 2010 The Android Open Source Project
3bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu *
4bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * Licensed under the Apache License, Version 2.0 (the "License");
5bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * you may not use this file except in compliance with the License.
6bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * You may obtain a copy of the License at
7bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu *
8bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu *      http://www.apache.org/licenses/LICENSE-2.0
9bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu *
10bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * Unless required by applicable law or agreed to in writing, software
11bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * distributed under the License is distributed on an "AS IS" BASIS,
12bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * See the License for the specific language governing permissions and
14bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * limitations under the License.
15bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu */
16bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu/*
17bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu * Contributed by: Intel Corporation
18bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu */
19bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
20bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifndef L
21bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define L(label)	.L##label
22bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
23bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
24bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifndef ALIGN
25bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define ALIGN(n)	.p2align n
26bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
27bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
28bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifndef cfi_startproc
29bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define cfi_startproc			.cfi_startproc
30bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
31bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
32bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifndef cfi_endproc
33bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define cfi_endproc			.cfi_endproc
34bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
35bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
36bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifndef cfi_rel_offset
37bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define cfi_rel_offset(reg, off)	.cfi_rel_offset reg, off
38bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
39bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
40bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifndef cfi_restore
41bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define cfi_restore(reg)		.cfi_restore reg
42bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
43bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
44bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifndef cfi_adjust_cfa_offset
45bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define cfi_adjust_cfa_offset(off)	.cfi_adjust_cfa_offset off
46bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
47bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
48bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifndef ENTRY
49bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define ENTRY(name)			\
50bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.type name,  @function; 	\
51bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.globl name;			\
52bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.p2align 4;			\
53bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiuname:					\
54bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cfi_startproc
55bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
56bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
57bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifndef END
58bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define END(name)			\
59bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cfi_endproc;			\
60bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.size name, .-name
61bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
62bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
63bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#define CFI_PUSH(REG)						\
64bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu  cfi_adjust_cfa_offset (4);					\
65bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu  cfi_rel_offset (REG, 0)
66bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
67bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#define CFI_POP(REG)						\
68bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu  cfi_adjust_cfa_offset (-4);					\
69bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu  cfi_restore (REG)
70bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
71bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#define PUSH(REG)	pushl REG; CFI_PUSH (REG)
72bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#define POP(REG)	popl REG; CFI_POP (REG)
73bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
74bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef USE_AS_BZERO32
75bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define DEST		PARMS
76bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define LEN		DEST+4
77bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
78bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define DEST		PARMS
79bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define DWDS		DEST+4
80bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define LEN		DWDS+4
81bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
82bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
83bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef USE_AS_WMEMSET32
84bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define SETRTNVAL	movl DEST(%esp), %eax
85bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
86bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define SETRTNVAL
87bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
88bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
89bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef SHARED
90bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define ENTRANCE	PUSH (%ebx);
91bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define RETURN_END	POP (%ebx); ret
92bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define RETURN		RETURN_END; CFI_PUSH (%ebx)
93bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define PARMS		8		/* Preserve EBX.  */
94bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define JMPTBL(I, B)	I - B
95bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
96bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu/* Load an entry in a jump table into EBX and branch to it.  TABLE is a
97bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu   jump table with relative offsets.   */
98bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define BRANCH_TO_JMPTBL_ENTRY(TABLE)				\
99bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu    /* We first load PC into EBX.  */				\
100bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu    call	__i686.get_pc_thunk.bx;				\
101bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu    /* Get the address of the jump table.  */			\
102bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu    add		$(TABLE - .), %ebx;				\
103bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu    /* Get the entry and convert the relative offset to the	\
104bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu       absolute address.  */					\
105bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu    add		(%ebx,%ecx,4), %ebx;				\
106bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu    /* We loaded the jump table and adjuested EDX. Go.  */	\
107bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu    jmp		*%ebx
108bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
109bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.section	.gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
110bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.globl	__i686.get_pc_thunk.bx
111bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.hidden	__i686.get_pc_thunk.bx
112bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
113bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.type	__i686.get_pc_thunk.bx,@function
114bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu__i686.get_pc_thunk.bx:
115bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	(%esp), %ebx
116bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ret
117bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
118bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define ENTRANCE
119bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define RETURN_END	ret
120bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define RETURN		RETURN_END
121bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define PARMS		4
122bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define JMPTBL(I, B)	I
123bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
124bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu/* Branch to an entry in a jump table.  TABLE is a jump table with
125bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu   absolute offsets.  */
126bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define BRANCH_TO_JMPTBL_ENTRY(TABLE)				\
127bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu    jmp		*TABLE(,%ecx,4)
128bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
129bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
130bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.section .text.sse2,"ax",@progbits
131bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
132bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuENTRY (sse2_memset32_atom)
133bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ENTRANCE
134bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
135bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	LEN(%esp), %ecx
136bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef USE_AS_ANDROID
137bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr     $2, %ecx
138bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
139bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef USE_AS_BZERO32
140bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	xor	%eax, %eax
141bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
142bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	DWDS(%esp), %eax
143bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	%eax, %edx
144bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
145bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	DEST(%esp), %edx
146bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$16, %ecx
147bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(16dbwordsormore)
148bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
149bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_less16dbwords):
150bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	lea	(%edx, %ecx, 4), %edx
151bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_less16dbwords))
152bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
153bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.pushsection .rodata.sse2,"a",@progbits
154bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (2)
155bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(table_less16dbwords):
156bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_0dbwords), L(table_less16dbwords))
157bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_1dbwords), L(table_less16dbwords))
158bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_2dbwords), L(table_less16dbwords))
159bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_3dbwords), L(table_less16dbwords))
160bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_4dbwords), L(table_less16dbwords))
161bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_5dbwords), L(table_less16dbwords))
162bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_6dbwords), L(table_less16dbwords))
163bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_7dbwords), L(table_less16dbwords))
164bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_8dbwords), L(table_less16dbwords))
165bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_9dbwords), L(table_less16dbwords))
166bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_10dbwords), L(table_less16dbwords))
167bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_11dbwords), L(table_less16dbwords))
168bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_12dbwords), L(table_less16dbwords))
169bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_13dbwords), L(table_less16dbwords))
170bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_14dbwords), L(table_less16dbwords))
171bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_15dbwords), L(table_less16dbwords))
172bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.popsection
173bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
174bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
175bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_15dbwords):
176bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -60(%edx)
177bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_14dbwords):
178bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -56(%edx)
179bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_13dbwords):
180bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -52(%edx)
181bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_12dbwords):
182bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -48(%edx)
183bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_11dbwords):
184bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -44(%edx)
185bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_10dbwords):
186bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -40(%edx)
187bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_9dbwords):
188bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -36(%edx)
189bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_8dbwords):
190bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -32(%edx)
191bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_7dbwords):
192bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -28(%edx)
193bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_6dbwords):
194bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -24(%edx)
195bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_5dbwords):
196bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -20(%edx)
197bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_4dbwords):
198bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -16(%edx)
199bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_3dbwords):
200bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -12(%edx)
201bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_2dbwords):
202bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -8(%edx)
203bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_1dbwords):
204bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -4(%edx)
205bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_0dbwords):
206bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
207bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
208bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
209bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
210bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(16dbwordsormore):
211bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	test	$3, %edx
212bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jz	L(aligned4bytes)
213bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	%eax, (%edx)
214bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	%eax, -4(%edx, %ecx, 4)
215bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$1, %ecx
216bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	rol	$24, %eax
217bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$1, %edx
218bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	test	$3, %edx
219bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jz	L(aligned4bytes)
220bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ror	$8, %eax
221bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$1, %edx
222bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	test	$3, %edx
223bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jz	L(aligned4bytes)
224bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ror	$8, %eax
225bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$1, %edx
226bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned4bytes):
227bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shl	$2, %ecx
228bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
229bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef USE_AS_BZERO32
230bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	pxor	%xmm0, %xmm0
231bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
232bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movd	%eax, %xmm0
233bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	pshufd	$0, %xmm0, %xmm0
234bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
235bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	testl	$0xf, %edx
236bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jz	L(aligned_16)
237bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu/* ECX > 32 and EDX is not 16 byte aligned.  */
238bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(not_aligned_16):
239bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqu	%xmm0, (%edx)
240bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%edx, %eax
241bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	and	$-16, %edx
242bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$16, %edx
243bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	%edx, %eax
244bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%eax, %ecx
245bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movd	%xmm0, %eax
246bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
247bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16):
248bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$128, %ecx
249bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore)
250bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
251bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_less128bytes):
252bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%ecx, %edx
253bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr	$2, %ecx
254bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
255bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
256bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
257bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore):
258bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef SHARED_CACHE_SIZE
259bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	PUSH (%ebx)
260bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	$SHARED_CACHE_SIZE, %ebx
261bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
262bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# ifdef SHARED
263bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	call	__i686.get_pc_thunk.bx
264bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$_GLOBAL_OFFSET_TABLE_, %ebx
265bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	__x86_shared_cache_size@GOTOFF(%ebx), %ebx
266bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# else
267bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	PUSH (%ebx)
268bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	__x86_shared_cache_size, %ebx
269bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# endif
270bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
271bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	%ebx, %ecx
272bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore_nt_start)
273bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
274bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef DATA_CACHE_SIZE
275bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	POP (%ebx)
276bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define RESTORE_EBX_STATE CFI_PUSH (%ebx)
277bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$DATA_CACHE_SIZE, %ecx
278bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
279bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# ifdef SHARED
280bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#  define RESTORE_EBX_STATE
281bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	call	__i686.get_pc_thunk.bx
282bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$_GLOBAL_OFFSET_TABLE_, %ebx
283bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	__x86_data_cache_size@GOTOFF(%ebx), %ecx
284bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# else
285bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	POP (%ebx)
286bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#  define RESTORE_EBX_STATE CFI_PUSH (%ebx)
287bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	__x86_data_cache_size, %ecx
288bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# endif
289bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
290bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
291bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytes_L2_normal)
292bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	subl	$128, %ecx
293bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore_normal):
294bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$128, %ecx
295bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, (%edx)
296bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x10(%edx)
297bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x20(%edx)
298bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x30(%edx)
299bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x40(%edx)
300bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x50(%edx)
301bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x60(%edx)
302bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x70(%edx)
303bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	lea	128(%edx), %edx
304bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jb	L(128bytesless_normal)
305bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
306bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
307bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$128, %ecx
308bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, (%edx)
309bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x10(%edx)
310bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x20(%edx)
311bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x30(%edx)
312bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x40(%edx)
313bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x50(%edx)
314bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x60(%edx)
315bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x70(%edx)
316bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	lea	128(%edx), %edx
317bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore_normal)
318bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
319bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesless_normal):
320bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	lea	128(%ecx), %ecx
321bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%ecx, %edx
322bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr	$2, %ecx
323bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
324bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
325bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
326bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytes_L2_normal):
327bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	prefetcht0	0x380(%edx)
328bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	prefetcht0	0x3c0(%edx)
329bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$128, %ecx
330bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, (%edx)
331bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x10(%edx)
332bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x20(%edx)
333bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x30(%edx)
334bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x40(%edx)
335bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x50(%edx)
336bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x60(%edx)
337bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x70(%edx)
338bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$128, %edx
339bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$128, %ecx
340bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytes_L2_normal)
341bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
342bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesless_L2_normal):
343bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%ecx, %edx
344bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr	$2, %ecx
345bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
346bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
347bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RESTORE_EBX_STATE
348bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore_nt_start):
349bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	%ebx, %ecx
350bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	%ebx, %eax
351bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	and	$0x7f, %eax
352bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%eax, %ecx
353bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movd	%xmm0, %eax
354bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
355bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore_shared_cache_loop):
356bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	prefetcht0	0x3c0(%edx)
357bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	prefetcht0	0x380(%edx)
358bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$0x80, %ebx
359bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, (%edx)
360bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x10(%edx)
361bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x20(%edx)
362bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x30(%edx)
363bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x40(%edx)
364bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x50(%edx)
365bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x60(%edx)
366bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x70(%edx)
367bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$0x80, %edx
368bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$0x80, %ebx
369bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore_shared_cache_loop)
370bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$0x80, %ecx
371bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jb	L(shared_cache_loop_end)
372bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
373bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
374bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore_nt):
375bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$0x80, %ecx
376bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, (%edx)
377bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x10(%edx)
378bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x20(%edx)
379bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x30(%edx)
380bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x40(%edx)
381bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x50(%edx)
382bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x60(%edx)
383bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x70(%edx)
384bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$0x80, %edx
385bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$0x80, %ecx
386bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore_nt)
387bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sfence
388bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(shared_cache_loop_end):
389bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#if defined DATA_CACHE_SIZE || !defined SHARED
390bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	POP (%ebx)
391bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
392bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%ecx, %edx
393bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr	$2, %ecx
394bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
395bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
396bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.pushsection .rodata.sse2,"a",@progbits
397bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (2)
398bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(table_16_128bytes):
399bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_0bytes), L(table_16_128bytes))
400bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_4bytes), L(table_16_128bytes))
401bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_8bytes), L(table_16_128bytes))
402bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_12bytes), L(table_16_128bytes))
403bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_16bytes), L(table_16_128bytes))
404bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_20bytes), L(table_16_128bytes))
405bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_24bytes), L(table_16_128bytes))
406bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_28bytes), L(table_16_128bytes))
407bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_32bytes), L(table_16_128bytes))
408bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_36bytes), L(table_16_128bytes))
409bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_40bytes), L(table_16_128bytes))
410bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_44bytes), L(table_16_128bytes))
411bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_48bytes), L(table_16_128bytes))
412bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_52bytes), L(table_16_128bytes))
413bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_56bytes), L(table_16_128bytes))
414bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_60bytes), L(table_16_128bytes))
415bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_64bytes), L(table_16_128bytes))
416bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_68bytes), L(table_16_128bytes))
417bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_72bytes), L(table_16_128bytes))
418bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_76bytes), L(table_16_128bytes))
419bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_80bytes), L(table_16_128bytes))
420bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_84bytes), L(table_16_128bytes))
421bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_88bytes), L(table_16_128bytes))
422bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_92bytes), L(table_16_128bytes))
423bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_96bytes), L(table_16_128bytes))
424bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_100bytes), L(table_16_128bytes))
425bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_104bytes), L(table_16_128bytes))
426bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_108bytes), L(table_16_128bytes))
427bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_112bytes), L(table_16_128bytes))
428bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_116bytes), L(table_16_128bytes))
429bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_120bytes), L(table_16_128bytes))
430bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_124bytes), L(table_16_128bytes))
431bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.popsection
432bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
433bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
434bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_112bytes):
435bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -112(%edx)
436bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_96bytes):
437bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -96(%edx)
438bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_80bytes):
439bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -80(%edx)
440bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_64bytes):
441bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -64(%edx)
442bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_48bytes):
443bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -48(%edx)
444bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_32bytes):
445bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -32(%edx)
446bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_16bytes):
447bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -16(%edx)
448bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_0bytes):
449bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
450bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
451bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
452bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
453bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_116bytes):
454bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -116(%edx)
455bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_100bytes):
456bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -100(%edx)
457bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_84bytes):
458bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -84(%edx)
459bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_68bytes):
460bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -68(%edx)
461bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_52bytes):
462bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -52(%edx)
463bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_36bytes):
464bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -36(%edx)
465bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_20bytes):
466bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -20(%edx)
467bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_4bytes):
468bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -4(%edx)
469bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
470bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
471bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
472bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
473bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_120bytes):
474bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -120(%edx)
475bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_104bytes):
476bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -104(%edx)
477bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_88bytes):
478bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -88(%edx)
479bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_72bytes):
480bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -72(%edx)
481bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_56bytes):
482bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -56(%edx)
483bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_40bytes):
484bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -40(%edx)
485bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_24bytes):
486bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -24(%edx)
487bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_8bytes):
488bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movq	%xmm0, -8(%edx)
489bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
490bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
491bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
492bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
493bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_124bytes):
494bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -124(%edx)
495bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_108bytes):
496bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -108(%edx)
497bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_92bytes):
498bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -92(%edx)
499bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_76bytes):
500bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -76(%edx)
501bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_60bytes):
502bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -60(%edx)
503bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_44bytes):
504bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -44(%edx)
505bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_28bytes):
506bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -28(%edx)
507bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_12bytes):
508bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movq	%xmm0, -12(%edx)
509bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -4(%edx)
510bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
511bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
512bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
513bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuEND (sse2_memset32_atom)
514