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_BZERO16
75bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define DEST		PARMS
76bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define LEN		DEST+4
77bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
78bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define DEST		PARMS
79bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define CHR		DEST+4
80bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define LEN		CHR+4
81bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
82bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
83bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#if 1
84bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define SETRTNVAL
85bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
86bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define SETRTNVAL	movl DEST(%esp), %eax
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_memset16_atom)
133bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ENTRANCE
134bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
135bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	LEN(%esp), %ecx
136bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef USE_AS_ANDROID
137bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr	$1, %ecx
138bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
139bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef USE_AS_BZERO16
140bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	xor	%eax, %eax
141bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
142bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movzwl	CHR(%esp), %eax
143bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	%eax, %edx
144bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shl	$16, %eax
145bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	or	%edx, %eax
146bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
147bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	DEST(%esp), %edx
148bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$32, %ecx
149bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(32wordsormore)
150bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
151bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_less32words):
152bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	lea	(%edx, %ecx, 2), %edx
153bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_less32words))
154bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
155bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
156bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.pushsection .rodata.sse2,"a",@progbits
157bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (2)
158bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(table_less32words):
159bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_0words), L(table_less32words))
160bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_1words), L(table_less32words))
161bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_2words), L(table_less32words))
162bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_3words), L(table_less32words))
163bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_4words), L(table_less32words))
164bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_5words), L(table_less32words))
165bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_6words), L(table_less32words))
166bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_7words), L(table_less32words))
167bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_8words), L(table_less32words))
168bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_9words), L(table_less32words))
169bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_10words), L(table_less32words))
170bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_11words), L(table_less32words))
171bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_12words), L(table_less32words))
172bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_13words), L(table_less32words))
173bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_14words), L(table_less32words))
174bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_15words), L(table_less32words))
175bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_16words), L(table_less32words))
176bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_17words), L(table_less32words))
177bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_18words), L(table_less32words))
178bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_19words), L(table_less32words))
179bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_20words), L(table_less32words))
180bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_21words), L(table_less32words))
181bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_22words), L(table_less32words))
182bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_23words), L(table_less32words))
183bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_24words), L(table_less32words))
184bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_25words), L(table_less32words))
185bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_26words), L(table_less32words))
186bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_27words), L(table_less32words))
187bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_28words), L(table_less32words))
188bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_29words), L(table_less32words))
189bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_30words), L(table_less32words))
190bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(write_31words), L(table_less32words))
191bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.popsection
192bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
193bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
194bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_28words):
195bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -56(%edx)
196bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -52(%edx)
197bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_24words):
198bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -48(%edx)
199bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -44(%edx)
200bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_20words):
201bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -40(%edx)
202bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -36(%edx)
203bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_16words):
204bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -32(%edx)
205bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -28(%edx)
206bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_12words):
207bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -24(%edx)
208bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -20(%edx)
209bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_8words):
210bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -16(%edx)
211bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -12(%edx)
212bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_4words):
213bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -8(%edx)
214bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -4(%edx)
215bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_0words):
216bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
217bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
218bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
219bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
220bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_29words):
221bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -58(%edx)
222bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -54(%edx)
223bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_25words):
224bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -50(%edx)
225bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -46(%edx)
226bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_21words):
227bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -42(%edx)
228bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -38(%edx)
229bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_17words):
230bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -34(%edx)
231bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -30(%edx)
232bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_13words):
233bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -26(%edx)
234bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -22(%edx)
235bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_9words):
236bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -18(%edx)
237bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -14(%edx)
238bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_5words):
239bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -10(%edx)
240bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -6(%edx)
241bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_1words):
242bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	%ax, -2(%edx)
243bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
244bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
245bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
246bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
247bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_30words):
248bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -60(%edx)
249bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -56(%edx)
250bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_26words):
251bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -52(%edx)
252bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -48(%edx)
253bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_22words):
254bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -44(%edx)
255bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -40(%edx)
256bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_18words):
257bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -36(%edx)
258bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -32(%edx)
259bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_14words):
260bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -28(%edx)
261bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -24(%edx)
262bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_10words):
263bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -20(%edx)
264bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -16(%edx)
265bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_6words):
266bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -12(%edx)
267bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -8(%edx)
268bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_2words):
269bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -4(%edx)
270bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
271bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
272bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
273bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
274bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_31words):
275bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -62(%edx)
276bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -58(%edx)
277bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_27words):
278bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -54(%edx)
279bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -50(%edx)
280bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_23words):
281bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -46(%edx)
282bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -42(%edx)
283bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_19words):
284bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -38(%edx)
285bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -34(%edx)
286bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_15words):
287bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -30(%edx)
288bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -26(%edx)
289bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_11words):
290bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -22(%edx)
291bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -18(%edx)
292bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_7words):
293bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -14(%edx)
294bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -10(%edx)
295bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(write_3words):
296bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -6(%edx)
297bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movw	%ax, -2(%edx)
298bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
299bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
300bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
301bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
302bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
303bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(32wordsormore):
304bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shl	$1, %ecx
305bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	test	$0x01, %edx
306bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jz	L(aligned2bytes)
307bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	%eax, (%edx)
308bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	%eax, -4(%edx, %ecx)
309bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$2, %ecx
310bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$1, %edx
311bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	rol	$8, %eax
312bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned2bytes):
313bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef USE_AS_BZERO16
314bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	pxor	%xmm0, %xmm0
315bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
316bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movd	%eax, %xmm0
317bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	pshufd	$0, %xmm0, %xmm0
318bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
319bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	testl	$0xf, %edx
320bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jz	L(aligned_16)
321bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu/* ECX > 32 and EDX is not 16 byte aligned.  */
322bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(not_aligned_16):
323bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqu	%xmm0, (%edx)
324bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%edx, %eax
325bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	and	$-16, %edx
326bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$16, %edx
327bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	%edx, %eax
328bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%eax, %ecx
329bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movd	%xmm0, %eax
330bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
331bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
332bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16):
333bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$128, %ecx
334bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore)
335bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
336bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_less128bytes):
337bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%ecx, %edx
338bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr	$1, %ecx
339bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
340bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
341bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
342bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore):
343bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef SHARED_CACHE_SIZE
344bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	PUSH (%ebx)
345bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	$SHARED_CACHE_SIZE, %ebx
346bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
347bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# ifdef SHARED
348bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	call	__i686.get_pc_thunk.bx
349bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$_GLOBAL_OFFSET_TABLE_, %ebx
350bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	__x86_shared_cache_size@GOTOFF(%ebx), %ebx
351bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# else
352bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	PUSH (%ebx)
353bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	__x86_shared_cache_size, %ebx
354bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# endif
355bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
356bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	%ebx, %ecx
357bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore_nt_start)
358bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
359bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
360bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#ifdef DATA_CACHE_SIZE
361bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	POP (%ebx)
362bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# define RESTORE_EBX_STATE CFI_PUSH (%ebx)
363bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$DATA_CACHE_SIZE, %ecx
364bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#else
365bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# ifdef SHARED
366bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#  define RESTORE_EBX_STATE
367bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	call	__i686.get_pc_thunk.bx
368bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$_GLOBAL_OFFSET_TABLE_, %ebx
369bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	__x86_data_cache_size@GOTOFF(%ebx), %ecx
370bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# else
371bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	POP (%ebx)
372bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#  define RESTORE_EBX_STATE CFI_PUSH (%ebx)
373bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	__x86_data_cache_size, %ecx
374bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu# endif
375bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
376bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
377bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytes_L2_normal)
378bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	subl	$128, %ecx
379bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore_normal):
380bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$128, %ecx
381bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, (%edx)
382bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x10(%edx)
383bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x20(%edx)
384bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x30(%edx)
385bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x40(%edx)
386bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x50(%edx)
387bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x60(%edx)
388bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x70(%edx)
389bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	lea	128(%edx), %edx
390bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jb	L(128bytesless_normal)
391bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
392bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
393bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$128, %ecx
394bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, (%edx)
395bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x10(%edx)
396bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x20(%edx)
397bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x30(%edx)
398bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x40(%edx)
399bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x50(%edx)
400bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x60(%edx)
401bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x70(%edx)
402bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	lea	128(%edx), %edx
403bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore_normal)
404bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
405bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesless_normal):
406bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	lea	128(%ecx), %ecx
407bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%ecx, %edx
408bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr	$1, %ecx
409bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
410bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
411bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
412bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytes_L2_normal):
413bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	prefetcht0	0x380(%edx)
414bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	prefetcht0	0x3c0(%edx)
415bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$128, %ecx
416bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, (%edx)
417bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x10(%edx)
418bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x20(%edx)
419bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x30(%edx)
420bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x40(%edx)
421bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x50(%edx)
422bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x60(%edx)
423bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movaps	%xmm0, 0x70(%edx)
424bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$128, %edx
425bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$128, %ecx
426bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytes_L2_normal)
427bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
428bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesless_L2_normal):
429bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%ecx, %edx
430bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr	$1, %ecx
431bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
432bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
433bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RESTORE_EBX_STATE
434bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore_nt_start):
435bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	%ebx, %ecx
436bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	mov	%ebx, %eax
437bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	and	$0x7f, %eax
438bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%eax, %ecx
439bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movd	%xmm0, %eax
440bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
441bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore_shared_cache_loop):
442bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	prefetcht0	0x3c0(%edx)
443bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	prefetcht0	0x380(%edx)
444bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$0x80, %ebx
445bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, (%edx)
446bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x10(%edx)
447bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x20(%edx)
448bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x30(%edx)
449bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x40(%edx)
450bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x50(%edx)
451bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x60(%edx)
452bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, 0x70(%edx)
453bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$0x80, %edx
454bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$0x80, %ebx
455bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore_shared_cache_loop)
456bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$0x80, %ecx
457bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jb	L(shared_cache_loop_end)
458bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
459bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(128bytesormore_nt):
460bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sub	$0x80, %ecx
461bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, (%edx)
462bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x10(%edx)
463bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x20(%edx)
464bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x30(%edx)
465bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x40(%edx)
466bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x50(%edx)
467bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x60(%edx)
468bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movntdq	%xmm0, 0x70(%edx)
469bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	$0x80, %edx
470bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	cmp	$0x80, %ecx
471bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	jae	L(128bytesormore_nt)
472bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	sfence
473bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(shared_cache_loop_end):
474bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#if defined DATA_CACHE_SIZE || !defined SHARED
475bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	POP (%ebx)
476bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu#endif
477bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	add	%ecx, %edx
478bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	shr	$1, %ecx
479bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
480bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
481bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
482bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.pushsection .rodata.sse2,"a",@progbits
483bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (2)
484bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(table_16_128bytes):
485bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_0bytes), L(table_16_128bytes))
486bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_2bytes), L(table_16_128bytes))
487bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_4bytes), L(table_16_128bytes))
488bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_6bytes), L(table_16_128bytes))
489bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_8bytes), L(table_16_128bytes))
490bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_10bytes), L(table_16_128bytes))
491bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_12bytes), L(table_16_128bytes))
492bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_14bytes), L(table_16_128bytes))
493bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_16bytes), L(table_16_128bytes))
494bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_18bytes), L(table_16_128bytes))
495bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_20bytes), L(table_16_128bytes))
496bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_22bytes), L(table_16_128bytes))
497bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_24bytes), L(table_16_128bytes))
498bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_26bytes), L(table_16_128bytes))
499bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_28bytes), L(table_16_128bytes))
500bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_30bytes), L(table_16_128bytes))
501bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_32bytes), L(table_16_128bytes))
502bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_34bytes), L(table_16_128bytes))
503bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_36bytes), L(table_16_128bytes))
504bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_38bytes), L(table_16_128bytes))
505bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_40bytes), L(table_16_128bytes))
506bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_42bytes), L(table_16_128bytes))
507bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_44bytes), L(table_16_128bytes))
508bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_46bytes), L(table_16_128bytes))
509bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_48bytes), L(table_16_128bytes))
510bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_50bytes), L(table_16_128bytes))
511bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_52bytes), L(table_16_128bytes))
512bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_54bytes), L(table_16_128bytes))
513bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_56bytes), L(table_16_128bytes))
514bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_58bytes), L(table_16_128bytes))
515bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_60bytes), L(table_16_128bytes))
516bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_62bytes), L(table_16_128bytes))
517bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_64bytes), L(table_16_128bytes))
518bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_66bytes), L(table_16_128bytes))
519bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_68bytes), L(table_16_128bytes))
520bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_70bytes), L(table_16_128bytes))
521bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_72bytes), L(table_16_128bytes))
522bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_74bytes), L(table_16_128bytes))
523bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_76bytes), L(table_16_128bytes))
524bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_78bytes), L(table_16_128bytes))
525bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_80bytes), L(table_16_128bytes))
526bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_82bytes), L(table_16_128bytes))
527bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_84bytes), L(table_16_128bytes))
528bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_86bytes), L(table_16_128bytes))
529bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_88bytes), L(table_16_128bytes))
530bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_90bytes), L(table_16_128bytes))
531bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_92bytes), L(table_16_128bytes))
532bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_94bytes), L(table_16_128bytes))
533bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_96bytes), L(table_16_128bytes))
534bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_98bytes), L(table_16_128bytes))
535bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_100bytes), L(table_16_128bytes))
536bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_102bytes), L(table_16_128bytes))
537bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_104bytes), L(table_16_128bytes))
538bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_106bytes), L(table_16_128bytes))
539bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_108bytes), L(table_16_128bytes))
540bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_110bytes), L(table_16_128bytes))
541bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_112bytes), L(table_16_128bytes))
542bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_114bytes), L(table_16_128bytes))
543bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_116bytes), L(table_16_128bytes))
544bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_118bytes), L(table_16_128bytes))
545bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_120bytes), L(table_16_128bytes))
546bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_122bytes), L(table_16_128bytes))
547bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_124bytes), L(table_16_128bytes))
548bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.int	JMPTBL (L(aligned_16_126bytes), L(table_16_128bytes))
549bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	.popsection
550bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
551bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
552bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
553bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_112bytes):
554bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -112(%edx)
555bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_96bytes):
556bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -96(%edx)
557bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_80bytes):
558bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -80(%edx)
559bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_64bytes):
560bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -64(%edx)
561bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_48bytes):
562bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -48(%edx)
563bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_32bytes):
564bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -32(%edx)
565bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_16bytes):
566bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -16(%edx)
567bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_0bytes):
568bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
569bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
570bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
571bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
572bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
573bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_114bytes):
574bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -114(%edx)
575bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_98bytes):
576bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -98(%edx)
577bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_82bytes):
578bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -82(%edx)
579bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_66bytes):
580bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -66(%edx)
581bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_50bytes):
582bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -50(%edx)
583bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_34bytes):
584bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -34(%edx)
585bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_18bytes):
586bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -18(%edx)
587bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_2bytes):
588bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movw	%ax, -2(%edx)
589bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
590bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
591bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
592bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
593bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_116bytes):
594bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -116(%edx)
595bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_100bytes):
596bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -100(%edx)
597bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_84bytes):
598bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -84(%edx)
599bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_68bytes):
600bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -68(%edx)
601bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_52bytes):
602bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -52(%edx)
603bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_36bytes):
604bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -36(%edx)
605bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_20bytes):
606bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -20(%edx)
607bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_4bytes):
608bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -4(%edx)
609bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
610bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
611bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
612bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
613bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
614bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_118bytes):
615bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -118(%edx)
616bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_102bytes):
617bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -102(%edx)
618bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_86bytes):
619bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -86(%edx)
620bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_70bytes):
621bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -70(%edx)
622bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_54bytes):
623bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -54(%edx)
624bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_38bytes):
625bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -38(%edx)
626bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_22bytes):
627bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -22(%edx)
628bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_6bytes):
629bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -6(%edx)
630bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movw	%ax, -2(%edx)
631bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
632bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
633bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
634bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
635bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
636bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_120bytes):
637bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -120(%edx)
638bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_104bytes):
639bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -104(%edx)
640bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_88bytes):
641bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -88(%edx)
642bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_72bytes):
643bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -72(%edx)
644bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_56bytes):
645bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -56(%edx)
646bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_40bytes):
647bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -40(%edx)
648bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_24bytes):
649bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -24(%edx)
650bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_8bytes):
651bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movq	%xmm0, -8(%edx)
652bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
653bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
654bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
655bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
656bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
657bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_122bytes):
658bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -122(%edx)
659bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_106bytes):
660bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -106(%edx)
661bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_90bytes):
662bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -90(%edx)
663bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_74bytes):
664bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -74(%edx)
665bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_58bytes):
666bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -58(%edx)
667bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_42bytes):
668bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -42(%edx)
669bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_26bytes):
670bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -26(%edx)
671bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_10bytes):
672bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movq	%xmm0, -10(%edx)
673bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movw	%ax, -2(%edx)
674bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
675bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
676bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
677bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
678bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
679bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_124bytes):
680bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -124(%edx)
681bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_108bytes):
682bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -108(%edx)
683bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_92bytes):
684bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -92(%edx)
685bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_76bytes):
686bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -76(%edx)
687bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_60bytes):
688bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -60(%edx)
689bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_44bytes):
690bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -44(%edx)
691bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_28bytes):
692bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -28(%edx)
693bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_12bytes):
694bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movq	%xmm0, -12(%edx)
695bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -4(%edx)
696bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
697bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
698bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
699bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
700bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	ALIGN (4)
701bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_126bytes):
702bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -126(%edx)
703bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_110bytes):
704bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -110(%edx)
705bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_94bytes):
706bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -94(%edx)
707bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_78bytes):
708bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -78(%edx)
709bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_62bytes):
710bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -62(%edx)
711bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_46bytes):
712bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -46(%edx)
713bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_30bytes):
714bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movdqa	%xmm0, -30(%edx)
715bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuL(aligned_16_14bytes):
716bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movq	%xmm0, -14(%edx)
717bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movl	%eax, -6(%edx)
718bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	movw	%ax, -2(%edx)
719bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	SETRTNVAL
720bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu	RETURN
721bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, Hongjiu
722bb12ac9b85adae96cbd38b2220c5da9a9d80bc54Lu, HongjiuEND (sse2_memset16_atom)
723