clarify the purpose of this project
[nyanglibc.git] / string / strcasecmp_l.s
blob9a3570df5fbd9414087869ac84d45ffdecbfbfd4
1 .text
2 .globl __strcasecmp
3 .type __strcasecmp,@function
4 .align 1<<4
5 __strcasecmp:
6 movq __libc_tsd_LOCALE@gottpoff(%rip),%rax
7 mov %fs:(%rax),%rdx
8 .byte 0x0f,0x1f,0x44,0x00,0x00
9 .size __strcasecmp,.-__strcasecmp
10 .weak strcasecmp
11 strcasecmp = __strcasecmp
13 .globl __strcasecmp_l
14 .type __strcasecmp_l,@function
15 .align 1<<4
16 __strcasecmp_l:
17 mov (%rdx), %rax
18 testl $1, 64 +71*8(%rax)
19 jne __strcasecmp_l_nonascii
20 mov %esi, %ecx
21 mov %edi, %eax
22 and $0x3f, %rcx
23 and $0x3f, %rax
24 .section .rodata.cst16,"aM",@progbits,16
25 .align 16
26 .Lbelowupper:
27 .quad 0x4040404040404040
28 .quad 0x4040404040404040
29 .Ltopupper:
30 .quad 0x5b5b5b5b5b5b5b5b
31 .quad 0x5b5b5b5b5b5b5b5b
32 .Ltouppermask:
33 .quad 0x2020202020202020
34 .quad 0x2020202020202020
35 .previous
36 movdqa .Lbelowupper(%rip), %xmm5
37 movdqa .Ltopupper(%rip), %xmm6
38 movdqa .Ltouppermask(%rip), %xmm7
39 cmp $0x30, %ecx
40 ja .Lcrosscache
41 cmp $0x30, %eax
42 ja .Lcrosscache
43 movlpd (%rdi), %xmm1
44 movlpd (%rsi), %xmm2
45 movhpd 8(%rdi), %xmm1
46 movhpd 8(%rsi), %xmm2
47 movdqa %xmm1, %xmm8
48 movdqa %xmm6, %xmm9
49 movdqa %xmm2, %xmm10
50 movdqa %xmm6, %xmm11
51 pcmpgtb %xmm5, %xmm8
52 pcmpgtb %xmm1, %xmm9
53 pcmpgtb %xmm5, %xmm10
54 pcmpgtb %xmm2, %xmm11
55 pand %xmm9, %xmm8
56 pand %xmm11, %xmm10
57 pand %xmm7, %xmm8
58 pand %xmm7, %xmm10
59 por %xmm8, %xmm1
60 por %xmm10, %xmm2
61 pxor %xmm0, %xmm0
62 pcmpeqb %xmm1, %xmm0
63 pcmpeqb %xmm2, %xmm1
64 psubb %xmm0, %xmm1
65 pmovmskb %xmm1, %edx
66 sub $0xffff, %edx
67 jnz .Lless16bytes
68 add $16, %rsi
69 add $16, %rdi
70 .p2align 4
71 .Lcrosscache:
72 and $0xfffffffffffffff0, %rsi
73 and $0xfffffffffffffff0, %rdi
74 mov $0xffff, %edx
75 xor %r8d, %r8d
76 and $0xf, %ecx
77 and $0xf, %eax
78 cmp %eax, %ecx
79 je .Lashr_0
80 ja .Lbigger
81 mov %edx, %r8d
82 xchg %ecx, %eax
83 xchg %rsi, %rdi
84 .Lbigger:
85 lea 15(%rax), %r9
86 sub %rcx, %r9
87 lea .Lunaligned_table(%rip), %r10
88 movslq (%r10, %r9,4), %r9
89 lea (%r10, %r9), %r10
90 jmp *%r10
91 .p2align 4
92 .Lashr_0:
93 movdqa (%rsi), %xmm1
94 pxor %xmm0, %xmm0
95 pcmpeqb %xmm1, %xmm0
96 movdqa (%rdi), %xmm2
97 movdqa %xmm1, %xmm8
98 movdqa %xmm6, %xmm9
99 movdqa %xmm2, %xmm10
100 movdqa %xmm6, %xmm11
101 pcmpgtb %xmm5, %xmm8
102 pcmpgtb %xmm1, %xmm9
103 pcmpgtb %xmm5, %xmm10
104 pcmpgtb %xmm2, %xmm11
105 pand %xmm9, %xmm8
106 pand %xmm11, %xmm10
107 pand %xmm7, %xmm8
108 pand %xmm7, %xmm10
109 por %xmm8, %xmm1
110 por %xmm10, %xmm2
111 pcmpeqb %xmm2, %xmm1
112 psubb %xmm0, %xmm1
113 pmovmskb %xmm1, %r9d
114 shr %cl, %edx
115 shr %cl, %r9d
116 sub %r9d, %edx
117 jne .Lless32bytes
119 mov $16, %rcx
120 mov $16, %r9
121 pxor %xmm0, %xmm0
122 .p2align 4
123 .Lloop_ashr_0:
124 movdqa (%rsi, %rcx), %xmm1
125 movdqa (%rdi, %rcx), %xmm2
126 movdqa %xmm1, %xmm8
127 movdqa %xmm6, %xmm9
128 movdqa %xmm2, %xmm10
129 movdqa %xmm6, %xmm11
130 pcmpgtb %xmm5, %xmm8
131 pcmpgtb %xmm1, %xmm9
132 pcmpgtb %xmm5, %xmm10
133 pcmpgtb %xmm2, %xmm11
134 pand %xmm9, %xmm8
135 pand %xmm11, %xmm10
136 pand %xmm7, %xmm8
137 pand %xmm7, %xmm10
138 por %xmm8, %xmm1
139 por %xmm10, %xmm2
140 pcmpeqb %xmm1, %xmm0
141 pcmpeqb %xmm2, %xmm1
142 psubb %xmm0, %xmm1
143 pmovmskb %xmm1, %edx
144 sub $0xffff, %edx
145 jnz .Lexit
146 add $16, %rcx
147 movdqa (%rsi, %rcx), %xmm1
148 movdqa (%rdi, %rcx), %xmm2
149 movdqa %xmm1, %xmm8
150 movdqa %xmm6, %xmm9
151 movdqa %xmm2, %xmm10
152 movdqa %xmm6, %xmm11
153 pcmpgtb %xmm5, %xmm8
154 pcmpgtb %xmm1, %xmm9
155 pcmpgtb %xmm5, %xmm10
156 pcmpgtb %xmm2, %xmm11
157 pand %xmm9, %xmm8
158 pand %xmm11, %xmm10
159 pand %xmm7, %xmm8
160 pand %xmm7, %xmm10
161 por %xmm8, %xmm1
162 por %xmm10, %xmm2
163 pcmpeqb %xmm1, %xmm0
164 pcmpeqb %xmm2, %xmm1
165 psubb %xmm0, %xmm1
166 pmovmskb %xmm1, %edx
167 sub $0xffff, %edx
168 jnz .Lexit
169 add $16, %rcx
170 jmp .Lloop_ashr_0
171 .p2align 4
172 .Lashr_1:
173 pxor %xmm0, %xmm0
174 movdqa (%rdi), %xmm2
175 movdqa (%rsi), %xmm1
176 pcmpeqb %xmm1, %xmm0
177 pslldq $15, %xmm2
178 movdqa %xmm1, %xmm8
179 movdqa %xmm6, %xmm9
180 movdqa %xmm2, %xmm10
181 movdqa %xmm6, %xmm11
182 pcmpgtb %xmm5, %xmm8
183 pcmpgtb %xmm1, %xmm9
184 pcmpgtb %xmm5, %xmm10
185 pcmpgtb %xmm2, %xmm11
186 pand %xmm9, %xmm8
187 pand %xmm11, %xmm10
188 pand %xmm7, %xmm8
189 pand %xmm7, %xmm10
190 por %xmm8, %xmm1
191 por %xmm10, %xmm2
192 pcmpeqb %xmm1, %xmm2
193 psubb %xmm0, %xmm2
194 pmovmskb %xmm2, %r9d
195 shr %cl, %edx
196 shr %cl, %r9d
197 sub %r9d, %edx
198 jnz .Lless32bytes
199 movdqa (%rdi), %xmm3
201 pxor %xmm0, %xmm0
202 mov $16, %rcx
203 mov $1, %r9d
204 lea 1(%rdi), %r10
205 and $0xfff, %r10
206 sub $0x1000, %r10
207 .p2align 4
208 .Lloop_ashr_1:
209 add $16, %r10
210 jg .Lnibble_ashr_1
211 .Lgobble_ashr_1:
212 movdqa (%rsi, %rcx), %xmm1
213 movdqa (%rdi, %rcx), %xmm2
214 movdqa %xmm2, %xmm4
215 psrldq $1, %xmm3
216 pslldq $15, %xmm2
217 por %xmm3, %xmm2
218 movdqa %xmm1, %xmm8
219 movdqa %xmm6, %xmm9
220 movdqa %xmm2, %xmm10
221 movdqa %xmm6, %xmm11
222 pcmpgtb %xmm5, %xmm8
223 pcmpgtb %xmm1, %xmm9
224 pcmpgtb %xmm5, %xmm10
225 pcmpgtb %xmm2, %xmm11
226 pand %xmm9, %xmm8
227 pand %xmm11, %xmm10
228 pand %xmm7, %xmm8
229 pand %xmm7, %xmm10
230 por %xmm8, %xmm1
231 por %xmm10, %xmm2
232 pcmpeqb %xmm1, %xmm0
233 pcmpeqb %xmm2, %xmm1
234 psubb %xmm0, %xmm1
235 pmovmskb %xmm1, %edx
236 sub $0xffff, %edx
237 jnz .Lexit
238 add $16, %rcx
239 movdqa %xmm4, %xmm3
240 add $16, %r10
241 jg .Lnibble_ashr_1
242 movdqa (%rsi, %rcx), %xmm1
243 movdqa (%rdi, %rcx), %xmm2
244 movdqa %xmm2, %xmm4
245 psrldq $1, %xmm3
246 pslldq $15, %xmm2
247 por %xmm3, %xmm2
248 movdqa %xmm1, %xmm8
249 movdqa %xmm6, %xmm9
250 movdqa %xmm2, %xmm10
251 movdqa %xmm6, %xmm11
252 pcmpgtb %xmm5, %xmm8
253 pcmpgtb %xmm1, %xmm9
254 pcmpgtb %xmm5, %xmm10
255 pcmpgtb %xmm2, %xmm11
256 pand %xmm9, %xmm8
257 pand %xmm11, %xmm10
258 pand %xmm7, %xmm8
259 pand %xmm7, %xmm10
260 por %xmm8, %xmm1
261 por %xmm10, %xmm2
262 pcmpeqb %xmm1, %xmm0
263 pcmpeqb %xmm2, %xmm1
264 psubb %xmm0, %xmm1
265 pmovmskb %xmm1, %edx
266 sub $0xffff, %edx
267 jnz .Lexit
268 add $16, %rcx
269 movdqa %xmm4, %xmm3
270 jmp .Lloop_ashr_1
271 .p2align 4
272 .Lnibble_ashr_1:
273 pcmpeqb %xmm3, %xmm0
274 pmovmskb %xmm0, %edx
275 test $0xfffe, %edx
276 jnz .Lashr_1_exittail
277 pxor %xmm0, %xmm0
278 sub $0x1000, %r10
279 jmp .Lgobble_ashr_1
280 .p2align 4
281 .Lashr_1_exittail:
282 movdqa (%rsi, %rcx), %xmm1
283 psrldq $1, %xmm0
284 psrldq $1, %xmm3
285 jmp .Laftertail
286 .p2align 4
287 .Lashr_2:
288 pxor %xmm0, %xmm0
289 movdqa (%rdi), %xmm2
290 movdqa (%rsi), %xmm1
291 pcmpeqb %xmm1, %xmm0
292 pslldq $14, %xmm2
293 movdqa %xmm1, %xmm8
294 movdqa %xmm6, %xmm9
295 movdqa %xmm2, %xmm10
296 movdqa %xmm6, %xmm11
297 pcmpgtb %xmm5, %xmm8
298 pcmpgtb %xmm1, %xmm9
299 pcmpgtb %xmm5, %xmm10
300 pcmpgtb %xmm2, %xmm11
301 pand %xmm9, %xmm8
302 pand %xmm11, %xmm10
303 pand %xmm7, %xmm8
304 pand %xmm7, %xmm10
305 por %xmm8, %xmm1
306 por %xmm10, %xmm2
307 pcmpeqb %xmm1, %xmm2
308 psubb %xmm0, %xmm2
309 pmovmskb %xmm2, %r9d
310 shr %cl, %edx
311 shr %cl, %r9d
312 sub %r9d, %edx
313 jnz .Lless32bytes
314 movdqa (%rdi), %xmm3
316 pxor %xmm0, %xmm0
317 mov $16, %rcx
318 mov $2, %r9d
319 lea 2(%rdi), %r10
320 and $0xfff, %r10
321 sub $0x1000, %r10
322 .p2align 4
323 .Lloop_ashr_2:
324 add $16, %r10
325 jg .Lnibble_ashr_2
326 .Lgobble_ashr_2:
327 movdqa (%rsi, %rcx), %xmm1
328 movdqa (%rdi, %rcx), %xmm2
329 movdqa %xmm2, %xmm4
330 psrldq $2, %xmm3
331 pslldq $14, %xmm2
332 por %xmm3, %xmm2
333 movdqa %xmm1, %xmm8
334 movdqa %xmm6, %xmm9
335 movdqa %xmm2, %xmm10
336 movdqa %xmm6, %xmm11
337 pcmpgtb %xmm5, %xmm8
338 pcmpgtb %xmm1, %xmm9
339 pcmpgtb %xmm5, %xmm10
340 pcmpgtb %xmm2, %xmm11
341 pand %xmm9, %xmm8
342 pand %xmm11, %xmm10
343 pand %xmm7, %xmm8
344 pand %xmm7, %xmm10
345 por %xmm8, %xmm1
346 por %xmm10, %xmm2
347 pcmpeqb %xmm1, %xmm0
348 pcmpeqb %xmm2, %xmm1
349 psubb %xmm0, %xmm1
350 pmovmskb %xmm1, %edx
351 sub $0xffff, %edx
352 jnz .Lexit
353 add $16, %rcx
354 movdqa %xmm4, %xmm3
355 add $16, %r10
356 jg .Lnibble_ashr_2
357 movdqa (%rsi, %rcx), %xmm1
358 movdqa (%rdi, %rcx), %xmm2
359 movdqa %xmm2, %xmm4
360 psrldq $2, %xmm3
361 pslldq $14, %xmm2
362 por %xmm3, %xmm2
363 movdqa %xmm1, %xmm8
364 movdqa %xmm6, %xmm9
365 movdqa %xmm2, %xmm10
366 movdqa %xmm6, %xmm11
367 pcmpgtb %xmm5, %xmm8
368 pcmpgtb %xmm1, %xmm9
369 pcmpgtb %xmm5, %xmm10
370 pcmpgtb %xmm2, %xmm11
371 pand %xmm9, %xmm8
372 pand %xmm11, %xmm10
373 pand %xmm7, %xmm8
374 pand %xmm7, %xmm10
375 por %xmm8, %xmm1
376 por %xmm10, %xmm2
377 pcmpeqb %xmm1, %xmm0
378 pcmpeqb %xmm2, %xmm1
379 psubb %xmm0, %xmm1
380 pmovmskb %xmm1, %edx
381 sub $0xffff, %edx
382 jnz .Lexit
383 add $16, %rcx
384 movdqa %xmm4, %xmm3
385 jmp .Lloop_ashr_2
386 .p2align 4
387 .Lnibble_ashr_2:
388 pcmpeqb %xmm3, %xmm0
389 pmovmskb %xmm0, %edx
390 test $0xfffc, %edx
391 jnz .Lashr_2_exittail
392 pxor %xmm0, %xmm0
393 sub $0x1000, %r10
394 jmp .Lgobble_ashr_2
395 .p2align 4
396 .Lashr_2_exittail:
397 movdqa (%rsi, %rcx), %xmm1
398 psrldq $2, %xmm0
399 psrldq $2, %xmm3
400 jmp .Laftertail
401 .p2align 4
402 .Lashr_3:
403 pxor %xmm0, %xmm0
404 movdqa (%rdi), %xmm2
405 movdqa (%rsi), %xmm1
406 pcmpeqb %xmm1, %xmm0
407 pslldq $13, %xmm2
408 movdqa %xmm1, %xmm8
409 movdqa %xmm6, %xmm9
410 movdqa %xmm2, %xmm10
411 movdqa %xmm6, %xmm11
412 pcmpgtb %xmm5, %xmm8
413 pcmpgtb %xmm1, %xmm9
414 pcmpgtb %xmm5, %xmm10
415 pcmpgtb %xmm2, %xmm11
416 pand %xmm9, %xmm8
417 pand %xmm11, %xmm10
418 pand %xmm7, %xmm8
419 pand %xmm7, %xmm10
420 por %xmm8, %xmm1
421 por %xmm10, %xmm2
422 pcmpeqb %xmm1, %xmm2
423 psubb %xmm0, %xmm2
424 pmovmskb %xmm2, %r9d
425 shr %cl, %edx
426 shr %cl, %r9d
427 sub %r9d, %edx
428 jnz .Lless32bytes
429 movdqa (%rdi), %xmm3
431 pxor %xmm0, %xmm0
432 mov $16, %rcx
433 mov $3, %r9d
434 lea 3(%rdi), %r10
435 and $0xfff, %r10
436 sub $0x1000, %r10
437 .p2align 4
438 .Lloop_ashr_3:
439 add $16, %r10
440 jg .Lnibble_ashr_3
441 .Lgobble_ashr_3:
442 movdqa (%rsi, %rcx), %xmm1
443 movdqa (%rdi, %rcx), %xmm2
444 movdqa %xmm2, %xmm4
445 psrldq $3, %xmm3
446 pslldq $13, %xmm2
447 por %xmm3, %xmm2
448 movdqa %xmm1, %xmm8
449 movdqa %xmm6, %xmm9
450 movdqa %xmm2, %xmm10
451 movdqa %xmm6, %xmm11
452 pcmpgtb %xmm5, %xmm8
453 pcmpgtb %xmm1, %xmm9
454 pcmpgtb %xmm5, %xmm10
455 pcmpgtb %xmm2, %xmm11
456 pand %xmm9, %xmm8
457 pand %xmm11, %xmm10
458 pand %xmm7, %xmm8
459 pand %xmm7, %xmm10
460 por %xmm8, %xmm1
461 por %xmm10, %xmm2
462 pcmpeqb %xmm1, %xmm0
463 pcmpeqb %xmm2, %xmm1
464 psubb %xmm0, %xmm1
465 pmovmskb %xmm1, %edx
466 sub $0xffff, %edx
467 jnz .Lexit
468 add $16, %rcx
469 movdqa %xmm4, %xmm3
470 add $16, %r10
471 jg .Lnibble_ashr_3
472 movdqa (%rsi, %rcx), %xmm1
473 movdqa (%rdi, %rcx), %xmm2
474 movdqa %xmm2, %xmm4
475 psrldq $3, %xmm3
476 pslldq $13, %xmm2
477 por %xmm3, %xmm2
478 movdqa %xmm1, %xmm8
479 movdqa %xmm6, %xmm9
480 movdqa %xmm2, %xmm10
481 movdqa %xmm6, %xmm11
482 pcmpgtb %xmm5, %xmm8
483 pcmpgtb %xmm1, %xmm9
484 pcmpgtb %xmm5, %xmm10
485 pcmpgtb %xmm2, %xmm11
486 pand %xmm9, %xmm8
487 pand %xmm11, %xmm10
488 pand %xmm7, %xmm8
489 pand %xmm7, %xmm10
490 por %xmm8, %xmm1
491 por %xmm10, %xmm2
492 pcmpeqb %xmm1, %xmm0
493 pcmpeqb %xmm2, %xmm1
494 psubb %xmm0, %xmm1
495 pmovmskb %xmm1, %edx
496 sub $0xffff, %edx
497 jnz .Lexit
498 add $16, %rcx
499 movdqa %xmm4, %xmm3
500 jmp .Lloop_ashr_3
501 .p2align 4
502 .Lnibble_ashr_3:
503 pcmpeqb %xmm3, %xmm0
504 pmovmskb %xmm0, %edx
505 test $0xfff8, %edx
506 jnz .Lashr_3_exittail
507 pxor %xmm0, %xmm0
508 sub $0x1000, %r10
509 jmp .Lgobble_ashr_3
510 .p2align 4
511 .Lashr_3_exittail:
512 movdqa (%rsi, %rcx), %xmm1
513 psrldq $3, %xmm0
514 psrldq $3, %xmm3
515 jmp .Laftertail
516 .p2align 4
517 .Lashr_4:
518 pxor %xmm0, %xmm0
519 movdqa (%rdi), %xmm2
520 movdqa (%rsi), %xmm1
521 pcmpeqb %xmm1, %xmm0
522 pslldq $12, %xmm2
523 movdqa %xmm1, %xmm8
524 movdqa %xmm6, %xmm9
525 movdqa %xmm2, %xmm10
526 movdqa %xmm6, %xmm11
527 pcmpgtb %xmm5, %xmm8
528 pcmpgtb %xmm1, %xmm9
529 pcmpgtb %xmm5, %xmm10
530 pcmpgtb %xmm2, %xmm11
531 pand %xmm9, %xmm8
532 pand %xmm11, %xmm10
533 pand %xmm7, %xmm8
534 pand %xmm7, %xmm10
535 por %xmm8, %xmm1
536 por %xmm10, %xmm2
537 pcmpeqb %xmm1, %xmm2
538 psubb %xmm0, %xmm2
539 pmovmskb %xmm2, %r9d
540 shr %cl, %edx
541 shr %cl, %r9d
542 sub %r9d, %edx
543 jnz .Lless32bytes
544 movdqa (%rdi), %xmm3
546 pxor %xmm0, %xmm0
547 mov $16, %rcx
548 mov $4, %r9d
549 lea 4(%rdi), %r10
550 and $0xfff, %r10
551 sub $0x1000, %r10
552 .p2align 4
553 .Lloop_ashr_4:
554 add $16, %r10
555 jg .Lnibble_ashr_4
556 .Lgobble_ashr_4:
557 movdqa (%rsi, %rcx), %xmm1
558 movdqa (%rdi, %rcx), %xmm2
559 movdqa %xmm2, %xmm4
560 psrldq $4, %xmm3
561 pslldq $12, %xmm2
562 por %xmm3, %xmm2
563 movdqa %xmm1, %xmm8
564 movdqa %xmm6, %xmm9
565 movdqa %xmm2, %xmm10
566 movdqa %xmm6, %xmm11
567 pcmpgtb %xmm5, %xmm8
568 pcmpgtb %xmm1, %xmm9
569 pcmpgtb %xmm5, %xmm10
570 pcmpgtb %xmm2, %xmm11
571 pand %xmm9, %xmm8
572 pand %xmm11, %xmm10
573 pand %xmm7, %xmm8
574 pand %xmm7, %xmm10
575 por %xmm8, %xmm1
576 por %xmm10, %xmm2
577 pcmpeqb %xmm1, %xmm0
578 pcmpeqb %xmm2, %xmm1
579 psubb %xmm0, %xmm1
580 pmovmskb %xmm1, %edx
581 sub $0xffff, %edx
582 jnz .Lexit
583 add $16, %rcx
584 movdqa %xmm4, %xmm3
585 add $16, %r10
586 jg .Lnibble_ashr_4
587 movdqa (%rsi, %rcx), %xmm1
588 movdqa (%rdi, %rcx), %xmm2
589 movdqa %xmm2, %xmm4
590 psrldq $4, %xmm3
591 pslldq $12, %xmm2
592 por %xmm3, %xmm2
593 movdqa %xmm1, %xmm8
594 movdqa %xmm6, %xmm9
595 movdqa %xmm2, %xmm10
596 movdqa %xmm6, %xmm11
597 pcmpgtb %xmm5, %xmm8
598 pcmpgtb %xmm1, %xmm9
599 pcmpgtb %xmm5, %xmm10
600 pcmpgtb %xmm2, %xmm11
601 pand %xmm9, %xmm8
602 pand %xmm11, %xmm10
603 pand %xmm7, %xmm8
604 pand %xmm7, %xmm10
605 por %xmm8, %xmm1
606 por %xmm10, %xmm2
607 pcmpeqb %xmm1, %xmm0
608 pcmpeqb %xmm2, %xmm1
609 psubb %xmm0, %xmm1
610 pmovmskb %xmm1, %edx
611 sub $0xffff, %edx
612 jnz .Lexit
613 add $16, %rcx
614 movdqa %xmm4, %xmm3
615 jmp .Lloop_ashr_4
616 .p2align 4
617 .Lnibble_ashr_4:
618 pcmpeqb %xmm3, %xmm0
619 pmovmskb %xmm0, %edx
620 test $0xfff0, %edx
621 jnz .Lashr_4_exittail
622 pxor %xmm0, %xmm0
623 sub $0x1000, %r10
624 jmp .Lgobble_ashr_4
625 .p2align 4
626 .Lashr_4_exittail:
627 movdqa (%rsi, %rcx), %xmm1
628 psrldq $4, %xmm0
629 psrldq $4, %xmm3
630 jmp .Laftertail
631 .p2align 4
632 .Lashr_5:
633 pxor %xmm0, %xmm0
634 movdqa (%rdi), %xmm2
635 movdqa (%rsi), %xmm1
636 pcmpeqb %xmm1, %xmm0
637 pslldq $11, %xmm2
638 movdqa %xmm1, %xmm8
639 movdqa %xmm6, %xmm9
640 movdqa %xmm2, %xmm10
641 movdqa %xmm6, %xmm11
642 pcmpgtb %xmm5, %xmm8
643 pcmpgtb %xmm1, %xmm9
644 pcmpgtb %xmm5, %xmm10
645 pcmpgtb %xmm2, %xmm11
646 pand %xmm9, %xmm8
647 pand %xmm11, %xmm10
648 pand %xmm7, %xmm8
649 pand %xmm7, %xmm10
650 por %xmm8, %xmm1
651 por %xmm10, %xmm2
652 pcmpeqb %xmm1, %xmm2
653 psubb %xmm0, %xmm2
654 pmovmskb %xmm2, %r9d
655 shr %cl, %edx
656 shr %cl, %r9d
657 sub %r9d, %edx
658 jnz .Lless32bytes
659 movdqa (%rdi), %xmm3
661 pxor %xmm0, %xmm0
662 mov $16, %rcx
663 mov $5, %r9d
664 lea 5(%rdi), %r10
665 and $0xfff, %r10
666 sub $0x1000, %r10
667 .p2align 4
668 .Lloop_ashr_5:
669 add $16, %r10
670 jg .Lnibble_ashr_5
671 .Lgobble_ashr_5:
672 movdqa (%rsi, %rcx), %xmm1
673 movdqa (%rdi, %rcx), %xmm2
674 movdqa %xmm2, %xmm4
675 psrldq $5, %xmm3
676 pslldq $11, %xmm2
677 por %xmm3, %xmm2
678 movdqa %xmm1, %xmm8
679 movdqa %xmm6, %xmm9
680 movdqa %xmm2, %xmm10
681 movdqa %xmm6, %xmm11
682 pcmpgtb %xmm5, %xmm8
683 pcmpgtb %xmm1, %xmm9
684 pcmpgtb %xmm5, %xmm10
685 pcmpgtb %xmm2, %xmm11
686 pand %xmm9, %xmm8
687 pand %xmm11, %xmm10
688 pand %xmm7, %xmm8
689 pand %xmm7, %xmm10
690 por %xmm8, %xmm1
691 por %xmm10, %xmm2
692 pcmpeqb %xmm1, %xmm0
693 pcmpeqb %xmm2, %xmm1
694 psubb %xmm0, %xmm1
695 pmovmskb %xmm1, %edx
696 sub $0xffff, %edx
697 jnz .Lexit
698 add $16, %rcx
699 movdqa %xmm4, %xmm3
700 add $16, %r10
701 jg .Lnibble_ashr_5
702 movdqa (%rsi, %rcx), %xmm1
703 movdqa (%rdi, %rcx), %xmm2
704 movdqa %xmm2, %xmm4
705 psrldq $5, %xmm3
706 pslldq $11, %xmm2
707 por %xmm3, %xmm2
708 movdqa %xmm1, %xmm8
709 movdqa %xmm6, %xmm9
710 movdqa %xmm2, %xmm10
711 movdqa %xmm6, %xmm11
712 pcmpgtb %xmm5, %xmm8
713 pcmpgtb %xmm1, %xmm9
714 pcmpgtb %xmm5, %xmm10
715 pcmpgtb %xmm2, %xmm11
716 pand %xmm9, %xmm8
717 pand %xmm11, %xmm10
718 pand %xmm7, %xmm8
719 pand %xmm7, %xmm10
720 por %xmm8, %xmm1
721 por %xmm10, %xmm2
722 pcmpeqb %xmm1, %xmm0
723 pcmpeqb %xmm2, %xmm1
724 psubb %xmm0, %xmm1
725 pmovmskb %xmm1, %edx
726 sub $0xffff, %edx
727 jnz .Lexit
728 add $16, %rcx
729 movdqa %xmm4, %xmm3
730 jmp .Lloop_ashr_5
731 .p2align 4
732 .Lnibble_ashr_5:
733 pcmpeqb %xmm3, %xmm0
734 pmovmskb %xmm0, %edx
735 test $0xffe0, %edx
736 jnz .Lashr_5_exittail
737 pxor %xmm0, %xmm0
738 sub $0x1000, %r10
739 jmp .Lgobble_ashr_5
740 .p2align 4
741 .Lashr_5_exittail:
742 movdqa (%rsi, %rcx), %xmm1
743 psrldq $5, %xmm0
744 psrldq $5, %xmm3
745 jmp .Laftertail
746 .p2align 4
747 .Lashr_6:
748 pxor %xmm0, %xmm0
749 movdqa (%rdi), %xmm2
750 movdqa (%rsi), %xmm1
751 pcmpeqb %xmm1, %xmm0
752 pslldq $10, %xmm2
753 movdqa %xmm1, %xmm8
754 movdqa %xmm6, %xmm9
755 movdqa %xmm2, %xmm10
756 movdqa %xmm6, %xmm11
757 pcmpgtb %xmm5, %xmm8
758 pcmpgtb %xmm1, %xmm9
759 pcmpgtb %xmm5, %xmm10
760 pcmpgtb %xmm2, %xmm11
761 pand %xmm9, %xmm8
762 pand %xmm11, %xmm10
763 pand %xmm7, %xmm8
764 pand %xmm7, %xmm10
765 por %xmm8, %xmm1
766 por %xmm10, %xmm2
767 pcmpeqb %xmm1, %xmm2
768 psubb %xmm0, %xmm2
769 pmovmskb %xmm2, %r9d
770 shr %cl, %edx
771 shr %cl, %r9d
772 sub %r9d, %edx
773 jnz .Lless32bytes
774 movdqa (%rdi), %xmm3
776 pxor %xmm0, %xmm0
777 mov $16, %rcx
778 mov $6, %r9d
779 lea 6(%rdi), %r10
780 and $0xfff, %r10
781 sub $0x1000, %r10
782 .p2align 4
783 .Lloop_ashr_6:
784 add $16, %r10
785 jg .Lnibble_ashr_6
786 .Lgobble_ashr_6:
787 movdqa (%rsi, %rcx), %xmm1
788 movdqa (%rdi, %rcx), %xmm2
789 movdqa %xmm2, %xmm4
790 psrldq $6, %xmm3
791 pslldq $10, %xmm2
792 por %xmm3, %xmm2
793 movdqa %xmm1, %xmm8
794 movdqa %xmm6, %xmm9
795 movdqa %xmm2, %xmm10
796 movdqa %xmm6, %xmm11
797 pcmpgtb %xmm5, %xmm8
798 pcmpgtb %xmm1, %xmm9
799 pcmpgtb %xmm5, %xmm10
800 pcmpgtb %xmm2, %xmm11
801 pand %xmm9, %xmm8
802 pand %xmm11, %xmm10
803 pand %xmm7, %xmm8
804 pand %xmm7, %xmm10
805 por %xmm8, %xmm1
806 por %xmm10, %xmm2
807 pcmpeqb %xmm1, %xmm0
808 pcmpeqb %xmm2, %xmm1
809 psubb %xmm0, %xmm1
810 pmovmskb %xmm1, %edx
811 sub $0xffff, %edx
812 jnz .Lexit
813 add $16, %rcx
814 movdqa %xmm4, %xmm3
815 add $16, %r10
816 jg .Lnibble_ashr_6
817 movdqa (%rsi, %rcx), %xmm1
818 movdqa (%rdi, %rcx), %xmm2
819 movdqa %xmm2, %xmm4
820 psrldq $6, %xmm3
821 pslldq $10, %xmm2
822 por %xmm3, %xmm2
823 movdqa %xmm1, %xmm8
824 movdqa %xmm6, %xmm9
825 movdqa %xmm2, %xmm10
826 movdqa %xmm6, %xmm11
827 pcmpgtb %xmm5, %xmm8
828 pcmpgtb %xmm1, %xmm9
829 pcmpgtb %xmm5, %xmm10
830 pcmpgtb %xmm2, %xmm11
831 pand %xmm9, %xmm8
832 pand %xmm11, %xmm10
833 pand %xmm7, %xmm8
834 pand %xmm7, %xmm10
835 por %xmm8, %xmm1
836 por %xmm10, %xmm2
837 pcmpeqb %xmm1, %xmm0
838 pcmpeqb %xmm2, %xmm1
839 psubb %xmm0, %xmm1
840 pmovmskb %xmm1, %edx
841 sub $0xffff, %edx
842 jnz .Lexit
843 add $16, %rcx
844 movdqa %xmm4, %xmm3
845 jmp .Lloop_ashr_6
846 .p2align 4
847 .Lnibble_ashr_6:
848 pcmpeqb %xmm3, %xmm0
849 pmovmskb %xmm0, %edx
850 test $0xffc0, %edx
851 jnz .Lashr_6_exittail
852 pxor %xmm0, %xmm0
853 sub $0x1000, %r10
854 jmp .Lgobble_ashr_6
855 .p2align 4
856 .Lashr_6_exittail:
857 movdqa (%rsi, %rcx), %xmm1
858 psrldq $6, %xmm0
859 psrldq $6, %xmm3
860 jmp .Laftertail
861 .p2align 4
862 .Lashr_7:
863 pxor %xmm0, %xmm0
864 movdqa (%rdi), %xmm2
865 movdqa (%rsi), %xmm1
866 pcmpeqb %xmm1, %xmm0
867 pslldq $9, %xmm2
868 movdqa %xmm1, %xmm8
869 movdqa %xmm6, %xmm9
870 movdqa %xmm2, %xmm10
871 movdqa %xmm6, %xmm11
872 pcmpgtb %xmm5, %xmm8
873 pcmpgtb %xmm1, %xmm9
874 pcmpgtb %xmm5, %xmm10
875 pcmpgtb %xmm2, %xmm11
876 pand %xmm9, %xmm8
877 pand %xmm11, %xmm10
878 pand %xmm7, %xmm8
879 pand %xmm7, %xmm10
880 por %xmm8, %xmm1
881 por %xmm10, %xmm2
882 pcmpeqb %xmm1, %xmm2
883 psubb %xmm0, %xmm2
884 pmovmskb %xmm2, %r9d
885 shr %cl, %edx
886 shr %cl, %r9d
887 sub %r9d, %edx
888 jnz .Lless32bytes
889 movdqa (%rdi), %xmm3
891 pxor %xmm0, %xmm0
892 mov $16, %rcx
893 mov $7, %r9d
894 lea 7(%rdi), %r10
895 and $0xfff, %r10
896 sub $0x1000, %r10
897 .p2align 4
898 .Lloop_ashr_7:
899 add $16, %r10
900 jg .Lnibble_ashr_7
901 .Lgobble_ashr_7:
902 movdqa (%rsi, %rcx), %xmm1
903 movdqa (%rdi, %rcx), %xmm2
904 movdqa %xmm2, %xmm4
905 psrldq $7, %xmm3
906 pslldq $9, %xmm2
907 por %xmm3, %xmm2
908 movdqa %xmm1, %xmm8
909 movdqa %xmm6, %xmm9
910 movdqa %xmm2, %xmm10
911 movdqa %xmm6, %xmm11
912 pcmpgtb %xmm5, %xmm8
913 pcmpgtb %xmm1, %xmm9
914 pcmpgtb %xmm5, %xmm10
915 pcmpgtb %xmm2, %xmm11
916 pand %xmm9, %xmm8
917 pand %xmm11, %xmm10
918 pand %xmm7, %xmm8
919 pand %xmm7, %xmm10
920 por %xmm8, %xmm1
921 por %xmm10, %xmm2
922 pcmpeqb %xmm1, %xmm0
923 pcmpeqb %xmm2, %xmm1
924 psubb %xmm0, %xmm1
925 pmovmskb %xmm1, %edx
926 sub $0xffff, %edx
927 jnz .Lexit
928 add $16, %rcx
929 movdqa %xmm4, %xmm3
930 add $16, %r10
931 jg .Lnibble_ashr_7
932 movdqa (%rsi, %rcx), %xmm1
933 movdqa (%rdi, %rcx), %xmm2
934 movdqa %xmm2, %xmm4
935 psrldq $7, %xmm3
936 pslldq $9, %xmm2
937 por %xmm3, %xmm2
938 movdqa %xmm1, %xmm8
939 movdqa %xmm6, %xmm9
940 movdqa %xmm2, %xmm10
941 movdqa %xmm6, %xmm11
942 pcmpgtb %xmm5, %xmm8
943 pcmpgtb %xmm1, %xmm9
944 pcmpgtb %xmm5, %xmm10
945 pcmpgtb %xmm2, %xmm11
946 pand %xmm9, %xmm8
947 pand %xmm11, %xmm10
948 pand %xmm7, %xmm8
949 pand %xmm7, %xmm10
950 por %xmm8, %xmm1
951 por %xmm10, %xmm2
952 pcmpeqb %xmm1, %xmm0
953 pcmpeqb %xmm2, %xmm1
954 psubb %xmm0, %xmm1
955 pmovmskb %xmm1, %edx
956 sub $0xffff, %edx
957 jnz .Lexit
958 add $16, %rcx
959 movdqa %xmm4, %xmm3
960 jmp .Lloop_ashr_7
961 .p2align 4
962 .Lnibble_ashr_7:
963 pcmpeqb %xmm3, %xmm0
964 pmovmskb %xmm0, %edx
965 test $0xff80, %edx
966 jnz .Lashr_7_exittail
967 pxor %xmm0, %xmm0
968 sub $0x1000, %r10
969 jmp .Lgobble_ashr_7
970 .p2align 4
971 .Lashr_7_exittail:
972 movdqa (%rsi, %rcx), %xmm1
973 psrldq $7, %xmm0
974 psrldq $7, %xmm3
975 jmp .Laftertail
976 .p2align 4
977 .Lashr_8:
978 pxor %xmm0, %xmm0
979 movdqa (%rdi), %xmm2
980 movdqa (%rsi), %xmm1
981 pcmpeqb %xmm1, %xmm0
982 pslldq $8, %xmm2
983 movdqa %xmm1, %xmm8
984 movdqa %xmm6, %xmm9
985 movdqa %xmm2, %xmm10
986 movdqa %xmm6, %xmm11
987 pcmpgtb %xmm5, %xmm8
988 pcmpgtb %xmm1, %xmm9
989 pcmpgtb %xmm5, %xmm10
990 pcmpgtb %xmm2, %xmm11
991 pand %xmm9, %xmm8
992 pand %xmm11, %xmm10
993 pand %xmm7, %xmm8
994 pand %xmm7, %xmm10
995 por %xmm8, %xmm1
996 por %xmm10, %xmm2
997 pcmpeqb %xmm1, %xmm2
998 psubb %xmm0, %xmm2
999 pmovmskb %xmm2, %r9d
1000 shr %cl, %edx
1001 shr %cl, %r9d
1002 sub %r9d, %edx
1003 jnz .Lless32bytes
1004 movdqa (%rdi), %xmm3
1006 pxor %xmm0, %xmm0
1007 mov $16, %rcx
1008 mov $8, %r9d
1009 lea 8(%rdi), %r10
1010 and $0xfff, %r10
1011 sub $0x1000, %r10
1012 .p2align 4
1013 .Lloop_ashr_8:
1014 add $16, %r10
1015 jg .Lnibble_ashr_8
1016 .Lgobble_ashr_8:
1017 movdqa (%rsi, %rcx), %xmm1
1018 movdqa (%rdi, %rcx), %xmm2
1019 movdqa %xmm2, %xmm4
1020 psrldq $8, %xmm3
1021 pslldq $8, %xmm2
1022 por %xmm3, %xmm2
1023 movdqa %xmm1, %xmm8
1024 movdqa %xmm6, %xmm9
1025 movdqa %xmm2, %xmm10
1026 movdqa %xmm6, %xmm11
1027 pcmpgtb %xmm5, %xmm8
1028 pcmpgtb %xmm1, %xmm9
1029 pcmpgtb %xmm5, %xmm10
1030 pcmpgtb %xmm2, %xmm11
1031 pand %xmm9, %xmm8
1032 pand %xmm11, %xmm10
1033 pand %xmm7, %xmm8
1034 pand %xmm7, %xmm10
1035 por %xmm8, %xmm1
1036 por %xmm10, %xmm2
1037 pcmpeqb %xmm1, %xmm0
1038 pcmpeqb %xmm2, %xmm1
1039 psubb %xmm0, %xmm1
1040 pmovmskb %xmm1, %edx
1041 sub $0xffff, %edx
1042 jnz .Lexit
1043 add $16, %rcx
1044 movdqa %xmm4, %xmm3
1045 add $16, %r10
1046 jg .Lnibble_ashr_8
1047 movdqa (%rsi, %rcx), %xmm1
1048 movdqa (%rdi, %rcx), %xmm2
1049 movdqa %xmm2, %xmm4
1050 psrldq $8, %xmm3
1051 pslldq $8, %xmm2
1052 por %xmm3, %xmm2
1053 movdqa %xmm1, %xmm8
1054 movdqa %xmm6, %xmm9
1055 movdqa %xmm2, %xmm10
1056 movdqa %xmm6, %xmm11
1057 pcmpgtb %xmm5, %xmm8
1058 pcmpgtb %xmm1, %xmm9
1059 pcmpgtb %xmm5, %xmm10
1060 pcmpgtb %xmm2, %xmm11
1061 pand %xmm9, %xmm8
1062 pand %xmm11, %xmm10
1063 pand %xmm7, %xmm8
1064 pand %xmm7, %xmm10
1065 por %xmm8, %xmm1
1066 por %xmm10, %xmm2
1067 pcmpeqb %xmm1, %xmm0
1068 pcmpeqb %xmm2, %xmm1
1069 psubb %xmm0, %xmm1
1070 pmovmskb %xmm1, %edx
1071 sub $0xffff, %edx
1072 jnz .Lexit
1073 add $16, %rcx
1074 movdqa %xmm4, %xmm3
1075 jmp .Lloop_ashr_8
1076 .p2align 4
1077 .Lnibble_ashr_8:
1078 pcmpeqb %xmm3, %xmm0
1079 pmovmskb %xmm0, %edx
1080 test $0xff00, %edx
1081 jnz .Lashr_8_exittail
1082 pxor %xmm0, %xmm0
1083 sub $0x1000, %r10
1084 jmp .Lgobble_ashr_8
1085 .p2align 4
1086 .Lashr_8_exittail:
1087 movdqa (%rsi, %rcx), %xmm1
1088 psrldq $8, %xmm0
1089 psrldq $8, %xmm3
1090 jmp .Laftertail
1091 .p2align 4
1092 .Lashr_9:
1093 pxor %xmm0, %xmm0
1094 movdqa (%rdi), %xmm2
1095 movdqa (%rsi), %xmm1
1096 pcmpeqb %xmm1, %xmm0
1097 pslldq $7, %xmm2
1098 movdqa %xmm1, %xmm8
1099 movdqa %xmm6, %xmm9
1100 movdqa %xmm2, %xmm10
1101 movdqa %xmm6, %xmm11
1102 pcmpgtb %xmm5, %xmm8
1103 pcmpgtb %xmm1, %xmm9
1104 pcmpgtb %xmm5, %xmm10
1105 pcmpgtb %xmm2, %xmm11
1106 pand %xmm9, %xmm8
1107 pand %xmm11, %xmm10
1108 pand %xmm7, %xmm8
1109 pand %xmm7, %xmm10
1110 por %xmm8, %xmm1
1111 por %xmm10, %xmm2
1112 pcmpeqb %xmm1, %xmm2
1113 psubb %xmm0, %xmm2
1114 pmovmskb %xmm2, %r9d
1115 shr %cl, %edx
1116 shr %cl, %r9d
1117 sub %r9d, %edx
1118 jnz .Lless32bytes
1119 movdqa (%rdi), %xmm3
1121 pxor %xmm0, %xmm0
1122 mov $16, %rcx
1123 mov $9, %r9d
1124 lea 9(%rdi), %r10
1125 and $0xfff, %r10
1126 sub $0x1000, %r10
1127 .p2align 4
1128 .Lloop_ashr_9:
1129 add $16, %r10
1130 jg .Lnibble_ashr_9
1131 .Lgobble_ashr_9:
1132 movdqa (%rsi, %rcx), %xmm1
1133 movdqa (%rdi, %rcx), %xmm2
1134 movdqa %xmm2, %xmm4
1135 psrldq $9, %xmm3
1136 pslldq $7, %xmm2
1137 por %xmm3, %xmm2
1138 movdqa %xmm1, %xmm8
1139 movdqa %xmm6, %xmm9
1140 movdqa %xmm2, %xmm10
1141 movdqa %xmm6, %xmm11
1142 pcmpgtb %xmm5, %xmm8
1143 pcmpgtb %xmm1, %xmm9
1144 pcmpgtb %xmm5, %xmm10
1145 pcmpgtb %xmm2, %xmm11
1146 pand %xmm9, %xmm8
1147 pand %xmm11, %xmm10
1148 pand %xmm7, %xmm8
1149 pand %xmm7, %xmm10
1150 por %xmm8, %xmm1
1151 por %xmm10, %xmm2
1152 pcmpeqb %xmm1, %xmm0
1153 pcmpeqb %xmm2, %xmm1
1154 psubb %xmm0, %xmm1
1155 pmovmskb %xmm1, %edx
1156 sub $0xffff, %edx
1157 jnz .Lexit
1158 add $16, %rcx
1159 movdqa %xmm4, %xmm3
1160 add $16, %r10
1161 jg .Lnibble_ashr_9
1162 movdqa (%rsi, %rcx), %xmm1
1163 movdqa (%rdi, %rcx), %xmm2
1164 movdqa %xmm2, %xmm4
1165 psrldq $9, %xmm3
1166 pslldq $7, %xmm2
1167 por %xmm3, %xmm2
1168 movdqa %xmm1, %xmm8
1169 movdqa %xmm6, %xmm9
1170 movdqa %xmm2, %xmm10
1171 movdqa %xmm6, %xmm11
1172 pcmpgtb %xmm5, %xmm8
1173 pcmpgtb %xmm1, %xmm9
1174 pcmpgtb %xmm5, %xmm10
1175 pcmpgtb %xmm2, %xmm11
1176 pand %xmm9, %xmm8
1177 pand %xmm11, %xmm10
1178 pand %xmm7, %xmm8
1179 pand %xmm7, %xmm10
1180 por %xmm8, %xmm1
1181 por %xmm10, %xmm2
1182 pcmpeqb %xmm1, %xmm0
1183 pcmpeqb %xmm2, %xmm1
1184 psubb %xmm0, %xmm1
1185 pmovmskb %xmm1, %edx
1186 sub $0xffff, %edx
1187 jnz .Lexit
1188 add $16, %rcx
1189 movdqa %xmm4, %xmm3
1190 jmp .Lloop_ashr_9
1191 .p2align 4
1192 .Lnibble_ashr_9:
1193 pcmpeqb %xmm3, %xmm0
1194 pmovmskb %xmm0, %edx
1195 test $0xfe00, %edx
1196 jnz .Lashr_9_exittail
1197 pxor %xmm0, %xmm0
1198 sub $0x1000, %r10
1199 jmp .Lgobble_ashr_9
1200 .p2align 4
1201 .Lashr_9_exittail:
1202 movdqa (%rsi, %rcx), %xmm1
1203 psrldq $9, %xmm0
1204 psrldq $9, %xmm3
1205 jmp .Laftertail
1206 .p2align 4
1207 .Lashr_10:
1208 pxor %xmm0, %xmm0
1209 movdqa (%rdi), %xmm2
1210 movdqa (%rsi), %xmm1
1211 pcmpeqb %xmm1, %xmm0
1212 pslldq $6, %xmm2
1213 movdqa %xmm1, %xmm8
1214 movdqa %xmm6, %xmm9
1215 movdqa %xmm2, %xmm10
1216 movdqa %xmm6, %xmm11
1217 pcmpgtb %xmm5, %xmm8
1218 pcmpgtb %xmm1, %xmm9
1219 pcmpgtb %xmm5, %xmm10
1220 pcmpgtb %xmm2, %xmm11
1221 pand %xmm9, %xmm8
1222 pand %xmm11, %xmm10
1223 pand %xmm7, %xmm8
1224 pand %xmm7, %xmm10
1225 por %xmm8, %xmm1
1226 por %xmm10, %xmm2
1227 pcmpeqb %xmm1, %xmm2
1228 psubb %xmm0, %xmm2
1229 pmovmskb %xmm2, %r9d
1230 shr %cl, %edx
1231 shr %cl, %r9d
1232 sub %r9d, %edx
1233 jnz .Lless32bytes
1234 movdqa (%rdi), %xmm3
1236 pxor %xmm0, %xmm0
1237 mov $16, %rcx
1238 mov $10, %r9d
1239 lea 10(%rdi), %r10
1240 and $0xfff, %r10
1241 sub $0x1000, %r10
1242 .p2align 4
1243 .Lloop_ashr_10:
1244 add $16, %r10
1245 jg .Lnibble_ashr_10
1246 .Lgobble_ashr_10:
1247 movdqa (%rsi, %rcx), %xmm1
1248 movdqa (%rdi, %rcx), %xmm2
1249 movdqa %xmm2, %xmm4
1250 psrldq $10, %xmm3
1251 pslldq $6, %xmm2
1252 por %xmm3, %xmm2
1253 movdqa %xmm1, %xmm8
1254 movdqa %xmm6, %xmm9
1255 movdqa %xmm2, %xmm10
1256 movdqa %xmm6, %xmm11
1257 pcmpgtb %xmm5, %xmm8
1258 pcmpgtb %xmm1, %xmm9
1259 pcmpgtb %xmm5, %xmm10
1260 pcmpgtb %xmm2, %xmm11
1261 pand %xmm9, %xmm8
1262 pand %xmm11, %xmm10
1263 pand %xmm7, %xmm8
1264 pand %xmm7, %xmm10
1265 por %xmm8, %xmm1
1266 por %xmm10, %xmm2
1267 pcmpeqb %xmm1, %xmm0
1268 pcmpeqb %xmm2, %xmm1
1269 psubb %xmm0, %xmm1
1270 pmovmskb %xmm1, %edx
1271 sub $0xffff, %edx
1272 jnz .Lexit
1273 add $16, %rcx
1274 movdqa %xmm4, %xmm3
1275 add $16, %r10
1276 jg .Lnibble_ashr_10
1277 movdqa (%rsi, %rcx), %xmm1
1278 movdqa (%rdi, %rcx), %xmm2
1279 movdqa %xmm2, %xmm4
1280 psrldq $10, %xmm3
1281 pslldq $6, %xmm2
1282 por %xmm3, %xmm2
1283 movdqa %xmm1, %xmm8
1284 movdqa %xmm6, %xmm9
1285 movdqa %xmm2, %xmm10
1286 movdqa %xmm6, %xmm11
1287 pcmpgtb %xmm5, %xmm8
1288 pcmpgtb %xmm1, %xmm9
1289 pcmpgtb %xmm5, %xmm10
1290 pcmpgtb %xmm2, %xmm11
1291 pand %xmm9, %xmm8
1292 pand %xmm11, %xmm10
1293 pand %xmm7, %xmm8
1294 pand %xmm7, %xmm10
1295 por %xmm8, %xmm1
1296 por %xmm10, %xmm2
1297 pcmpeqb %xmm1, %xmm0
1298 pcmpeqb %xmm2, %xmm1
1299 psubb %xmm0, %xmm1
1300 pmovmskb %xmm1, %edx
1301 sub $0xffff, %edx
1302 jnz .Lexit
1303 add $16, %rcx
1304 movdqa %xmm4, %xmm3
1305 jmp .Lloop_ashr_10
1306 .p2align 4
1307 .Lnibble_ashr_10:
1308 pcmpeqb %xmm3, %xmm0
1309 pmovmskb %xmm0, %edx
1310 test $0xfc00, %edx
1311 jnz .Lashr_10_exittail
1312 pxor %xmm0, %xmm0
1313 sub $0x1000, %r10
1314 jmp .Lgobble_ashr_10
1315 .p2align 4
1316 .Lashr_10_exittail:
1317 movdqa (%rsi, %rcx), %xmm1
1318 psrldq $10, %xmm0
1319 psrldq $10, %xmm3
1320 jmp .Laftertail
1321 .p2align 4
1322 .Lashr_11:
1323 pxor %xmm0, %xmm0
1324 movdqa (%rdi), %xmm2
1325 movdqa (%rsi), %xmm1
1326 pcmpeqb %xmm1, %xmm0
1327 pslldq $5, %xmm2
1328 movdqa %xmm1, %xmm8
1329 movdqa %xmm6, %xmm9
1330 movdqa %xmm2, %xmm10
1331 movdqa %xmm6, %xmm11
1332 pcmpgtb %xmm5, %xmm8
1333 pcmpgtb %xmm1, %xmm9
1334 pcmpgtb %xmm5, %xmm10
1335 pcmpgtb %xmm2, %xmm11
1336 pand %xmm9, %xmm8
1337 pand %xmm11, %xmm10
1338 pand %xmm7, %xmm8
1339 pand %xmm7, %xmm10
1340 por %xmm8, %xmm1
1341 por %xmm10, %xmm2
1342 pcmpeqb %xmm1, %xmm2
1343 psubb %xmm0, %xmm2
1344 pmovmskb %xmm2, %r9d
1345 shr %cl, %edx
1346 shr %cl, %r9d
1347 sub %r9d, %edx
1348 jnz .Lless32bytes
1349 movdqa (%rdi), %xmm3
1351 pxor %xmm0, %xmm0
1352 mov $16, %rcx
1353 mov $11, %r9d
1354 lea 11(%rdi), %r10
1355 and $0xfff, %r10
1356 sub $0x1000, %r10
1357 .p2align 4
1358 .Lloop_ashr_11:
1359 add $16, %r10
1360 jg .Lnibble_ashr_11
1361 .Lgobble_ashr_11:
1362 movdqa (%rsi, %rcx), %xmm1
1363 movdqa (%rdi, %rcx), %xmm2
1364 movdqa %xmm2, %xmm4
1365 psrldq $11, %xmm3
1366 pslldq $5, %xmm2
1367 por %xmm3, %xmm2
1368 movdqa %xmm1, %xmm8
1369 movdqa %xmm6, %xmm9
1370 movdqa %xmm2, %xmm10
1371 movdqa %xmm6, %xmm11
1372 pcmpgtb %xmm5, %xmm8
1373 pcmpgtb %xmm1, %xmm9
1374 pcmpgtb %xmm5, %xmm10
1375 pcmpgtb %xmm2, %xmm11
1376 pand %xmm9, %xmm8
1377 pand %xmm11, %xmm10
1378 pand %xmm7, %xmm8
1379 pand %xmm7, %xmm10
1380 por %xmm8, %xmm1
1381 por %xmm10, %xmm2
1382 pcmpeqb %xmm1, %xmm0
1383 pcmpeqb %xmm2, %xmm1
1384 psubb %xmm0, %xmm1
1385 pmovmskb %xmm1, %edx
1386 sub $0xffff, %edx
1387 jnz .Lexit
1388 add $16, %rcx
1389 movdqa %xmm4, %xmm3
1390 add $16, %r10
1391 jg .Lnibble_ashr_11
1392 movdqa (%rsi, %rcx), %xmm1
1393 movdqa (%rdi, %rcx), %xmm2
1394 movdqa %xmm2, %xmm4
1395 psrldq $11, %xmm3
1396 pslldq $5, %xmm2
1397 por %xmm3, %xmm2
1398 movdqa %xmm1, %xmm8
1399 movdqa %xmm6, %xmm9
1400 movdqa %xmm2, %xmm10
1401 movdqa %xmm6, %xmm11
1402 pcmpgtb %xmm5, %xmm8
1403 pcmpgtb %xmm1, %xmm9
1404 pcmpgtb %xmm5, %xmm10
1405 pcmpgtb %xmm2, %xmm11
1406 pand %xmm9, %xmm8
1407 pand %xmm11, %xmm10
1408 pand %xmm7, %xmm8
1409 pand %xmm7, %xmm10
1410 por %xmm8, %xmm1
1411 por %xmm10, %xmm2
1412 pcmpeqb %xmm1, %xmm0
1413 pcmpeqb %xmm2, %xmm1
1414 psubb %xmm0, %xmm1
1415 pmovmskb %xmm1, %edx
1416 sub $0xffff, %edx
1417 jnz .Lexit
1418 add $16, %rcx
1419 movdqa %xmm4, %xmm3
1420 jmp .Lloop_ashr_11
1421 .p2align 4
1422 .Lnibble_ashr_11:
1423 pcmpeqb %xmm3, %xmm0
1424 pmovmskb %xmm0, %edx
1425 test $0xf800, %edx
1426 jnz .Lashr_11_exittail
1427 pxor %xmm0, %xmm0
1428 sub $0x1000, %r10
1429 jmp .Lgobble_ashr_11
1430 .p2align 4
1431 .Lashr_11_exittail:
1432 movdqa (%rsi, %rcx), %xmm1
1433 psrldq $11, %xmm0
1434 psrldq $11, %xmm3
1435 jmp .Laftertail
1436 .p2align 4
1437 .Lashr_12:
1438 pxor %xmm0, %xmm0
1439 movdqa (%rdi), %xmm2
1440 movdqa (%rsi), %xmm1
1441 pcmpeqb %xmm1, %xmm0
1442 pslldq $4, %xmm2
1443 movdqa %xmm1, %xmm8
1444 movdqa %xmm6, %xmm9
1445 movdqa %xmm2, %xmm10
1446 movdqa %xmm6, %xmm11
1447 pcmpgtb %xmm5, %xmm8
1448 pcmpgtb %xmm1, %xmm9
1449 pcmpgtb %xmm5, %xmm10
1450 pcmpgtb %xmm2, %xmm11
1451 pand %xmm9, %xmm8
1452 pand %xmm11, %xmm10
1453 pand %xmm7, %xmm8
1454 pand %xmm7, %xmm10
1455 por %xmm8, %xmm1
1456 por %xmm10, %xmm2
1457 pcmpeqb %xmm1, %xmm2
1458 psubb %xmm0, %xmm2
1459 pmovmskb %xmm2, %r9d
1460 shr %cl, %edx
1461 shr %cl, %r9d
1462 sub %r9d, %edx
1463 jnz .Lless32bytes
1464 movdqa (%rdi), %xmm3
1466 pxor %xmm0, %xmm0
1467 mov $16, %rcx
1468 mov $12, %r9d
1469 lea 12(%rdi), %r10
1470 and $0xfff, %r10
1471 sub $0x1000, %r10
1472 .p2align 4
1473 .Lloop_ashr_12:
1474 add $16, %r10
1475 jg .Lnibble_ashr_12
1476 .Lgobble_ashr_12:
1477 movdqa (%rsi, %rcx), %xmm1
1478 movdqa (%rdi, %rcx), %xmm2
1479 movdqa %xmm2, %xmm4
1480 psrldq $12, %xmm3
1481 pslldq $4, %xmm2
1482 por %xmm3, %xmm2
1483 movdqa %xmm1, %xmm8
1484 movdqa %xmm6, %xmm9
1485 movdqa %xmm2, %xmm10
1486 movdqa %xmm6, %xmm11
1487 pcmpgtb %xmm5, %xmm8
1488 pcmpgtb %xmm1, %xmm9
1489 pcmpgtb %xmm5, %xmm10
1490 pcmpgtb %xmm2, %xmm11
1491 pand %xmm9, %xmm8
1492 pand %xmm11, %xmm10
1493 pand %xmm7, %xmm8
1494 pand %xmm7, %xmm10
1495 por %xmm8, %xmm1
1496 por %xmm10, %xmm2
1497 pcmpeqb %xmm1, %xmm0
1498 pcmpeqb %xmm2, %xmm1
1499 psubb %xmm0, %xmm1
1500 pmovmskb %xmm1, %edx
1501 sub $0xffff, %edx
1502 jnz .Lexit
1503 add $16, %rcx
1504 movdqa %xmm4, %xmm3
1505 add $16, %r10
1506 jg .Lnibble_ashr_12
1507 movdqa (%rsi, %rcx), %xmm1
1508 movdqa (%rdi, %rcx), %xmm2
1509 movdqa %xmm2, %xmm4
1510 psrldq $12, %xmm3
1511 pslldq $4, %xmm2
1512 por %xmm3, %xmm2
1513 movdqa %xmm1, %xmm8
1514 movdqa %xmm6, %xmm9
1515 movdqa %xmm2, %xmm10
1516 movdqa %xmm6, %xmm11
1517 pcmpgtb %xmm5, %xmm8
1518 pcmpgtb %xmm1, %xmm9
1519 pcmpgtb %xmm5, %xmm10
1520 pcmpgtb %xmm2, %xmm11
1521 pand %xmm9, %xmm8
1522 pand %xmm11, %xmm10
1523 pand %xmm7, %xmm8
1524 pand %xmm7, %xmm10
1525 por %xmm8, %xmm1
1526 por %xmm10, %xmm2
1527 pcmpeqb %xmm1, %xmm0
1528 pcmpeqb %xmm2, %xmm1
1529 psubb %xmm0, %xmm1
1530 pmovmskb %xmm1, %edx
1531 sub $0xffff, %edx
1532 jnz .Lexit
1533 add $16, %rcx
1534 movdqa %xmm4, %xmm3
1535 jmp .Lloop_ashr_12
1536 .p2align 4
1537 .Lnibble_ashr_12:
1538 pcmpeqb %xmm3, %xmm0
1539 pmovmskb %xmm0, %edx
1540 test $0xf000, %edx
1541 jnz .Lashr_12_exittail
1542 pxor %xmm0, %xmm0
1543 sub $0x1000, %r10
1544 jmp .Lgobble_ashr_12
1545 .p2align 4
1546 .Lashr_12_exittail:
1547 movdqa (%rsi, %rcx), %xmm1
1548 psrldq $12, %xmm0
1549 psrldq $12, %xmm3
1550 jmp .Laftertail
1551 .p2align 4
1552 .Lashr_13:
1553 pxor %xmm0, %xmm0
1554 movdqa (%rdi), %xmm2
1555 movdqa (%rsi), %xmm1
1556 pcmpeqb %xmm1, %xmm0
1557 pslldq $3, %xmm2
1558 movdqa %xmm1, %xmm8
1559 movdqa %xmm6, %xmm9
1560 movdqa %xmm2, %xmm10
1561 movdqa %xmm6, %xmm11
1562 pcmpgtb %xmm5, %xmm8
1563 pcmpgtb %xmm1, %xmm9
1564 pcmpgtb %xmm5, %xmm10
1565 pcmpgtb %xmm2, %xmm11
1566 pand %xmm9, %xmm8
1567 pand %xmm11, %xmm10
1568 pand %xmm7, %xmm8
1569 pand %xmm7, %xmm10
1570 por %xmm8, %xmm1
1571 por %xmm10, %xmm2
1572 pcmpeqb %xmm1, %xmm2
1573 psubb %xmm0, %xmm2
1574 pmovmskb %xmm2, %r9d
1575 shr %cl, %edx
1576 shr %cl, %r9d
1577 sub %r9d, %edx
1578 jnz .Lless32bytes
1579 movdqa (%rdi), %xmm3
1581 pxor %xmm0, %xmm0
1582 mov $16, %rcx
1583 mov $13, %r9d
1584 lea 13(%rdi), %r10
1585 and $0xfff, %r10
1586 sub $0x1000, %r10
1587 .p2align 4
1588 .Lloop_ashr_13:
1589 add $16, %r10
1590 jg .Lnibble_ashr_13
1591 .Lgobble_ashr_13:
1592 movdqa (%rsi, %rcx), %xmm1
1593 movdqa (%rdi, %rcx), %xmm2
1594 movdqa %xmm2, %xmm4
1595 psrldq $13, %xmm3
1596 pslldq $3, %xmm2
1597 por %xmm3, %xmm2
1598 movdqa %xmm1, %xmm8
1599 movdqa %xmm6, %xmm9
1600 movdqa %xmm2, %xmm10
1601 movdqa %xmm6, %xmm11
1602 pcmpgtb %xmm5, %xmm8
1603 pcmpgtb %xmm1, %xmm9
1604 pcmpgtb %xmm5, %xmm10
1605 pcmpgtb %xmm2, %xmm11
1606 pand %xmm9, %xmm8
1607 pand %xmm11, %xmm10
1608 pand %xmm7, %xmm8
1609 pand %xmm7, %xmm10
1610 por %xmm8, %xmm1
1611 por %xmm10, %xmm2
1612 pcmpeqb %xmm1, %xmm0
1613 pcmpeqb %xmm2, %xmm1
1614 psubb %xmm0, %xmm1
1615 pmovmskb %xmm1, %edx
1616 sub $0xffff, %edx
1617 jnz .Lexit
1618 add $16, %rcx
1619 movdqa %xmm4, %xmm3
1620 add $16, %r10
1621 jg .Lnibble_ashr_13
1622 movdqa (%rsi, %rcx), %xmm1
1623 movdqa (%rdi, %rcx), %xmm2
1624 movdqa %xmm2, %xmm4
1625 psrldq $13, %xmm3
1626 pslldq $3, %xmm2
1627 por %xmm3, %xmm2
1628 movdqa %xmm1, %xmm8
1629 movdqa %xmm6, %xmm9
1630 movdqa %xmm2, %xmm10
1631 movdqa %xmm6, %xmm11
1632 pcmpgtb %xmm5, %xmm8
1633 pcmpgtb %xmm1, %xmm9
1634 pcmpgtb %xmm5, %xmm10
1635 pcmpgtb %xmm2, %xmm11
1636 pand %xmm9, %xmm8
1637 pand %xmm11, %xmm10
1638 pand %xmm7, %xmm8
1639 pand %xmm7, %xmm10
1640 por %xmm8, %xmm1
1641 por %xmm10, %xmm2
1642 pcmpeqb %xmm1, %xmm0
1643 pcmpeqb %xmm2, %xmm1
1644 psubb %xmm0, %xmm1
1645 pmovmskb %xmm1, %edx
1646 sub $0xffff, %edx
1647 jnz .Lexit
1648 add $16, %rcx
1649 movdqa %xmm4, %xmm3
1650 jmp .Lloop_ashr_13
1651 .p2align 4
1652 .Lnibble_ashr_13:
1653 pcmpeqb %xmm3, %xmm0
1654 pmovmskb %xmm0, %edx
1655 test $0xe000, %edx
1656 jnz .Lashr_13_exittail
1657 pxor %xmm0, %xmm0
1658 sub $0x1000, %r10
1659 jmp .Lgobble_ashr_13
1660 .p2align 4
1661 .Lashr_13_exittail:
1662 movdqa (%rsi, %rcx), %xmm1
1663 psrldq $13, %xmm0
1664 psrldq $13, %xmm3
1665 jmp .Laftertail
1666 .p2align 4
1667 .Lashr_14:
1668 pxor %xmm0, %xmm0
1669 movdqa (%rdi), %xmm2
1670 movdqa (%rsi), %xmm1
1671 pcmpeqb %xmm1, %xmm0
1672 pslldq $2, %xmm2
1673 movdqa %xmm1, %xmm8
1674 movdqa %xmm6, %xmm9
1675 movdqa %xmm2, %xmm10
1676 movdqa %xmm6, %xmm11
1677 pcmpgtb %xmm5, %xmm8
1678 pcmpgtb %xmm1, %xmm9
1679 pcmpgtb %xmm5, %xmm10
1680 pcmpgtb %xmm2, %xmm11
1681 pand %xmm9, %xmm8
1682 pand %xmm11, %xmm10
1683 pand %xmm7, %xmm8
1684 pand %xmm7, %xmm10
1685 por %xmm8, %xmm1
1686 por %xmm10, %xmm2
1687 pcmpeqb %xmm1, %xmm2
1688 psubb %xmm0, %xmm2
1689 pmovmskb %xmm2, %r9d
1690 shr %cl, %edx
1691 shr %cl, %r9d
1692 sub %r9d, %edx
1693 jnz .Lless32bytes
1694 movdqa (%rdi), %xmm3
1696 pxor %xmm0, %xmm0
1697 mov $16, %rcx
1698 mov $14, %r9d
1699 lea 14(%rdi), %r10
1700 and $0xfff, %r10
1701 sub $0x1000, %r10
1702 .p2align 4
1703 .Lloop_ashr_14:
1704 add $16, %r10
1705 jg .Lnibble_ashr_14
1706 .Lgobble_ashr_14:
1707 movdqa (%rsi, %rcx), %xmm1
1708 movdqa (%rdi, %rcx), %xmm2
1709 movdqa %xmm2, %xmm4
1710 psrldq $14, %xmm3
1711 pslldq $2, %xmm2
1712 por %xmm3, %xmm2
1713 movdqa %xmm1, %xmm8
1714 movdqa %xmm6, %xmm9
1715 movdqa %xmm2, %xmm10
1716 movdqa %xmm6, %xmm11
1717 pcmpgtb %xmm5, %xmm8
1718 pcmpgtb %xmm1, %xmm9
1719 pcmpgtb %xmm5, %xmm10
1720 pcmpgtb %xmm2, %xmm11
1721 pand %xmm9, %xmm8
1722 pand %xmm11, %xmm10
1723 pand %xmm7, %xmm8
1724 pand %xmm7, %xmm10
1725 por %xmm8, %xmm1
1726 por %xmm10, %xmm2
1727 pcmpeqb %xmm1, %xmm0
1728 pcmpeqb %xmm2, %xmm1
1729 psubb %xmm0, %xmm1
1730 pmovmskb %xmm1, %edx
1731 sub $0xffff, %edx
1732 jnz .Lexit
1733 add $16, %rcx
1734 movdqa %xmm4, %xmm3
1735 add $16, %r10
1736 jg .Lnibble_ashr_14
1737 movdqa (%rsi, %rcx), %xmm1
1738 movdqa (%rdi, %rcx), %xmm2
1739 movdqa %xmm2, %xmm4
1740 psrldq $14, %xmm3
1741 pslldq $2, %xmm2
1742 por %xmm3, %xmm2
1743 movdqa %xmm1, %xmm8
1744 movdqa %xmm6, %xmm9
1745 movdqa %xmm2, %xmm10
1746 movdqa %xmm6, %xmm11
1747 pcmpgtb %xmm5, %xmm8
1748 pcmpgtb %xmm1, %xmm9
1749 pcmpgtb %xmm5, %xmm10
1750 pcmpgtb %xmm2, %xmm11
1751 pand %xmm9, %xmm8
1752 pand %xmm11, %xmm10
1753 pand %xmm7, %xmm8
1754 pand %xmm7, %xmm10
1755 por %xmm8, %xmm1
1756 por %xmm10, %xmm2
1757 pcmpeqb %xmm1, %xmm0
1758 pcmpeqb %xmm2, %xmm1
1759 psubb %xmm0, %xmm1
1760 pmovmskb %xmm1, %edx
1761 sub $0xffff, %edx
1762 jnz .Lexit
1763 add $16, %rcx
1764 movdqa %xmm4, %xmm3
1765 jmp .Lloop_ashr_14
1766 .p2align 4
1767 .Lnibble_ashr_14:
1768 pcmpeqb %xmm3, %xmm0
1769 pmovmskb %xmm0, %edx
1770 test $0xc000, %edx
1771 jnz .Lashr_14_exittail
1772 pxor %xmm0, %xmm0
1773 sub $0x1000, %r10
1774 jmp .Lgobble_ashr_14
1775 .p2align 4
1776 .Lashr_14_exittail:
1777 movdqa (%rsi, %rcx), %xmm1
1778 psrldq $14, %xmm0
1779 psrldq $14, %xmm3
1780 jmp .Laftertail
1781 .p2align 4
1782 .Lashr_15:
1783 pxor %xmm0, %xmm0
1784 movdqa (%rdi), %xmm2
1785 movdqa (%rsi), %xmm1
1786 pcmpeqb %xmm1, %xmm0
1787 pslldq $1, %xmm2
1788 movdqa %xmm1, %xmm8
1789 movdqa %xmm6, %xmm9
1790 movdqa %xmm2, %xmm10
1791 movdqa %xmm6, %xmm11
1792 pcmpgtb %xmm5, %xmm8
1793 pcmpgtb %xmm1, %xmm9
1794 pcmpgtb %xmm5, %xmm10
1795 pcmpgtb %xmm2, %xmm11
1796 pand %xmm9, %xmm8
1797 pand %xmm11, %xmm10
1798 pand %xmm7, %xmm8
1799 pand %xmm7, %xmm10
1800 por %xmm8, %xmm1
1801 por %xmm10, %xmm2
1802 pcmpeqb %xmm1, %xmm2
1803 psubb %xmm0, %xmm2
1804 pmovmskb %xmm2, %r9d
1805 shr %cl, %edx
1806 shr %cl, %r9d
1807 sub %r9d, %edx
1808 jnz .Lless32bytes
1809 movdqa (%rdi), %xmm3
1811 pxor %xmm0, %xmm0
1812 mov $16, %rcx
1813 mov $15, %r9d
1814 lea 15(%rdi), %r10
1815 and $0xfff, %r10
1816 sub $0x1000, %r10
1817 .p2align 4
1818 .Lloop_ashr_15:
1819 add $16, %r10
1820 jg .Lnibble_ashr_15
1821 .Lgobble_ashr_15:
1822 movdqa (%rsi, %rcx), %xmm1
1823 movdqa (%rdi, %rcx), %xmm2
1824 movdqa %xmm2, %xmm4
1825 psrldq $15, %xmm3
1826 pslldq $1, %xmm2
1827 por %xmm3, %xmm2
1828 movdqa %xmm1, %xmm8
1829 movdqa %xmm6, %xmm9
1830 movdqa %xmm2, %xmm10
1831 movdqa %xmm6, %xmm11
1832 pcmpgtb %xmm5, %xmm8
1833 pcmpgtb %xmm1, %xmm9
1834 pcmpgtb %xmm5, %xmm10
1835 pcmpgtb %xmm2, %xmm11
1836 pand %xmm9, %xmm8
1837 pand %xmm11, %xmm10
1838 pand %xmm7, %xmm8
1839 pand %xmm7, %xmm10
1840 por %xmm8, %xmm1
1841 por %xmm10, %xmm2
1842 pcmpeqb %xmm1, %xmm0
1843 pcmpeqb %xmm2, %xmm1
1844 psubb %xmm0, %xmm1
1845 pmovmskb %xmm1, %edx
1846 sub $0xffff, %edx
1847 jnz .Lexit
1848 add $16, %rcx
1849 movdqa %xmm4, %xmm3
1850 add $16, %r10
1851 jg .Lnibble_ashr_15
1852 movdqa (%rsi, %rcx), %xmm1
1853 movdqa (%rdi, %rcx), %xmm2
1854 movdqa %xmm2, %xmm4
1855 psrldq $15, %xmm3
1856 pslldq $1, %xmm2
1857 por %xmm3, %xmm2
1858 movdqa %xmm1, %xmm8
1859 movdqa %xmm6, %xmm9
1860 movdqa %xmm2, %xmm10
1861 movdqa %xmm6, %xmm11
1862 pcmpgtb %xmm5, %xmm8
1863 pcmpgtb %xmm1, %xmm9
1864 pcmpgtb %xmm5, %xmm10
1865 pcmpgtb %xmm2, %xmm11
1866 pand %xmm9, %xmm8
1867 pand %xmm11, %xmm10
1868 pand %xmm7, %xmm8
1869 pand %xmm7, %xmm10
1870 por %xmm8, %xmm1
1871 por %xmm10, %xmm2
1872 pcmpeqb %xmm1, %xmm0
1873 pcmpeqb %xmm2, %xmm1
1874 psubb %xmm0, %xmm1
1875 pmovmskb %xmm1, %edx
1876 sub $0xffff, %edx
1877 jnz .Lexit
1878 add $16, %rcx
1879 movdqa %xmm4, %xmm3
1880 jmp .Lloop_ashr_15
1881 .p2align 4
1882 .Lnibble_ashr_15:
1883 pcmpeqb %xmm3, %xmm0
1884 pmovmskb %xmm0, %edx
1885 test $0x8000, %edx
1886 jnz .Lashr_15_exittail
1887 pxor %xmm0, %xmm0
1888 sub $0x1000, %r10
1889 jmp .Lgobble_ashr_15
1890 .p2align 4
1891 .Lashr_15_exittail:
1892 movdqa (%rsi, %rcx), %xmm1
1893 psrldq $15, %xmm3
1894 psrldq $15, %xmm0
1895 .p2align 4
1896 .Laftertail:
1897 movdqa %xmm1, %xmm8
1898 movdqa %xmm6, %xmm9
1899 movdqa %xmm3, %xmm10
1900 movdqa %xmm6, %xmm11
1901 pcmpgtb %xmm5, %xmm8
1902 pcmpgtb %xmm1, %xmm9
1903 pcmpgtb %xmm5, %xmm10
1904 pcmpgtb %xmm3, %xmm11
1905 pand %xmm9, %xmm8
1906 pand %xmm11, %xmm10
1907 pand %xmm7, %xmm8
1908 pand %xmm7, %xmm10
1909 por %xmm8, %xmm1
1910 por %xmm10, %xmm3
1911 pcmpeqb %xmm3, %xmm1
1912 psubb %xmm0, %xmm1
1913 pmovmskb %xmm1, %edx
1914 not %edx
1915 .p2align 4
1916 .Lexit:
1917 lea -16(%r9, %rcx), %rax
1918 .Lless32bytes:
1919 lea (%rdi, %rax), %rdi
1920 lea (%rsi, %rcx), %rsi
1921 test %r8d, %r8d
1922 jz .Lret
1923 xchg %rsi, %rdi
1924 .p2align 4
1925 .Lret:
1926 .Lless16bytes:
1927 bsf %rdx, %rdx
1928 movzbl (%rsi, %rdx), %ecx
1929 movzbl (%rdi, %rdx), %eax
1930 leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx
1931 movl (%rdx,%rcx,4), %ecx
1932 movl (%rdx,%rax,4), %eax
1933 sub %ecx, %eax
1935 .Lstrcmp_exitz:
1936 xor %eax, %eax
1938 .p2align 4
1939 .LByte0:
1940 movzx (%rsi), %ecx
1941 movzx (%rdi), %eax
1942 leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx
1943 movl (%rdx,%rcx,4), %ecx
1944 movl (%rdx,%rax,4), %eax
1945 sub %ecx, %eax
1947 .size __strcasecmp_l,.-__strcasecmp_l
1948 .section .rodata,"a",@progbits
1949 .p2align 3
1950 .Lunaligned_table:
1951 .int .Lashr_1 - .Lunaligned_table
1952 .int .Lashr_2 - .Lunaligned_table
1953 .int .Lashr_3 - .Lunaligned_table
1954 .int .Lashr_4 - .Lunaligned_table
1955 .int .Lashr_5 - .Lunaligned_table
1956 .int .Lashr_6 - .Lunaligned_table
1957 .int .Lashr_7 - .Lunaligned_table
1958 .int .Lashr_8 - .Lunaligned_table
1959 .int .Lashr_9 - .Lunaligned_table
1960 .int .Lashr_10 - .Lunaligned_table
1961 .int .Lashr_11 - .Lunaligned_table
1962 .int .Lashr_12 - .Lunaligned_table
1963 .int .Lashr_13 - .Lunaligned_table
1964 .int .Lashr_14 - .Lunaligned_table
1965 .int .Lashr_15 - .Lunaligned_table
1966 .int .Lashr_0 - .Lunaligned_table
1968 .weak strcasecmp_l
1969 strcasecmp_l = __strcasecmp_l