Update copyright notices with scripts/update-copyrights
[glibc.git] / sysdeps / x86_64 / multiarch / memcpy-ssse3-back.S
blob899ccbc34b27224a2795069dac2d964038584e0b
1 /* memcpy with SSSE3 and REP string
2    Copyright (C) 2010-2014 Free Software Foundation, Inc.
3    Contributed by Intel Corporation.
4    This file is part of the GNU C Library.
6    The GNU C Library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Lesser General Public
8    License as published by the Free Software Foundation; either
9    version 2.1 of the License, or (at your option) any later version.
11    The GNU C Library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Lesser General Public License for more details.
16    You should have received a copy of the GNU Lesser General Public
17    License along with the GNU C Library; if not, see
18    <http://www.gnu.org/licenses/>.  */
20 #include <sysdep.h>
22 #if !defined NOT_IN_libc \
23     && (defined SHARED \
24         || defined USE_AS_MEMMOVE \
25         || !defined USE_MULTIARCH)
27 #include "asm-syntax.h"
29 #ifndef MEMCPY
30 # define MEMCPY         __memcpy_ssse3_back
31 # define MEMCPY_CHK     __memcpy_chk_ssse3_back
32 #endif
34 #define JMPTBL(I, B)    I - B
36 /* Branch to an entry in a jump table.  TABLE is a jump table with
37    relative offsets.  INDEX is a register contains the index into the
38    jump table.  SCALE is the scale of INDEX.  */
39 #define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE)             \
40   lea           TABLE(%rip), %r11;                              \
41   movslq        (%r11, INDEX, SCALE), INDEX;                    \
42   lea           (%r11, INDEX), INDEX;                           \
43   jmp           *INDEX;                                         \
44   ud2
46         .section .text.ssse3,"ax",@progbits
47 #if !defined USE_AS_BCOPY
48 ENTRY (MEMCPY_CHK)
49         cmpq    %rdx, %rcx
50         jb      HIDDEN_JUMPTARGET (__chk_fail)
51 END (MEMCPY_CHK)
52 #endif
54 ENTRY (MEMCPY)
55         mov     %rdi, %rax
56 #ifdef USE_AS_MEMPCPY
57         add     %rdx, %rax
58 #endif
60 #ifdef USE_AS_MEMMOVE
61         cmp     %rsi, %rdi
62         jb      L(copy_forward)
63         je      L(bwd_write_0bytes)
64         cmp     $144, %rdx
65         jae     L(copy_backward)
66         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
67 L(copy_forward):
68 #endif
69         cmp     $144, %rdx
70         jae     L(144bytesormore)
72 L(fwd_write_less32bytes):
73 #ifndef USE_AS_MEMMOVE
74         cmp     %dil, %sil
75         jbe     L(bk_write)
76 #endif
77         add     %rdx, %rsi
78         add     %rdx, %rdi
79         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
80 #ifndef USE_AS_MEMMOVE
81 L(bk_write):
83         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
84 #endif
86         .p2align 4
87 L(144bytesormore):
89 #ifndef USE_AS_MEMMOVE
90         cmp     %dil, %sil
91         jle     L(copy_backward)
92 #endif
93         movdqu  (%rsi), %xmm0
94         mov     %rdi, %r8
95         and     $-16, %rdi
96         add     $16, %rdi
97         mov     %rdi, %r9
98         sub     %r8, %r9
99         sub     %r9, %rdx
100         add     %r9, %rsi
101         mov     %rsi, %r9
102         and     $0xf, %r9
103         jz      L(shl_0)
104 #ifdef DATA_CACHE_SIZE
105         mov     $DATA_CACHE_SIZE, %RCX_LP
106 #else
107         mov     __x86_data_cache_size(%rip), %RCX_LP
108 #endif
109         cmp     %rcx, %rdx
110         jae     L(gobble_mem_fwd)
111         lea     L(shl_table_fwd)(%rip), %r11
112         sub     $0x80, %rdx
113         movslq  (%r11, %r9, 4), %r9
114         add     %r11, %r9
115         jmp     *%r9
116         ud2
118         .p2align 4
119 L(copy_backward):
120 #ifdef DATA_CACHE_SIZE
121         mov     $DATA_CACHE_SIZE, %RCX_LP
122 #else
123         mov     __x86_data_cache_size(%rip), %RCX_LP
124 #endif
125         shl     $1, %rcx
126         cmp     %rcx, %rdx
127         ja      L(gobble_mem_bwd)
129         add     %rdx, %rdi
130         add     %rdx, %rsi
131         movdqu  -16(%rsi), %xmm0
132         lea     -16(%rdi), %r8
133         mov     %rdi, %r9
134         and     $0xf, %r9
135         xor     %r9, %rdi
136         sub     %r9, %rsi
137         sub     %r9, %rdx
138         mov     %rsi, %r9
139         and     $0xf, %r9
140         jz      L(shl_0_bwd)
141         lea     L(shl_table_bwd)(%rip), %r11
142         sub     $0x80, %rdx
143         movslq  (%r11, %r9, 4), %r9
144         add     %r11, %r9
145         jmp     *%r9
146         ud2
148         .p2align 4
149 L(shl_0):
151         mov     %rdx, %r9
152         shr     $8, %r9
153         add     %rdx, %r9
154 #ifdef DATA_CACHE_SIZE
155         cmp     $DATA_CACHE_SIZE_HALF, %R9_LP
156 #else
157         cmp     __x86_data_cache_size_half(%rip), %R9_LP
158 #endif
159         jae     L(gobble_mem_fwd)
160         sub     $0x80, %rdx
161         .p2align 4
162 L(shl_0_loop):
163         movdqa  (%rsi), %xmm1
164         movdqa  %xmm1, (%rdi)
165         movaps  0x10(%rsi), %xmm2
166         movaps  %xmm2, 0x10(%rdi)
167         movaps  0x20(%rsi), %xmm3
168         movaps  %xmm3, 0x20(%rdi)
169         movaps  0x30(%rsi), %xmm4
170         movaps  %xmm4, 0x30(%rdi)
171         movaps  0x40(%rsi), %xmm1
172         movaps  %xmm1, 0x40(%rdi)
173         movaps  0x50(%rsi), %xmm2
174         movaps  %xmm2, 0x50(%rdi)
175         movaps  0x60(%rsi), %xmm3
176         movaps  %xmm3, 0x60(%rdi)
177         movaps  0x70(%rsi), %xmm4
178         movaps  %xmm4, 0x70(%rdi)
179         sub     $0x80, %rdx
180         lea     0x80(%rsi), %rsi
181         lea     0x80(%rdi), %rdi
182         jae     L(shl_0_loop)
183         movdqu  %xmm0, (%r8)
184         add     $0x80, %rdx
185         add     %rdx, %rsi
186         add     %rdx, %rdi
187         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
189         .p2align 4
190 L(shl_0_bwd):
191         sub     $0x80, %rdx
192 L(copy_backward_loop):
193         movaps  -0x10(%rsi), %xmm1
194         movaps  %xmm1, -0x10(%rdi)
195         movaps  -0x20(%rsi), %xmm2
196         movaps  %xmm2, -0x20(%rdi)
197         movaps  -0x30(%rsi), %xmm3
198         movaps  %xmm3, -0x30(%rdi)
199         movaps  -0x40(%rsi), %xmm4
200         movaps  %xmm4, -0x40(%rdi)
201         movaps  -0x50(%rsi), %xmm5
202         movaps  %xmm5, -0x50(%rdi)
203         movaps  -0x60(%rsi), %xmm5
204         movaps  %xmm5, -0x60(%rdi)
205         movaps  -0x70(%rsi), %xmm5
206         movaps  %xmm5, -0x70(%rdi)
207         movaps  -0x80(%rsi), %xmm5
208         movaps  %xmm5, -0x80(%rdi)
209         sub     $0x80, %rdx
210         lea     -0x80(%rdi), %rdi
211         lea     -0x80(%rsi), %rsi
212         jae     L(copy_backward_loop)
214         movdqu  %xmm0, (%r8)
215         add     $0x80, %rdx
216         sub     %rdx, %rdi
217         sub     %rdx, %rsi
218         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
220         .p2align 4
221 L(shl_1):
222         sub     $0x80, %rdx
223         movaps  -0x01(%rsi), %xmm1
224         movaps  0x0f(%rsi), %xmm2
225         movaps  0x1f(%rsi), %xmm3
226         movaps  0x2f(%rsi), %xmm4
227         movaps  0x3f(%rsi), %xmm5
228         movaps  0x4f(%rsi), %xmm6
229         movaps  0x5f(%rsi), %xmm7
230         movaps  0x6f(%rsi), %xmm8
231         movaps  0x7f(%rsi), %xmm9
232         lea     0x80(%rsi), %rsi
233         palignr $1, %xmm8, %xmm9
234         movaps  %xmm9, 0x70(%rdi)
235         palignr $1, %xmm7, %xmm8
236         movaps  %xmm8, 0x60(%rdi)
237         palignr $1, %xmm6, %xmm7
238         movaps  %xmm7, 0x50(%rdi)
239         palignr $1, %xmm5, %xmm6
240         movaps  %xmm6, 0x40(%rdi)
241         palignr $1, %xmm4, %xmm5
242         movaps  %xmm5, 0x30(%rdi)
243         palignr $1, %xmm3, %xmm4
244         movaps  %xmm4, 0x20(%rdi)
245         palignr $1, %xmm2, %xmm3
246         movaps  %xmm3, 0x10(%rdi)
247         palignr $1, %xmm1, %xmm2
248         movaps  %xmm2, (%rdi)
249         lea     0x80(%rdi), %rdi
250         jae     L(shl_1)
251         movdqu  %xmm0, (%r8)
252         add     $0x80, %rdx
253         add     %rdx, %rdi
254         add     %rdx, %rsi
255         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
257         .p2align 4
258 L(shl_1_bwd):
259         movaps  -0x01(%rsi), %xmm1
261         movaps  -0x11(%rsi), %xmm2
262         palignr $1, %xmm2, %xmm1
263         movaps  %xmm1, -0x10(%rdi)
265         movaps  -0x21(%rsi), %xmm3
266         palignr $1, %xmm3, %xmm2
267         movaps  %xmm2, -0x20(%rdi)
269         movaps  -0x31(%rsi), %xmm4
270         palignr $1, %xmm4, %xmm3
271         movaps  %xmm3, -0x30(%rdi)
273         movaps  -0x41(%rsi), %xmm5
274         palignr $1, %xmm5, %xmm4
275         movaps  %xmm4, -0x40(%rdi)
277         movaps  -0x51(%rsi), %xmm6
278         palignr $1, %xmm6, %xmm5
279         movaps  %xmm5, -0x50(%rdi)
281         movaps  -0x61(%rsi), %xmm7
282         palignr $1, %xmm7, %xmm6
283         movaps  %xmm6, -0x60(%rdi)
285         movaps  -0x71(%rsi), %xmm8
286         palignr $1, %xmm8, %xmm7
287         movaps  %xmm7, -0x70(%rdi)
289         movaps  -0x81(%rsi), %xmm9
290         palignr $1, %xmm9, %xmm8
291         movaps  %xmm8, -0x80(%rdi)
293         sub     $0x80, %rdx
294         lea     -0x80(%rdi), %rdi
295         lea     -0x80(%rsi), %rsi
296         jae     L(shl_1_bwd)
297         movdqu  %xmm0, (%r8)
298         add     $0x80, %rdx
299         sub     %rdx, %rdi
300         sub     %rdx, %rsi
301         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
303         .p2align 4
304 L(shl_2):
305         sub     $0x80, %rdx
306         movaps  -0x02(%rsi), %xmm1
307         movaps  0x0e(%rsi), %xmm2
308         movaps  0x1e(%rsi), %xmm3
309         movaps  0x2e(%rsi), %xmm4
310         movaps  0x3e(%rsi), %xmm5
311         movaps  0x4e(%rsi), %xmm6
312         movaps  0x5e(%rsi), %xmm7
313         movaps  0x6e(%rsi), %xmm8
314         movaps  0x7e(%rsi), %xmm9
315         lea     0x80(%rsi), %rsi
316         palignr $2, %xmm8, %xmm9
317         movaps  %xmm9, 0x70(%rdi)
318         palignr $2, %xmm7, %xmm8
319         movaps  %xmm8, 0x60(%rdi)
320         palignr $2, %xmm6, %xmm7
321         movaps  %xmm7, 0x50(%rdi)
322         palignr $2, %xmm5, %xmm6
323         movaps  %xmm6, 0x40(%rdi)
324         palignr $2, %xmm4, %xmm5
325         movaps  %xmm5, 0x30(%rdi)
326         palignr $2, %xmm3, %xmm4
327         movaps  %xmm4, 0x20(%rdi)
328         palignr $2, %xmm2, %xmm3
329         movaps  %xmm3, 0x10(%rdi)
330         palignr $2, %xmm1, %xmm2
331         movaps  %xmm2, (%rdi)
332         lea     0x80(%rdi), %rdi
333         jae     L(shl_2)
334         movdqu  %xmm0, (%r8)
335         add     $0x80, %rdx
336         add     %rdx, %rdi
337         add     %rdx, %rsi
338         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
340         .p2align 4
341 L(shl_2_bwd):
342         movaps  -0x02(%rsi), %xmm1
344         movaps  -0x12(%rsi), %xmm2
345         palignr $2, %xmm2, %xmm1
346         movaps  %xmm1, -0x10(%rdi)
348         movaps  -0x22(%rsi), %xmm3
349         palignr $2, %xmm3, %xmm2
350         movaps  %xmm2, -0x20(%rdi)
352         movaps  -0x32(%rsi), %xmm4
353         palignr $2, %xmm4, %xmm3
354         movaps  %xmm3, -0x30(%rdi)
356         movaps  -0x42(%rsi), %xmm5
357         palignr $2, %xmm5, %xmm4
358         movaps  %xmm4, -0x40(%rdi)
360         movaps  -0x52(%rsi), %xmm6
361         palignr $2, %xmm6, %xmm5
362         movaps  %xmm5, -0x50(%rdi)
364         movaps  -0x62(%rsi), %xmm7
365         palignr $2, %xmm7, %xmm6
366         movaps  %xmm6, -0x60(%rdi)
368         movaps  -0x72(%rsi), %xmm8
369         palignr $2, %xmm8, %xmm7
370         movaps  %xmm7, -0x70(%rdi)
372         movaps  -0x82(%rsi), %xmm9
373         palignr $2, %xmm9, %xmm8
374         movaps  %xmm8, -0x80(%rdi)
376         sub     $0x80, %rdx
377         lea     -0x80(%rdi), %rdi
378         lea     -0x80(%rsi), %rsi
379         jae     L(shl_2_bwd)
380         movdqu  %xmm0, (%r8)
381         add     $0x80, %rdx
382         sub     %rdx, %rdi
383         sub     %rdx, %rsi
384         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
386         .p2align 4
387 L(shl_3):
388         sub     $0x80, %rdx
389         movaps -0x03(%rsi), %xmm1
390         movaps  0x0d(%rsi), %xmm2
391         movaps  0x1d(%rsi), %xmm3
392         movaps  0x2d(%rsi), %xmm4
393         movaps  0x3d(%rsi), %xmm5
394         movaps  0x4d(%rsi), %xmm6
395         movaps  0x5d(%rsi), %xmm7
396         movaps  0x6d(%rsi), %xmm8
397         movaps  0x7d(%rsi), %xmm9
398         lea     0x80(%rsi), %rsi
399         palignr $3, %xmm8, %xmm9
400         movaps  %xmm9, 0x70(%rdi)
401         palignr $3, %xmm7, %xmm8
402         movaps  %xmm8, 0x60(%rdi)
403         palignr $3, %xmm6, %xmm7
404         movaps  %xmm7, 0x50(%rdi)
405         palignr $3, %xmm5, %xmm6
406         movaps  %xmm6, 0x40(%rdi)
407         palignr $3, %xmm4, %xmm5
408         movaps  %xmm5, 0x30(%rdi)
409         palignr $3, %xmm3, %xmm4
410         movaps  %xmm4, 0x20(%rdi)
411         palignr $3, %xmm2, %xmm3
412         movaps  %xmm3, 0x10(%rdi)
413         palignr $3, %xmm1, %xmm2
414         movaps  %xmm2, (%rdi)
415         lea     0x80(%rdi), %rdi
416         jae     L(shl_3)
417         movdqu  %xmm0, (%r8)
418         add     $0x80, %rdx
419         add     %rdx, %rdi
420         add     %rdx, %rsi
421         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
423         .p2align 4
424 L(shl_3_bwd):
425         movaps  -0x03(%rsi), %xmm1
427         movaps  -0x13(%rsi), %xmm2
428         palignr $3, %xmm2, %xmm1
429         movaps  %xmm1, -0x10(%rdi)
431         movaps  -0x23(%rsi), %xmm3
432         palignr $3, %xmm3, %xmm2
433         movaps  %xmm2, -0x20(%rdi)
435         movaps  -0x33(%rsi), %xmm4
436         palignr $3, %xmm4, %xmm3
437         movaps  %xmm3, -0x30(%rdi)
439         movaps  -0x43(%rsi), %xmm5
440         palignr $3, %xmm5, %xmm4
441         movaps  %xmm4, -0x40(%rdi)
443         movaps  -0x53(%rsi), %xmm6
444         palignr $3, %xmm6, %xmm5
445         movaps  %xmm5, -0x50(%rdi)
447         movaps  -0x63(%rsi), %xmm7
448         palignr $3, %xmm7, %xmm6
449         movaps  %xmm6, -0x60(%rdi)
451         movaps  -0x73(%rsi), %xmm8
452         palignr $3, %xmm8, %xmm7
453         movaps  %xmm7, -0x70(%rdi)
455         movaps  -0x83(%rsi), %xmm9
456         palignr $3, %xmm9, %xmm8
457         movaps  %xmm8, -0x80(%rdi)
459         sub     $0x80, %rdx
460         lea     -0x80(%rdi), %rdi
461         lea     -0x80(%rsi), %rsi
462         jae     L(shl_3_bwd)
463         movdqu  %xmm0, (%r8)
464         add     $0x80, %rdx
465         sub     %rdx, %rdi
466         sub     %rdx, %rsi
467         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
469         .p2align 4
470 L(shl_4):
471         sub     $0x80, %rdx
472         movaps  -0x04(%rsi), %xmm1
473         movaps  0x0c(%rsi), %xmm2
474         movaps  0x1c(%rsi), %xmm3
475         movaps  0x2c(%rsi), %xmm4
476         movaps  0x3c(%rsi), %xmm5
477         movaps  0x4c(%rsi), %xmm6
478         movaps  0x5c(%rsi), %xmm7
479         movaps  0x6c(%rsi), %xmm8
480         movaps  0x7c(%rsi), %xmm9
481         lea     0x80(%rsi), %rsi
482         palignr $4, %xmm8, %xmm9
483         movaps  %xmm9, 0x70(%rdi)
484         palignr $4, %xmm7, %xmm8
485         movaps  %xmm8, 0x60(%rdi)
486         palignr $4, %xmm6, %xmm7
487         movaps  %xmm7, 0x50(%rdi)
488         palignr $4, %xmm5, %xmm6
489         movaps  %xmm6, 0x40(%rdi)
490         palignr $4, %xmm4, %xmm5
491         movaps  %xmm5, 0x30(%rdi)
492         palignr $4, %xmm3, %xmm4
493         movaps  %xmm4, 0x20(%rdi)
494         palignr $4, %xmm2, %xmm3
495         movaps  %xmm3, 0x10(%rdi)
496         palignr $4, %xmm1, %xmm2
497         movaps  %xmm2, (%rdi)
498         lea     0x80(%rdi), %rdi
499         jae     L(shl_4)
500         movdqu  %xmm0, (%r8)
501         add     $0x80, %rdx
502         add     %rdx, %rdi
503         add     %rdx, %rsi
504         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
506         .p2align 4
507 L(shl_4_bwd):
508         movaps  -0x04(%rsi), %xmm1
510         movaps  -0x14(%rsi), %xmm2
511         palignr $4, %xmm2, %xmm1
512         movaps  %xmm1, -0x10(%rdi)
514         movaps  -0x24(%rsi), %xmm3
515         palignr $4, %xmm3, %xmm2
516         movaps  %xmm2, -0x20(%rdi)
518         movaps  -0x34(%rsi), %xmm4
519         palignr $4, %xmm4, %xmm3
520         movaps  %xmm3, -0x30(%rdi)
522         movaps  -0x44(%rsi), %xmm5
523         palignr $4, %xmm5, %xmm4
524         movaps  %xmm4, -0x40(%rdi)
526         movaps  -0x54(%rsi), %xmm6
527         palignr $4, %xmm6, %xmm5
528         movaps  %xmm5, -0x50(%rdi)
530         movaps  -0x64(%rsi), %xmm7
531         palignr $4, %xmm7, %xmm6
532         movaps  %xmm6, -0x60(%rdi)
534         movaps  -0x74(%rsi), %xmm8
535         palignr $4, %xmm8, %xmm7
536         movaps  %xmm7, -0x70(%rdi)
538         movaps  -0x84(%rsi), %xmm9
539         palignr $4, %xmm9, %xmm8
540         movaps  %xmm8, -0x80(%rdi)
542         sub     $0x80, %rdx
543         lea     -0x80(%rdi), %rdi
544         lea     -0x80(%rsi), %rsi
545         jae     L(shl_4_bwd)
546         movdqu  %xmm0, (%r8)
547         add     $0x80, %rdx
548         sub     %rdx, %rdi
549         sub     %rdx, %rsi
550         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
552         .p2align 4
553 L(shl_5):
554         sub     $0x80, %rdx
555         movaps  -0x05(%rsi), %xmm1
556         movaps  0x0b(%rsi), %xmm2
557         movaps  0x1b(%rsi), %xmm3
558         movaps  0x2b(%rsi), %xmm4
559         movaps  0x3b(%rsi), %xmm5
560         movaps  0x4b(%rsi), %xmm6
561         movaps  0x5b(%rsi), %xmm7
562         movaps  0x6b(%rsi), %xmm8
563         movaps  0x7b(%rsi), %xmm9
564         lea     0x80(%rsi), %rsi
565         palignr $5, %xmm8, %xmm9
566         movaps  %xmm9, 0x70(%rdi)
567         palignr $5, %xmm7, %xmm8
568         movaps  %xmm8, 0x60(%rdi)
569         palignr $5, %xmm6, %xmm7
570         movaps  %xmm7, 0x50(%rdi)
571         palignr $5, %xmm5, %xmm6
572         movaps  %xmm6, 0x40(%rdi)
573         palignr $5, %xmm4, %xmm5
574         movaps  %xmm5, 0x30(%rdi)
575         palignr $5, %xmm3, %xmm4
576         movaps  %xmm4, 0x20(%rdi)
577         palignr $5, %xmm2, %xmm3
578         movaps  %xmm3, 0x10(%rdi)
579         palignr $5, %xmm1, %xmm2
580         movaps  %xmm2, (%rdi)
581         lea     0x80(%rdi), %rdi
582         jae     L(shl_5)
583         movdqu  %xmm0, (%r8)
584         add     $0x80, %rdx
585         add     %rdx, %rdi
586         add     %rdx, %rsi
587         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
589         .p2align 4
590 L(shl_5_bwd):
591         movaps  -0x05(%rsi), %xmm1
593         movaps  -0x15(%rsi), %xmm2
594         palignr $5, %xmm2, %xmm1
595         movaps  %xmm1, -0x10(%rdi)
597         movaps  -0x25(%rsi), %xmm3
598         palignr $5, %xmm3, %xmm2
599         movaps  %xmm2, -0x20(%rdi)
601         movaps  -0x35(%rsi), %xmm4
602         palignr $5, %xmm4, %xmm3
603         movaps  %xmm3, -0x30(%rdi)
605         movaps  -0x45(%rsi), %xmm5
606         palignr $5, %xmm5, %xmm4
607         movaps  %xmm4, -0x40(%rdi)
609         movaps  -0x55(%rsi), %xmm6
610         palignr $5, %xmm6, %xmm5
611         movaps  %xmm5, -0x50(%rdi)
613         movaps  -0x65(%rsi), %xmm7
614         palignr $5, %xmm7, %xmm6
615         movaps  %xmm6, -0x60(%rdi)
617         movaps  -0x75(%rsi), %xmm8
618         palignr $5, %xmm8, %xmm7
619         movaps  %xmm7, -0x70(%rdi)
621         movaps  -0x85(%rsi), %xmm9
622         palignr $5, %xmm9, %xmm8
623         movaps  %xmm8, -0x80(%rdi)
625         sub     $0x80, %rdx
626         lea     -0x80(%rdi), %rdi
627         lea     -0x80(%rsi), %rsi
628         jae     L(shl_5_bwd)
629         movdqu  %xmm0, (%r8)
630         add     $0x80, %rdx
631         sub     %rdx, %rdi
632         sub     %rdx, %rsi
633         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
635         .p2align 4
636 L(shl_6):
637         sub     $0x80, %rdx
638         movaps  -0x06(%rsi), %xmm1
639         movaps  0x0a(%rsi), %xmm2
640         movaps  0x1a(%rsi), %xmm3
641         movaps  0x2a(%rsi), %xmm4
642         movaps  0x3a(%rsi), %xmm5
643         movaps  0x4a(%rsi), %xmm6
644         movaps  0x5a(%rsi), %xmm7
645         movaps  0x6a(%rsi), %xmm8
646         movaps  0x7a(%rsi), %xmm9
647         lea     0x80(%rsi), %rsi
648         palignr $6, %xmm8, %xmm9
649         movaps  %xmm9, 0x70(%rdi)
650         palignr $6, %xmm7, %xmm8
651         movaps  %xmm8, 0x60(%rdi)
652         palignr $6, %xmm6, %xmm7
653         movaps  %xmm7, 0x50(%rdi)
654         palignr $6, %xmm5, %xmm6
655         movaps  %xmm6, 0x40(%rdi)
656         palignr $6, %xmm4, %xmm5
657         movaps  %xmm5, 0x30(%rdi)
658         palignr $6, %xmm3, %xmm4
659         movaps  %xmm4, 0x20(%rdi)
660         palignr $6, %xmm2, %xmm3
661         movaps  %xmm3, 0x10(%rdi)
662         palignr $6, %xmm1, %xmm2
663         movaps  %xmm2, (%rdi)
664         lea     0x80(%rdi), %rdi
665         jae     L(shl_6)
666         movdqu  %xmm0, (%r8)
667         add     $0x80, %rdx
668         add     %rdx, %rdi
669         add     %rdx, %rsi
670         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
672         .p2align 4
673 L(shl_6_bwd):
674         movaps  -0x06(%rsi), %xmm1
676         movaps  -0x16(%rsi), %xmm2
677         palignr $6, %xmm2, %xmm1
678         movaps  %xmm1, -0x10(%rdi)
680         movaps  -0x26(%rsi), %xmm3
681         palignr $6, %xmm3, %xmm2
682         movaps  %xmm2, -0x20(%rdi)
684         movaps  -0x36(%rsi), %xmm4
685         palignr $6, %xmm4, %xmm3
686         movaps  %xmm3, -0x30(%rdi)
688         movaps  -0x46(%rsi), %xmm5
689         palignr $6, %xmm5, %xmm4
690         movaps  %xmm4, -0x40(%rdi)
692         movaps  -0x56(%rsi), %xmm6
693         palignr $6, %xmm6, %xmm5
694         movaps  %xmm5, -0x50(%rdi)
696         movaps  -0x66(%rsi), %xmm7
697         palignr $6, %xmm7, %xmm6
698         movaps  %xmm6, -0x60(%rdi)
700         movaps  -0x76(%rsi), %xmm8
701         palignr $6, %xmm8, %xmm7
702         movaps  %xmm7, -0x70(%rdi)
704         movaps  -0x86(%rsi), %xmm9
705         palignr $6, %xmm9, %xmm8
706         movaps  %xmm8, -0x80(%rdi)
708         sub     $0x80, %rdx
709         lea     -0x80(%rdi), %rdi
710         lea     -0x80(%rsi), %rsi
711         jae     L(shl_6_bwd)
712         movdqu  %xmm0, (%r8)
713         add     $0x80, %rdx
714         sub     %rdx, %rdi
715         sub     %rdx, %rsi
716         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
718         .p2align 4
719 L(shl_7):
720         sub     $0x80, %rdx
721         movaps  -0x07(%rsi), %xmm1
722         movaps  0x09(%rsi), %xmm2
723         movaps  0x19(%rsi), %xmm3
724         movaps  0x29(%rsi), %xmm4
725         movaps  0x39(%rsi), %xmm5
726         movaps  0x49(%rsi), %xmm6
727         movaps  0x59(%rsi), %xmm7
728         movaps  0x69(%rsi), %xmm8
729         movaps  0x79(%rsi), %xmm9
730         lea     0x80(%rsi), %rsi
731         palignr $7, %xmm8, %xmm9
732         movaps  %xmm9, 0x70(%rdi)
733         palignr $7, %xmm7, %xmm8
734         movaps  %xmm8, 0x60(%rdi)
735         palignr $7, %xmm6, %xmm7
736         movaps  %xmm7, 0x50(%rdi)
737         palignr $7, %xmm5, %xmm6
738         movaps  %xmm6, 0x40(%rdi)
739         palignr $7, %xmm4, %xmm5
740         movaps  %xmm5, 0x30(%rdi)
741         palignr $7, %xmm3, %xmm4
742         movaps  %xmm4, 0x20(%rdi)
743         palignr $7, %xmm2, %xmm3
744         movaps  %xmm3, 0x10(%rdi)
745         palignr $7, %xmm1, %xmm2
746         movaps  %xmm2, (%rdi)
747         lea     0x80(%rdi), %rdi
748         jae     L(shl_7)
749         movdqu  %xmm0, (%r8)
750         add     $0x80, %rdx
751         add     %rdx, %rdi
752         add     %rdx, %rsi
753         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
755         .p2align 4
756 L(shl_7_bwd):
757         movaps  -0x07(%rsi), %xmm1
759         movaps  -0x17(%rsi), %xmm2
760         palignr $7, %xmm2, %xmm1
761         movaps  %xmm1, -0x10(%rdi)
763         movaps  -0x27(%rsi), %xmm3
764         palignr $7, %xmm3, %xmm2
765         movaps  %xmm2, -0x20(%rdi)
767         movaps  -0x37(%rsi), %xmm4
768         palignr $7, %xmm4, %xmm3
769         movaps  %xmm3, -0x30(%rdi)
771         movaps  -0x47(%rsi), %xmm5
772         palignr $7, %xmm5, %xmm4
773         movaps  %xmm4, -0x40(%rdi)
775         movaps  -0x57(%rsi), %xmm6
776         palignr $7, %xmm6, %xmm5
777         movaps  %xmm5, -0x50(%rdi)
779         movaps  -0x67(%rsi), %xmm7
780         palignr $7, %xmm7, %xmm6
781         movaps  %xmm6, -0x60(%rdi)
783         movaps  -0x77(%rsi), %xmm8
784         palignr $7, %xmm8, %xmm7
785         movaps  %xmm7, -0x70(%rdi)
787         movaps  -0x87(%rsi), %xmm9
788         palignr $7, %xmm9, %xmm8
789         movaps  %xmm8, -0x80(%rdi)
791         sub     $0x80, %rdx
792         lea     -0x80(%rdi), %rdi
793         lea     -0x80(%rsi), %rsi
794         jae     L(shl_7_bwd)
795         movdqu  %xmm0, (%r8)
796         add     $0x80, %rdx
797         sub     %rdx, %rdi
798         sub     %rdx, %rsi
799         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
801         .p2align 4
802 L(shl_8):
803         sub     $0x80, %rdx
804         movaps  -0x08(%rsi), %xmm1
805         movaps  0x08(%rsi), %xmm2
806         movaps  0x18(%rsi), %xmm3
807         movaps  0x28(%rsi), %xmm4
808         movaps  0x38(%rsi), %xmm5
809         movaps  0x48(%rsi), %xmm6
810         movaps  0x58(%rsi), %xmm7
811         movaps  0x68(%rsi), %xmm8
812         movaps  0x78(%rsi), %xmm9
813         lea     0x80(%rsi), %rsi
814         palignr $8, %xmm8, %xmm9
815         movaps  %xmm9, 0x70(%rdi)
816         palignr $8, %xmm7, %xmm8
817         movaps  %xmm8, 0x60(%rdi)
818         palignr $8, %xmm6, %xmm7
819         movaps  %xmm7, 0x50(%rdi)
820         palignr $8, %xmm5, %xmm6
821         movaps  %xmm6, 0x40(%rdi)
822         palignr $8, %xmm4, %xmm5
823         movaps  %xmm5, 0x30(%rdi)
824         palignr $8, %xmm3, %xmm4
825         movaps  %xmm4, 0x20(%rdi)
826         palignr $8, %xmm2, %xmm3
827         movaps  %xmm3, 0x10(%rdi)
828         palignr $8, %xmm1, %xmm2
829         movaps  %xmm2, (%rdi)
830         lea     0x80(%rdi), %rdi
831         jae     L(shl_8)
832         movdqu  %xmm0, (%r8)
833         add     $0x80, %rdx
834         add     %rdx, %rdi
835         add     %rdx, %rsi
836         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
838         .p2align 4
839 L(shl_8_bwd):
840         movaps  -0x08(%rsi), %xmm1
842         movaps  -0x18(%rsi), %xmm2
843         palignr $8, %xmm2, %xmm1
844         movaps  %xmm1, -0x10(%rdi)
846         movaps  -0x28(%rsi), %xmm3
847         palignr $8, %xmm3, %xmm2
848         movaps  %xmm2, -0x20(%rdi)
850         movaps  -0x38(%rsi), %xmm4
851         palignr $8, %xmm4, %xmm3
852         movaps  %xmm3, -0x30(%rdi)
854         movaps  -0x48(%rsi), %xmm5
855         palignr $8, %xmm5, %xmm4
856         movaps  %xmm4, -0x40(%rdi)
858         movaps  -0x58(%rsi), %xmm6
859         palignr $8, %xmm6, %xmm5
860         movaps  %xmm5, -0x50(%rdi)
862         movaps  -0x68(%rsi), %xmm7
863         palignr $8, %xmm7, %xmm6
864         movaps  %xmm6, -0x60(%rdi)
866         movaps  -0x78(%rsi), %xmm8
867         palignr $8, %xmm8, %xmm7
868         movaps  %xmm7, -0x70(%rdi)
870         movaps  -0x88(%rsi), %xmm9
871         palignr $8, %xmm9, %xmm8
872         movaps  %xmm8, -0x80(%rdi)
874         sub     $0x80, %rdx
875         lea     -0x80(%rdi), %rdi
876         lea     -0x80(%rsi), %rsi
877         jae     L(shl_8_bwd)
878 L(shl_8_end_bwd):
879         movdqu  %xmm0, (%r8)
880         add     $0x80, %rdx
881         sub     %rdx, %rdi
882         sub     %rdx, %rsi
883         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
885         .p2align 4
886 L(shl_9):
887         sub     $0x80, %rdx
888         movaps  -0x09(%rsi), %xmm1
889         movaps  0x07(%rsi), %xmm2
890         movaps  0x17(%rsi), %xmm3
891         movaps  0x27(%rsi), %xmm4
892         movaps  0x37(%rsi), %xmm5
893         movaps  0x47(%rsi), %xmm6
894         movaps  0x57(%rsi), %xmm7
895         movaps  0x67(%rsi), %xmm8
896         movaps  0x77(%rsi), %xmm9
897         lea     0x80(%rsi), %rsi
898         palignr $9, %xmm8, %xmm9
899         movaps  %xmm9, 0x70(%rdi)
900         palignr $9, %xmm7, %xmm8
901         movaps  %xmm8, 0x60(%rdi)
902         palignr $9, %xmm6, %xmm7
903         movaps  %xmm7, 0x50(%rdi)
904         palignr $9, %xmm5, %xmm6
905         movaps  %xmm6, 0x40(%rdi)
906         palignr $9, %xmm4, %xmm5
907         movaps  %xmm5, 0x30(%rdi)
908         palignr $9, %xmm3, %xmm4
909         movaps  %xmm4, 0x20(%rdi)
910         palignr $9, %xmm2, %xmm3
911         movaps  %xmm3, 0x10(%rdi)
912         palignr $9, %xmm1, %xmm2
913         movaps  %xmm2, (%rdi)
914         lea     0x80(%rdi), %rdi
915         jae     L(shl_9)
916         movdqu  %xmm0, (%r8)
917         add     $0x80, %rdx
918         add     %rdx, %rdi
919         add     %rdx, %rsi
920         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
922         .p2align 4
923 L(shl_9_bwd):
924         movaps  -0x09(%rsi), %xmm1
926         movaps  -0x19(%rsi), %xmm2
927         palignr $9, %xmm2, %xmm1
928         movaps  %xmm1, -0x10(%rdi)
930         movaps  -0x29(%rsi), %xmm3
931         palignr $9, %xmm3, %xmm2
932         movaps  %xmm2, -0x20(%rdi)
934         movaps  -0x39(%rsi), %xmm4
935         palignr $9, %xmm4, %xmm3
936         movaps  %xmm3, -0x30(%rdi)
938         movaps  -0x49(%rsi), %xmm5
939         palignr $9, %xmm5, %xmm4
940         movaps  %xmm4, -0x40(%rdi)
942         movaps  -0x59(%rsi), %xmm6
943         palignr $9, %xmm6, %xmm5
944         movaps  %xmm5, -0x50(%rdi)
946         movaps  -0x69(%rsi), %xmm7
947         palignr $9, %xmm7, %xmm6
948         movaps  %xmm6, -0x60(%rdi)
950         movaps  -0x79(%rsi), %xmm8
951         palignr $9, %xmm8, %xmm7
952         movaps  %xmm7, -0x70(%rdi)
954         movaps  -0x89(%rsi), %xmm9
955         palignr $9, %xmm9, %xmm8
956         movaps  %xmm8, -0x80(%rdi)
958         sub     $0x80, %rdx
959         lea     -0x80(%rdi), %rdi
960         lea     -0x80(%rsi), %rsi
961         jae     L(shl_9_bwd)
962         movdqu  %xmm0, (%r8)
963         add     $0x80, %rdx
964         sub     %rdx, %rdi
965         sub     %rdx, %rsi
966         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
968         .p2align 4
969 L(shl_10):
970         sub     $0x80, %rdx
971         movaps  -0x0a(%rsi), %xmm1
972         movaps  0x06(%rsi), %xmm2
973         movaps  0x16(%rsi), %xmm3
974         movaps  0x26(%rsi), %xmm4
975         movaps  0x36(%rsi), %xmm5
976         movaps  0x46(%rsi), %xmm6
977         movaps  0x56(%rsi), %xmm7
978         movaps  0x66(%rsi), %xmm8
979         movaps  0x76(%rsi), %xmm9
980         lea     0x80(%rsi), %rsi
981         palignr $10, %xmm8, %xmm9
982         movaps  %xmm9, 0x70(%rdi)
983         palignr $10, %xmm7, %xmm8
984         movaps  %xmm8, 0x60(%rdi)
985         palignr $10, %xmm6, %xmm7
986         movaps  %xmm7, 0x50(%rdi)
987         palignr $10, %xmm5, %xmm6
988         movaps  %xmm6, 0x40(%rdi)
989         palignr $10, %xmm4, %xmm5
990         movaps  %xmm5, 0x30(%rdi)
991         palignr $10, %xmm3, %xmm4
992         movaps  %xmm4, 0x20(%rdi)
993         palignr $10, %xmm2, %xmm3
994         movaps  %xmm3, 0x10(%rdi)
995         palignr $10, %xmm1, %xmm2
996         movaps  %xmm2, (%rdi)
997         lea     0x80(%rdi), %rdi
998         jae     L(shl_10)
999         movdqu  %xmm0, (%r8)
1000         add     $0x80, %rdx
1001         add     %rdx, %rdi
1002         add     %rdx, %rsi
1003         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
1005         .p2align 4
1006 L(shl_10_bwd):
1007         movaps  -0x0a(%rsi), %xmm1
1009         movaps  -0x1a(%rsi), %xmm2
1010         palignr $10, %xmm2, %xmm1
1011         movaps  %xmm1, -0x10(%rdi)
1013         movaps  -0x2a(%rsi), %xmm3
1014         palignr $10, %xmm3, %xmm2
1015         movaps  %xmm2, -0x20(%rdi)
1017         movaps  -0x3a(%rsi), %xmm4
1018         palignr $10, %xmm4, %xmm3
1019         movaps  %xmm3, -0x30(%rdi)
1021         movaps  -0x4a(%rsi), %xmm5
1022         palignr $10, %xmm5, %xmm4
1023         movaps  %xmm4, -0x40(%rdi)
1025         movaps  -0x5a(%rsi), %xmm6
1026         palignr $10, %xmm6, %xmm5
1027         movaps  %xmm5, -0x50(%rdi)
1029         movaps  -0x6a(%rsi), %xmm7
1030         palignr $10, %xmm7, %xmm6
1031         movaps  %xmm6, -0x60(%rdi)
1033         movaps  -0x7a(%rsi), %xmm8
1034         palignr $10, %xmm8, %xmm7
1035         movaps  %xmm7, -0x70(%rdi)
1037         movaps  -0x8a(%rsi), %xmm9
1038         palignr $10, %xmm9, %xmm8
1039         movaps  %xmm8, -0x80(%rdi)
1041         sub     $0x80, %rdx
1042         lea     -0x80(%rdi), %rdi
1043         lea     -0x80(%rsi), %rsi
1044         jae     L(shl_10_bwd)
1045         movdqu  %xmm0, (%r8)
1046         add     $0x80, %rdx
1047         sub     %rdx, %rdi
1048         sub     %rdx, %rsi
1049         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
1051         .p2align 4
1052 L(shl_11):
1053         sub     $0x80, %rdx
1054         movaps  -0x0b(%rsi), %xmm1
1055         movaps  0x05(%rsi), %xmm2
1056         movaps  0x15(%rsi), %xmm3
1057         movaps  0x25(%rsi), %xmm4
1058         movaps  0x35(%rsi), %xmm5
1059         movaps  0x45(%rsi), %xmm6
1060         movaps  0x55(%rsi), %xmm7
1061         movaps  0x65(%rsi), %xmm8
1062         movaps  0x75(%rsi), %xmm9
1063         lea     0x80(%rsi), %rsi
1064         palignr $11, %xmm8, %xmm9
1065         movaps  %xmm9, 0x70(%rdi)
1066         palignr $11, %xmm7, %xmm8
1067         movaps  %xmm8, 0x60(%rdi)
1068         palignr $11, %xmm6, %xmm7
1069         movaps  %xmm7, 0x50(%rdi)
1070         palignr $11, %xmm5, %xmm6
1071         movaps  %xmm6, 0x40(%rdi)
1072         palignr $11, %xmm4, %xmm5
1073         movaps  %xmm5, 0x30(%rdi)
1074         palignr $11, %xmm3, %xmm4
1075         movaps  %xmm4, 0x20(%rdi)
1076         palignr $11, %xmm2, %xmm3
1077         movaps  %xmm3, 0x10(%rdi)
1078         palignr $11, %xmm1, %xmm2
1079         movaps  %xmm2, (%rdi)
1080         lea     0x80(%rdi), %rdi
1081         jae     L(shl_11)
1082         movdqu  %xmm0, (%r8)
1083         add     $0x80, %rdx
1084         add     %rdx, %rdi
1085         add     %rdx, %rsi
1086         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
1088         .p2align 4
1089 L(shl_11_bwd):
1090         movaps  -0x0b(%rsi), %xmm1
1092         movaps  -0x1b(%rsi), %xmm2
1093         palignr $11, %xmm2, %xmm1
1094         movaps  %xmm1, -0x10(%rdi)
1096         movaps  -0x2b(%rsi), %xmm3
1097         palignr $11, %xmm3, %xmm2
1098         movaps  %xmm2, -0x20(%rdi)
1100         movaps  -0x3b(%rsi), %xmm4
1101         palignr $11, %xmm4, %xmm3
1102         movaps  %xmm3, -0x30(%rdi)
1104         movaps  -0x4b(%rsi), %xmm5
1105         palignr $11, %xmm5, %xmm4
1106         movaps  %xmm4, -0x40(%rdi)
1108         movaps  -0x5b(%rsi), %xmm6
1109         palignr $11, %xmm6, %xmm5
1110         movaps  %xmm5, -0x50(%rdi)
1112         movaps  -0x6b(%rsi), %xmm7
1113         palignr $11, %xmm7, %xmm6
1114         movaps  %xmm6, -0x60(%rdi)
1116         movaps  -0x7b(%rsi), %xmm8
1117         palignr $11, %xmm8, %xmm7
1118         movaps  %xmm7, -0x70(%rdi)
1120         movaps  -0x8b(%rsi), %xmm9
1121         palignr $11, %xmm9, %xmm8
1122         movaps  %xmm8, -0x80(%rdi)
1124         sub     $0x80, %rdx
1125         lea     -0x80(%rdi), %rdi
1126         lea     -0x80(%rsi), %rsi
1127         jae     L(shl_11_bwd)
1128         movdqu  %xmm0, (%r8)
1129         add     $0x80, %rdx
1130         sub     %rdx, %rdi
1131         sub     %rdx, %rsi
1132         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
1134         .p2align 4
1135 L(shl_12):
1136         sub     $0x80, %rdx
1137         movdqa  -0x0c(%rsi), %xmm1
1138         movaps  0x04(%rsi), %xmm2
1139         movaps  0x14(%rsi), %xmm3
1140         movaps  0x24(%rsi), %xmm4
1141         movaps  0x34(%rsi), %xmm5
1142         movaps  0x44(%rsi), %xmm6
1143         movaps  0x54(%rsi), %xmm7
1144         movaps  0x64(%rsi), %xmm8
1145         movaps  0x74(%rsi), %xmm9
1146         lea     0x80(%rsi), %rsi
1147         palignr $12, %xmm8, %xmm9
1148         movaps  %xmm9, 0x70(%rdi)
1149         palignr $12, %xmm7, %xmm8
1150         movaps  %xmm8, 0x60(%rdi)
1151         palignr $12, %xmm6, %xmm7
1152         movaps  %xmm7, 0x50(%rdi)
1153         palignr $12, %xmm5, %xmm6
1154         movaps  %xmm6, 0x40(%rdi)
1155         palignr $12, %xmm4, %xmm5
1156         movaps  %xmm5, 0x30(%rdi)
1157         palignr $12, %xmm3, %xmm4
1158         movaps  %xmm4, 0x20(%rdi)
1159         palignr $12, %xmm2, %xmm3
1160         movaps  %xmm3, 0x10(%rdi)
1161         palignr $12, %xmm1, %xmm2
1162         movaps  %xmm2, (%rdi)
1164         lea     0x80(%rdi), %rdi
1165         jae     L(shl_12)
1166         movdqu  %xmm0, (%r8)
1167         add     $0x80, %rdx
1168         add     %rdx, %rdi
1169         add     %rdx, %rsi
1170         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
1172         .p2align 4
1173 L(shl_12_bwd):
1174         movaps  -0x0c(%rsi), %xmm1
1176         movaps  -0x1c(%rsi), %xmm2
1177         palignr $12, %xmm2, %xmm1
1178         movaps  %xmm1, -0x10(%rdi)
1180         movaps  -0x2c(%rsi), %xmm3
1181         palignr $12, %xmm3, %xmm2
1182         movaps  %xmm2, -0x20(%rdi)
1184         movaps  -0x3c(%rsi), %xmm4
1185         palignr $12, %xmm4, %xmm3
1186         movaps  %xmm3, -0x30(%rdi)
1188         movaps  -0x4c(%rsi), %xmm5
1189         palignr $12, %xmm5, %xmm4
1190         movaps  %xmm4, -0x40(%rdi)
1192         movaps  -0x5c(%rsi), %xmm6
1193         palignr $12, %xmm6, %xmm5
1194         movaps  %xmm5, -0x50(%rdi)
1196         movaps  -0x6c(%rsi), %xmm7
1197         palignr $12, %xmm7, %xmm6
1198         movaps  %xmm6, -0x60(%rdi)
1200         movaps  -0x7c(%rsi), %xmm8
1201         palignr $12, %xmm8, %xmm7
1202         movaps  %xmm7, -0x70(%rdi)
1204         movaps  -0x8c(%rsi), %xmm9
1205         palignr $12, %xmm9, %xmm8
1206         movaps  %xmm8, -0x80(%rdi)
1208         sub     $0x80, %rdx
1209         lea     -0x80(%rdi), %rdi
1210         lea     -0x80(%rsi), %rsi
1211         jae     L(shl_12_bwd)
1212         movdqu  %xmm0, (%r8)
1213         add     $0x80, %rdx
1214         sub     %rdx, %rdi
1215         sub     %rdx, %rsi
1216         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
1218         .p2align 4
1219 L(shl_13):
1220         sub     $0x80, %rdx
1221         movaps  -0x0d(%rsi), %xmm1
1222         movaps  0x03(%rsi), %xmm2
1223         movaps  0x13(%rsi), %xmm3
1224         movaps  0x23(%rsi), %xmm4
1225         movaps  0x33(%rsi), %xmm5
1226         movaps  0x43(%rsi), %xmm6
1227         movaps  0x53(%rsi), %xmm7
1228         movaps  0x63(%rsi), %xmm8
1229         movaps  0x73(%rsi), %xmm9
1230         lea     0x80(%rsi), %rsi
1231         palignr $13, %xmm8, %xmm9
1232         movaps  %xmm9, 0x70(%rdi)
1233         palignr $13, %xmm7, %xmm8
1234         movaps  %xmm8, 0x60(%rdi)
1235         palignr $13, %xmm6, %xmm7
1236         movaps  %xmm7, 0x50(%rdi)
1237         palignr $13, %xmm5, %xmm6
1238         movaps  %xmm6, 0x40(%rdi)
1239         palignr $13, %xmm4, %xmm5
1240         movaps  %xmm5, 0x30(%rdi)
1241         palignr $13, %xmm3, %xmm4
1242         movaps  %xmm4, 0x20(%rdi)
1243         palignr $13, %xmm2, %xmm3
1244         movaps  %xmm3, 0x10(%rdi)
1245         palignr $13, %xmm1, %xmm2
1246         movaps  %xmm2, (%rdi)
1247         lea     0x80(%rdi), %rdi
1248         jae     L(shl_13)
1249         movdqu  %xmm0, (%r8)
1250         add     $0x80, %rdx
1251         add     %rdx, %rdi
1252         add     %rdx, %rsi
1253         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
1255         .p2align 4
1256 L(shl_13_bwd):
1257         movaps  -0x0d(%rsi), %xmm1
1259         movaps  -0x1d(%rsi), %xmm2
1260         palignr $13, %xmm2, %xmm1
1261         movaps  %xmm1, -0x10(%rdi)
1263         movaps  -0x2d(%rsi), %xmm3
1264         palignr $13, %xmm3, %xmm2
1265         movaps  %xmm2, -0x20(%rdi)
1267         movaps  -0x3d(%rsi), %xmm4
1268         palignr $13, %xmm4, %xmm3
1269         movaps  %xmm3, -0x30(%rdi)
1271         movaps  -0x4d(%rsi), %xmm5
1272         palignr $13, %xmm5, %xmm4
1273         movaps  %xmm4, -0x40(%rdi)
1275         movaps  -0x5d(%rsi), %xmm6
1276         palignr $13, %xmm6, %xmm5
1277         movaps  %xmm5, -0x50(%rdi)
1279         movaps  -0x6d(%rsi), %xmm7
1280         palignr $13, %xmm7, %xmm6
1281         movaps  %xmm6, -0x60(%rdi)
1283         movaps  -0x7d(%rsi), %xmm8
1284         palignr $13, %xmm8, %xmm7
1285         movaps  %xmm7, -0x70(%rdi)
1287         movaps  -0x8d(%rsi), %xmm9
1288         palignr $13, %xmm9, %xmm8
1289         movaps  %xmm8, -0x80(%rdi)
1291         sub     $0x80, %rdx
1292         lea     -0x80(%rdi), %rdi
1293         lea     -0x80(%rsi), %rsi
1294         jae     L(shl_13_bwd)
1295         movdqu  %xmm0, (%r8)
1296         add     $0x80, %rdx
1297         sub     %rdx, %rdi
1298         sub     %rdx, %rsi
1299         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
1301         .p2align 4
1302 L(shl_14):
1303         sub     $0x80, %rdx
1304         movaps  -0x0e(%rsi), %xmm1
1305         movaps  0x02(%rsi), %xmm2
1306         movaps  0x12(%rsi), %xmm3
1307         movaps  0x22(%rsi), %xmm4
1308         movaps  0x32(%rsi), %xmm5
1309         movaps  0x42(%rsi), %xmm6
1310         movaps  0x52(%rsi), %xmm7
1311         movaps  0x62(%rsi), %xmm8
1312         movaps  0x72(%rsi), %xmm9
1313         lea     0x80(%rsi), %rsi
1314         palignr $14, %xmm8, %xmm9
1315         movaps  %xmm9, 0x70(%rdi)
1316         palignr $14, %xmm7, %xmm8
1317         movaps  %xmm8, 0x60(%rdi)
1318         palignr $14, %xmm6, %xmm7
1319         movaps  %xmm7, 0x50(%rdi)
1320         palignr $14, %xmm5, %xmm6
1321         movaps  %xmm6, 0x40(%rdi)
1322         palignr $14, %xmm4, %xmm5
1323         movaps  %xmm5, 0x30(%rdi)
1324         palignr $14, %xmm3, %xmm4
1325         movaps  %xmm4, 0x20(%rdi)
1326         palignr $14, %xmm2, %xmm3
1327         movaps  %xmm3, 0x10(%rdi)
1328         palignr $14, %xmm1, %xmm2
1329         movaps  %xmm2, (%rdi)
1330         lea     0x80(%rdi), %rdi
1331         jae     L(shl_14)
1332         movdqu  %xmm0, (%r8)
1333         add     $0x80, %rdx
1334         add     %rdx, %rdi
1335         add     %rdx, %rsi
1336         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
1338         .p2align 4
1339 L(shl_14_bwd):
1340         movaps  -0x0e(%rsi), %xmm1
1342         movaps  -0x1e(%rsi), %xmm2
1343         palignr $14, %xmm2, %xmm1
1344         movaps  %xmm1, -0x10(%rdi)
1346         movaps  -0x2e(%rsi), %xmm3
1347         palignr $14, %xmm3, %xmm2
1348         movaps  %xmm2, -0x20(%rdi)
1350         movaps  -0x3e(%rsi), %xmm4
1351         palignr $14, %xmm4, %xmm3
1352         movaps  %xmm3, -0x30(%rdi)
1354         movaps  -0x4e(%rsi), %xmm5
1355         palignr $14, %xmm5, %xmm4
1356         movaps  %xmm4, -0x40(%rdi)
1358         movaps  -0x5e(%rsi), %xmm6
1359         palignr $14, %xmm6, %xmm5
1360         movaps  %xmm5, -0x50(%rdi)
1362         movaps  -0x6e(%rsi), %xmm7
1363         palignr $14, %xmm7, %xmm6
1364         movaps  %xmm6, -0x60(%rdi)
1366         movaps  -0x7e(%rsi), %xmm8
1367         palignr $14, %xmm8, %xmm7
1368         movaps  %xmm7, -0x70(%rdi)
1370         movaps  -0x8e(%rsi), %xmm9
1371         palignr $14, %xmm9, %xmm8
1372         movaps  %xmm8, -0x80(%rdi)
1374         sub     $0x80, %rdx
1375         lea     -0x80(%rdi), %rdi
1376         lea     -0x80(%rsi), %rsi
1377         jae     L(shl_14_bwd)
1378         movdqu  %xmm0, (%r8)
1379         add     $0x80, %rdx
1380         sub     %rdx, %rdi
1381         sub     %rdx, %rsi
1382         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
1384         .p2align 4
1385 L(shl_15):
1386         sub     $0x80, %rdx
1387         movaps  -0x0f(%rsi), %xmm1
1388         movaps  0x01(%rsi), %xmm2
1389         movaps  0x11(%rsi), %xmm3
1390         movaps  0x21(%rsi), %xmm4
1391         movaps  0x31(%rsi), %xmm5
1392         movaps  0x41(%rsi), %xmm6
1393         movaps  0x51(%rsi), %xmm7
1394         movaps  0x61(%rsi), %xmm8
1395         movaps  0x71(%rsi), %xmm9
1396         lea     0x80(%rsi), %rsi
1397         palignr $15, %xmm8, %xmm9
1398         movaps  %xmm9, 0x70(%rdi)
1399         palignr $15, %xmm7, %xmm8
1400         movaps  %xmm8, 0x60(%rdi)
1401         palignr $15, %xmm6, %xmm7
1402         movaps  %xmm7, 0x50(%rdi)
1403         palignr $15, %xmm5, %xmm6
1404         movaps  %xmm6, 0x40(%rdi)
1405         palignr $15, %xmm4, %xmm5
1406         movaps  %xmm5, 0x30(%rdi)
1407         palignr $15, %xmm3, %xmm4
1408         movaps  %xmm4, 0x20(%rdi)
1409         palignr $15, %xmm2, %xmm3
1410         movaps  %xmm3, 0x10(%rdi)
1411         palignr $15, %xmm1, %xmm2
1412         movaps  %xmm2, (%rdi)
1413         lea     0x80(%rdi), %rdi
1414         jae     L(shl_15)
1415         movdqu  %xmm0, (%r8)
1416         add     $0x80, %rdx
1417         add     %rdx, %rdi
1418         add     %rdx, %rsi
1419         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
1421         .p2align 4
1422 L(shl_15_bwd):
1423         movaps  -0x0f(%rsi), %xmm1
1425         movaps  -0x1f(%rsi), %xmm2
1426         palignr $15, %xmm2, %xmm1
1427         movaps  %xmm1, -0x10(%rdi)
1429         movaps  -0x2f(%rsi), %xmm3
1430         palignr $15, %xmm3, %xmm2
1431         movaps  %xmm2, -0x20(%rdi)
1433         movaps  -0x3f(%rsi), %xmm4
1434         palignr $15, %xmm4, %xmm3
1435         movaps  %xmm3, -0x30(%rdi)
1437         movaps  -0x4f(%rsi), %xmm5
1438         palignr $15, %xmm5, %xmm4
1439         movaps  %xmm4, -0x40(%rdi)
1441         movaps  -0x5f(%rsi), %xmm6
1442         palignr $15, %xmm6, %xmm5
1443         movaps  %xmm5, -0x50(%rdi)
1445         movaps  -0x6f(%rsi), %xmm7
1446         palignr $15, %xmm7, %xmm6
1447         movaps  %xmm6, -0x60(%rdi)
1449         movaps  -0x7f(%rsi), %xmm8
1450         palignr $15, %xmm8, %xmm7
1451         movaps  %xmm7, -0x70(%rdi)
1453         movaps  -0x8f(%rsi), %xmm9
1454         palignr $15, %xmm9, %xmm8
1455         movaps  %xmm8, -0x80(%rdi)
1457         sub     $0x80, %rdx
1458         lea     -0x80(%rdi), %rdi
1459         lea     -0x80(%rsi), %rsi
1460         jae     L(shl_15_bwd)
1461         movdqu  %xmm0, (%r8)
1462         add     $0x80, %rdx
1463         sub     %rdx, %rdi
1464         sub     %rdx, %rsi
1465         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
1467         .p2align 4
1468 L(gobble_mem_fwd):
1469         movdqu  (%rsi), %xmm1
1470         movdqu  %xmm0, (%r8)
1471         movdqa  %xmm1, (%rdi)
1472         sub     $16, %rdx
1473         add     $16, %rsi
1474         add     $16, %rdi
1476 #ifdef SHARED_CACHE_SIZE_HALF
1477         mov     $SHARED_CACHE_SIZE_HALF, %RCX_LP
1478 #else
1479         mov     __x86_shared_cache_size_half(%rip), %RCX_LP
1480 #endif
1481 #ifdef USE_AS_MEMMOVE
1482         mov     %rsi, %r9
1483         sub     %rdi, %r9
1484         cmp     %rdx, %r9
1485         jae     L(memmove_is_memcpy_fwd)
1486         cmp     %rcx, %r9
1487         jbe     L(ll_cache_copy_fwd_start)
1488 L(memmove_is_memcpy_fwd):
1489 #endif
1490         cmp     %rcx, %rdx
1491         ja      L(bigger_in_fwd)
1492         mov     %rdx, %rcx
1493 L(bigger_in_fwd):
1494         sub     %rcx, %rdx
1495         cmp     $0x1000, %rdx
1496         jbe     L(ll_cache_copy_fwd)
1498         mov     %rcx, %r9
1499         shl     $3, %r9
1500         cmp     %r9, %rdx
1501         jbe     L(2steps_copy_fwd)
1502         add     %rcx, %rdx
1503         xor     %rcx, %rcx
1504 L(2steps_copy_fwd):
1505         sub     $0x80, %rdx
1506 L(gobble_mem_fwd_loop):
1507         sub     $0x80, %rdx
1508         prefetcht0 0x200(%rsi)
1509         prefetcht0 0x300(%rsi)
1510         movdqu  (%rsi), %xmm0
1511         movdqu  0x10(%rsi), %xmm1
1512         movdqu  0x20(%rsi), %xmm2
1513         movdqu  0x30(%rsi), %xmm3
1514         movdqu  0x40(%rsi), %xmm4
1515         movdqu  0x50(%rsi), %xmm5
1516         movdqu  0x60(%rsi), %xmm6
1517         movdqu  0x70(%rsi), %xmm7
1518         lfence
1519         movntdq %xmm0, (%rdi)
1520         movntdq %xmm1, 0x10(%rdi)
1521         movntdq %xmm2, 0x20(%rdi)
1522         movntdq %xmm3, 0x30(%rdi)
1523         movntdq %xmm4, 0x40(%rdi)
1524         movntdq %xmm5, 0x50(%rdi)
1525         movntdq %xmm6, 0x60(%rdi)
1526         movntdq %xmm7, 0x70(%rdi)
1527         lea     0x80(%rsi), %rsi
1528         lea     0x80(%rdi), %rdi
1529         jae     L(gobble_mem_fwd_loop)
1530         sfence
1531         cmp     $0x80, %rcx
1532         jb      L(gobble_mem_fwd_end)
1533         add     $0x80, %rdx
1534 L(ll_cache_copy_fwd):
1535         add     %rcx, %rdx
1536 L(ll_cache_copy_fwd_start):
1537         sub     $0x80, %rdx
1538 L(gobble_ll_loop_fwd):
1539         prefetchnta 0x1c0(%rsi)
1540         prefetchnta 0x280(%rsi)
1541         prefetchnta 0x1c0(%rdi)
1542         prefetchnta 0x280(%rdi)
1543         sub     $0x80, %rdx
1544         movdqu  (%rsi), %xmm0
1545         movdqu  0x10(%rsi), %xmm1
1546         movdqu  0x20(%rsi), %xmm2
1547         movdqu  0x30(%rsi), %xmm3
1548         movdqu  0x40(%rsi), %xmm4
1549         movdqu  0x50(%rsi), %xmm5
1550         movdqu  0x60(%rsi), %xmm6
1551         movdqu  0x70(%rsi), %xmm7
1552         movdqa  %xmm0, (%rdi)
1553         movdqa  %xmm1, 0x10(%rdi)
1554         movdqa  %xmm2, 0x20(%rdi)
1555         movdqa  %xmm3, 0x30(%rdi)
1556         movdqa  %xmm4, 0x40(%rdi)
1557         movdqa  %xmm5, 0x50(%rdi)
1558         movdqa  %xmm6, 0x60(%rdi)
1559         movdqa  %xmm7, 0x70(%rdi)
1560         lea     0x80(%rsi), %rsi
1561         lea     0x80(%rdi), %rdi
1562         jae     L(gobble_ll_loop_fwd)
1563 L(gobble_mem_fwd_end):
1564         add     $0x80, %rdx
1565         add     %rdx, %rsi
1566         add     %rdx, %rdi
1567         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
1569         .p2align 4
1570 L(gobble_mem_bwd):
1571         add     %rdx, %rsi
1572         add     %rdx, %rdi
1574         movdqu  -16(%rsi), %xmm0
1575         lea     -16(%rdi), %r8
1576         mov     %rdi, %r9
1577         and     $-16, %rdi
1578         sub     %rdi, %r9
1579         sub     %r9, %rsi
1580         sub     %r9, %rdx
1583 #ifdef SHARED_CACHE_SIZE_HALF
1584         mov     $SHARED_CACHE_SIZE_HALF, %RCX_LP
1585 #else
1586         mov     __x86_shared_cache_size_half(%rip), %RCX_LP
1587 #endif
1588 #ifdef USE_AS_MEMMOVE
1589         mov     %rdi, %r9
1590         sub     %rsi, %r9
1591         cmp     %rdx, %r9
1592         jae     L(memmove_is_memcpy_bwd)
1593         cmp     %rcx, %r9
1594         jbe     L(ll_cache_copy_bwd_start)
1595 L(memmove_is_memcpy_bwd):
1596 #endif
1597         cmp     %rcx, %rdx
1598         ja      L(bigger)
1599         mov     %rdx, %rcx
1600 L(bigger):
1601         sub     %rcx, %rdx
1602         cmp     $0x1000, %rdx
1603         jbe     L(ll_cache_copy)
1605         mov     %rcx, %r9
1606         shl     $3, %r9
1607         cmp     %r9, %rdx
1608         jbe     L(2steps_copy)
1609         add     %rcx, %rdx
1610         xor     %rcx, %rcx
1611 L(2steps_copy):
1612         sub     $0x80, %rdx
1613 L(gobble_mem_bwd_loop):
1614         sub     $0x80, %rdx
1615         prefetcht0 -0x200(%rsi)
1616         prefetcht0 -0x300(%rsi)
1617         movdqu  -0x10(%rsi), %xmm1
1618         movdqu  -0x20(%rsi), %xmm2
1619         movdqu  -0x30(%rsi), %xmm3
1620         movdqu  -0x40(%rsi), %xmm4
1621         movdqu  -0x50(%rsi), %xmm5
1622         movdqu  -0x60(%rsi), %xmm6
1623         movdqu  -0x70(%rsi), %xmm7
1624         movdqu  -0x80(%rsi), %xmm8
1625         lfence
1626         movntdq %xmm1, -0x10(%rdi)
1627         movntdq %xmm2, -0x20(%rdi)
1628         movntdq %xmm3, -0x30(%rdi)
1629         movntdq %xmm4, -0x40(%rdi)
1630         movntdq %xmm5, -0x50(%rdi)
1631         movntdq %xmm6, -0x60(%rdi)
1632         movntdq %xmm7, -0x70(%rdi)
1633         movntdq %xmm8, -0x80(%rdi)
1634         lea     -0x80(%rsi), %rsi
1635         lea     -0x80(%rdi), %rdi
1636         jae     L(gobble_mem_bwd_loop)
1637         sfence
1638         cmp     $0x80, %rcx
1639         jb      L(gobble_mem_bwd_end)
1640         add     $0x80, %rdx
1641 L(ll_cache_copy):
1642         add     %rcx, %rdx
1643 L(ll_cache_copy_bwd_start):
1644         sub     $0x80, %rdx
1645 L(gobble_ll_loop):
1646         prefetchnta -0x1c0(%rsi)
1647         prefetchnta -0x280(%rsi)
1648         prefetchnta -0x1c0(%rdi)
1649         prefetchnta -0x280(%rdi)
1650         sub     $0x80, %rdx
1651         movdqu  -0x10(%rsi), %xmm1
1652         movdqu  -0x20(%rsi), %xmm2
1653         movdqu  -0x30(%rsi), %xmm3
1654         movdqu  -0x40(%rsi), %xmm4
1655         movdqu  -0x50(%rsi), %xmm5
1656         movdqu  -0x60(%rsi), %xmm6
1657         movdqu  -0x70(%rsi), %xmm7
1658         movdqu  -0x80(%rsi), %xmm8
1659         movdqa  %xmm1, -0x10(%rdi)
1660         movdqa  %xmm2, -0x20(%rdi)
1661         movdqa  %xmm3, -0x30(%rdi)
1662         movdqa  %xmm4, -0x40(%rdi)
1663         movdqa  %xmm5, -0x50(%rdi)
1664         movdqa  %xmm6, -0x60(%rdi)
1665         movdqa  %xmm7, -0x70(%rdi)
1666         movdqa  %xmm8, -0x80(%rdi)
1667         lea     -0x80(%rsi), %rsi
1668         lea     -0x80(%rdi), %rdi
1669         jae     L(gobble_ll_loop)
1670 L(gobble_mem_bwd_end):
1671         movdqu  %xmm0, (%r8)
1672         add     $0x80, %rdx
1673         sub     %rdx, %rsi
1674         sub     %rdx, %rdi
1675         BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
1677         .p2align 4
1678 L(fwd_write_128bytes):
1679         lddqu   -128(%rsi), %xmm0
1680         movdqu  %xmm0, -128(%rdi)
1681 L(fwd_write_112bytes):
1682         lddqu   -112(%rsi), %xmm0
1683         movdqu  %xmm0, -112(%rdi)
1684 L(fwd_write_96bytes):
1685         lddqu   -96(%rsi), %xmm0
1686         movdqu  %xmm0, -96(%rdi)
1687 L(fwd_write_80bytes):
1688         lddqu   -80(%rsi), %xmm0
1689         movdqu  %xmm0, -80(%rdi)
1690 L(fwd_write_64bytes):
1691         lddqu   -64(%rsi), %xmm0
1692         movdqu  %xmm0, -64(%rdi)
1693 L(fwd_write_48bytes):
1694         lddqu   -48(%rsi), %xmm0
1695         movdqu  %xmm0, -48(%rdi)
1696 L(fwd_write_32bytes):
1697         lddqu   -32(%rsi), %xmm0
1698         movdqu  %xmm0, -32(%rdi)
1699 L(fwd_write_16bytes):
1700         lddqu   -16(%rsi), %xmm0
1701         movdqu  %xmm0, -16(%rdi)
1702 L(fwd_write_0bytes):
1703         ret
1706         .p2align 4
1707 L(fwd_write_143bytes):
1708         lddqu   -143(%rsi), %xmm0
1709         movdqu  %xmm0, -143(%rdi)
1710 L(fwd_write_127bytes):
1711         lddqu   -127(%rsi), %xmm0
1712         movdqu  %xmm0, -127(%rdi)
1713 L(fwd_write_111bytes):
1714         lddqu   -111(%rsi), %xmm0
1715         movdqu  %xmm0, -111(%rdi)
1716 L(fwd_write_95bytes):
1717         lddqu   -95(%rsi), %xmm0
1718         movdqu  %xmm0, -95(%rdi)
1719 L(fwd_write_79bytes):
1720         lddqu   -79(%rsi), %xmm0
1721         movdqu  %xmm0, -79(%rdi)
1722 L(fwd_write_63bytes):
1723         lddqu   -63(%rsi), %xmm0
1724         movdqu  %xmm0, -63(%rdi)
1725 L(fwd_write_47bytes):
1726         lddqu   -47(%rsi), %xmm0
1727         movdqu  %xmm0, -47(%rdi)
1728 L(fwd_write_31bytes):
1729         lddqu   -31(%rsi), %xmm0
1730         lddqu   -16(%rsi), %xmm1
1731         movdqu  %xmm0, -31(%rdi)
1732         movdqu  %xmm1, -16(%rdi)
1733         ret
1735         .p2align 4
1736 L(fwd_write_15bytes):
1737         mov     -15(%rsi), %rdx
1738         mov     -8(%rsi), %rcx
1739         mov     %rdx, -15(%rdi)
1740         mov     %rcx, -8(%rdi)
1741         ret
1743         .p2align 4
1744 L(fwd_write_142bytes):
1745         lddqu   -142(%rsi), %xmm0
1746         movdqu  %xmm0, -142(%rdi)
1747 L(fwd_write_126bytes):
1748         lddqu   -126(%rsi), %xmm0
1749         movdqu  %xmm0, -126(%rdi)
1750 L(fwd_write_110bytes):
1751         lddqu   -110(%rsi), %xmm0
1752         movdqu  %xmm0, -110(%rdi)
1753 L(fwd_write_94bytes):
1754         lddqu   -94(%rsi), %xmm0
1755         movdqu  %xmm0, -94(%rdi)
1756 L(fwd_write_78bytes):
1757         lddqu   -78(%rsi), %xmm0
1758         movdqu  %xmm0, -78(%rdi)
1759 L(fwd_write_62bytes):
1760         lddqu   -62(%rsi), %xmm0
1761         movdqu  %xmm0, -62(%rdi)
1762 L(fwd_write_46bytes):
1763         lddqu   -46(%rsi), %xmm0
1764         movdqu  %xmm0, -46(%rdi)
1765 L(fwd_write_30bytes):
1766         lddqu   -30(%rsi), %xmm0
1767         lddqu   -16(%rsi), %xmm1
1768         movdqu  %xmm0, -30(%rdi)
1769         movdqu  %xmm1, -16(%rdi)
1770         ret
1772         .p2align 4
1773 L(fwd_write_14bytes):
1774         mov     -14(%rsi), %rdx
1775         mov     -8(%rsi), %rcx
1776         mov     %rdx, -14(%rdi)
1777         mov     %rcx, -8(%rdi)
1778         ret
1780         .p2align 4
1781 L(fwd_write_141bytes):
1782         lddqu   -141(%rsi), %xmm0
1783         movdqu  %xmm0, -141(%rdi)
1784 L(fwd_write_125bytes):
1785         lddqu   -125(%rsi), %xmm0
1786         movdqu  %xmm0, -125(%rdi)
1787 L(fwd_write_109bytes):
1788         lddqu   -109(%rsi), %xmm0
1789         movdqu  %xmm0, -109(%rdi)
1790 L(fwd_write_93bytes):
1791         lddqu   -93(%rsi), %xmm0
1792         movdqu  %xmm0, -93(%rdi)
1793 L(fwd_write_77bytes):
1794         lddqu   -77(%rsi), %xmm0
1795         movdqu  %xmm0, -77(%rdi)
1796 L(fwd_write_61bytes):
1797         lddqu   -61(%rsi), %xmm0
1798         movdqu  %xmm0, -61(%rdi)
1799 L(fwd_write_45bytes):
1800         lddqu   -45(%rsi), %xmm0
1801         movdqu  %xmm0, -45(%rdi)
1802 L(fwd_write_29bytes):
1803         lddqu   -29(%rsi), %xmm0
1804         lddqu   -16(%rsi), %xmm1
1805         movdqu  %xmm0, -29(%rdi)
1806         movdqu  %xmm1, -16(%rdi)
1807         ret
1809         .p2align 4
1810 L(fwd_write_13bytes):
1811         mov     -13(%rsi), %rdx
1812         mov     -8(%rsi), %rcx
1813         mov     %rdx, -13(%rdi)
1814         mov     %rcx, -8(%rdi)
1815         ret
1817         .p2align 4
1818 L(fwd_write_140bytes):
1819         lddqu   -140(%rsi), %xmm0
1820         movdqu  %xmm0, -140(%rdi)
1821 L(fwd_write_124bytes):
1822         lddqu   -124(%rsi), %xmm0
1823         movdqu  %xmm0, -124(%rdi)
1824 L(fwd_write_108bytes):
1825         lddqu   -108(%rsi), %xmm0
1826         movdqu  %xmm0, -108(%rdi)
1827 L(fwd_write_92bytes):
1828         lddqu   -92(%rsi), %xmm0
1829         movdqu  %xmm0, -92(%rdi)
1830 L(fwd_write_76bytes):
1831         lddqu   -76(%rsi), %xmm0
1832         movdqu  %xmm0, -76(%rdi)
1833 L(fwd_write_60bytes):
1834         lddqu   -60(%rsi), %xmm0
1835         movdqu  %xmm0, -60(%rdi)
1836 L(fwd_write_44bytes):
1837         lddqu   -44(%rsi), %xmm0
1838         movdqu  %xmm0, -44(%rdi)
1839 L(fwd_write_28bytes):
1840         lddqu   -28(%rsi), %xmm0
1841         lddqu   -16(%rsi), %xmm1
1842         movdqu  %xmm0, -28(%rdi)
1843         movdqu  %xmm1, -16(%rdi)
1844         ret
1846         .p2align 4
1847 L(fwd_write_12bytes):
1848         mov     -12(%rsi), %rdx
1849         mov     -4(%rsi), %ecx
1850         mov     %rdx, -12(%rdi)
1851         mov     %ecx, -4(%rdi)
1852         ret
1854         .p2align 4
1855 L(fwd_write_139bytes):
1856         lddqu   -139(%rsi), %xmm0
1857         movdqu  %xmm0, -139(%rdi)
1858 L(fwd_write_123bytes):
1859         lddqu   -123(%rsi), %xmm0
1860         movdqu  %xmm0, -123(%rdi)
1861 L(fwd_write_107bytes):
1862         lddqu   -107(%rsi), %xmm0
1863         movdqu  %xmm0, -107(%rdi)
1864 L(fwd_write_91bytes):
1865         lddqu   -91(%rsi), %xmm0
1866         movdqu  %xmm0, -91(%rdi)
1867 L(fwd_write_75bytes):
1868         lddqu   -75(%rsi), %xmm0
1869         movdqu  %xmm0, -75(%rdi)
1870 L(fwd_write_59bytes):
1871         lddqu   -59(%rsi), %xmm0
1872         movdqu  %xmm0, -59(%rdi)
1873 L(fwd_write_43bytes):
1874         lddqu   -43(%rsi), %xmm0
1875         movdqu  %xmm0, -43(%rdi)
1876 L(fwd_write_27bytes):
1877         lddqu   -27(%rsi), %xmm0
1878         lddqu   -16(%rsi), %xmm1
1879         movdqu  %xmm0, -27(%rdi)
1880         movdqu  %xmm1, -16(%rdi)
1881         ret
1883         .p2align 4
1884 L(fwd_write_11bytes):
1885         mov     -11(%rsi), %rdx
1886         mov     -4(%rsi), %ecx
1887         mov     %rdx, -11(%rdi)
1888         mov     %ecx, -4(%rdi)
1889         ret
1891         .p2align 4
1892 L(fwd_write_138bytes):
1893         lddqu   -138(%rsi), %xmm0
1894         movdqu  %xmm0, -138(%rdi)
1895 L(fwd_write_122bytes):
1896         lddqu   -122(%rsi), %xmm0
1897         movdqu  %xmm0, -122(%rdi)
1898 L(fwd_write_106bytes):
1899         lddqu   -106(%rsi), %xmm0
1900         movdqu  %xmm0, -106(%rdi)
1901 L(fwd_write_90bytes):
1902         lddqu   -90(%rsi), %xmm0
1903         movdqu  %xmm0, -90(%rdi)
1904 L(fwd_write_74bytes):
1905         lddqu   -74(%rsi), %xmm0
1906         movdqu  %xmm0, -74(%rdi)
1907 L(fwd_write_58bytes):
1908         lddqu   -58(%rsi), %xmm0
1909         movdqu  %xmm0, -58(%rdi)
1910 L(fwd_write_42bytes):
1911         lddqu   -42(%rsi), %xmm0
1912         movdqu  %xmm0, -42(%rdi)
1913 L(fwd_write_26bytes):
1914         lddqu   -26(%rsi), %xmm0
1915         lddqu   -16(%rsi), %xmm1
1916         movdqu  %xmm0, -26(%rdi)
1917         movdqu  %xmm1, -16(%rdi)
1918         ret
1920         .p2align 4
1921 L(fwd_write_10bytes):
1922         mov     -10(%rsi), %rdx
1923         mov     -4(%rsi), %ecx
1924         mov     %rdx, -10(%rdi)
1925         mov     %ecx, -4(%rdi)
1926         ret
1928         .p2align 4
1929 L(fwd_write_137bytes):
1930         lddqu   -137(%rsi), %xmm0
1931         movdqu  %xmm0, -137(%rdi)
1932 L(fwd_write_121bytes):
1933         lddqu   -121(%rsi), %xmm0
1934         movdqu  %xmm0, -121(%rdi)
1935 L(fwd_write_105bytes):
1936         lddqu   -105(%rsi), %xmm0
1937         movdqu  %xmm0, -105(%rdi)
1938 L(fwd_write_89bytes):
1939         lddqu   -89(%rsi), %xmm0
1940         movdqu  %xmm0, -89(%rdi)
1941 L(fwd_write_73bytes):
1942         lddqu   -73(%rsi), %xmm0
1943         movdqu  %xmm0, -73(%rdi)
1944 L(fwd_write_57bytes):
1945         lddqu   -57(%rsi), %xmm0
1946         movdqu  %xmm0, -57(%rdi)
1947 L(fwd_write_41bytes):
1948         lddqu   -41(%rsi), %xmm0
1949         movdqu  %xmm0, -41(%rdi)
1950 L(fwd_write_25bytes):
1951         lddqu   -25(%rsi), %xmm0
1952         lddqu   -16(%rsi), %xmm1
1953         movdqu  %xmm0, -25(%rdi)
1954         movdqu  %xmm1, -16(%rdi)
1955         ret
1957         .p2align 4
1958 L(fwd_write_9bytes):
1959         mov     -9(%rsi), %rdx
1960         mov     -4(%rsi), %ecx
1961         mov     %rdx, -9(%rdi)
1962         mov     %ecx, -4(%rdi)
1963         ret
1965         .p2align 4
1966 L(fwd_write_136bytes):
1967         lddqu   -136(%rsi), %xmm0
1968         movdqu  %xmm0, -136(%rdi)
1969 L(fwd_write_120bytes):
1970         lddqu   -120(%rsi), %xmm0
1971         movdqu  %xmm0, -120(%rdi)
1972 L(fwd_write_104bytes):
1973         lddqu   -104(%rsi), %xmm0
1974         movdqu  %xmm0, -104(%rdi)
1975 L(fwd_write_88bytes):
1976         lddqu   -88(%rsi), %xmm0
1977         movdqu  %xmm0, -88(%rdi)
1978 L(fwd_write_72bytes):
1979         lddqu   -72(%rsi), %xmm0
1980         movdqu  %xmm0, -72(%rdi)
1981 L(fwd_write_56bytes):
1982         lddqu   -56(%rsi), %xmm0
1983         movdqu  %xmm0, -56(%rdi)
1984 L(fwd_write_40bytes):
1985         lddqu   -40(%rsi), %xmm0
1986         movdqu  %xmm0, -40(%rdi)
1987 L(fwd_write_24bytes):
1988         lddqu   -24(%rsi), %xmm0
1989         lddqu   -16(%rsi), %xmm1
1990         movdqu  %xmm0, -24(%rdi)
1991         movdqu  %xmm1, -16(%rdi)
1992         ret
1994         .p2align 4
1995 L(fwd_write_8bytes):
1996         mov     -8(%rsi), %rdx
1997         mov     %rdx, -8(%rdi)
1998         ret
2000         .p2align 4
2001 L(fwd_write_135bytes):
2002         lddqu   -135(%rsi), %xmm0
2003         movdqu  %xmm0, -135(%rdi)
2004 L(fwd_write_119bytes):
2005         lddqu   -119(%rsi), %xmm0
2006         movdqu  %xmm0, -119(%rdi)
2007 L(fwd_write_103bytes):
2008         lddqu   -103(%rsi), %xmm0
2009         movdqu  %xmm0, -103(%rdi)
2010 L(fwd_write_87bytes):
2011         lddqu   -87(%rsi), %xmm0
2012         movdqu  %xmm0, -87(%rdi)
2013 L(fwd_write_71bytes):
2014         lddqu   -71(%rsi), %xmm0
2015         movdqu  %xmm0, -71(%rdi)
2016 L(fwd_write_55bytes):
2017         lddqu   -55(%rsi), %xmm0
2018         movdqu  %xmm0, -55(%rdi)
2019 L(fwd_write_39bytes):
2020         lddqu   -39(%rsi), %xmm0
2021         movdqu  %xmm0, -39(%rdi)
2022 L(fwd_write_23bytes):
2023         lddqu   -23(%rsi), %xmm0
2024         lddqu   -16(%rsi), %xmm1
2025         movdqu  %xmm0, -23(%rdi)
2026         movdqu  %xmm1, -16(%rdi)
2027         ret
2029         .p2align 4
2030 L(fwd_write_7bytes):
2031         mov     -7(%rsi), %edx
2032         mov     -4(%rsi), %ecx
2033         mov     %edx, -7(%rdi)
2034         mov     %ecx, -4(%rdi)
2035         ret
2037         .p2align 4
2038 L(fwd_write_134bytes):
2039         lddqu   -134(%rsi), %xmm0
2040         movdqu  %xmm0, -134(%rdi)
2041 L(fwd_write_118bytes):
2042         lddqu   -118(%rsi), %xmm0
2043         movdqu  %xmm0, -118(%rdi)
2044 L(fwd_write_102bytes):
2045         lddqu   -102(%rsi), %xmm0
2046         movdqu  %xmm0, -102(%rdi)
2047 L(fwd_write_86bytes):
2048         lddqu   -86(%rsi), %xmm0
2049         movdqu  %xmm0, -86(%rdi)
2050 L(fwd_write_70bytes):
2051         lddqu   -70(%rsi), %xmm0
2052         movdqu  %xmm0, -70(%rdi)
2053 L(fwd_write_54bytes):
2054         lddqu   -54(%rsi), %xmm0
2055         movdqu  %xmm0, -54(%rdi)
2056 L(fwd_write_38bytes):
2057         lddqu   -38(%rsi), %xmm0
2058         movdqu  %xmm0, -38(%rdi)
2059 L(fwd_write_22bytes):
2060         lddqu   -22(%rsi), %xmm0
2061         lddqu   -16(%rsi), %xmm1
2062         movdqu  %xmm0, -22(%rdi)
2063         movdqu  %xmm1, -16(%rdi)
2064         ret
2066         .p2align 4
2067 L(fwd_write_6bytes):
2068         mov     -6(%rsi), %edx
2069         mov     -4(%rsi), %ecx
2070         mov     %edx, -6(%rdi)
2071         mov     %ecx, -4(%rdi)
2072         ret
2074         .p2align 4
2075 L(fwd_write_133bytes):
2076         lddqu   -133(%rsi), %xmm0
2077         movdqu  %xmm0, -133(%rdi)
2078 L(fwd_write_117bytes):
2079         lddqu   -117(%rsi), %xmm0
2080         movdqu  %xmm0, -117(%rdi)
2081 L(fwd_write_101bytes):
2082         lddqu   -101(%rsi), %xmm0
2083         movdqu  %xmm0, -101(%rdi)
2084 L(fwd_write_85bytes):
2085         lddqu   -85(%rsi), %xmm0
2086         movdqu  %xmm0, -85(%rdi)
2087 L(fwd_write_69bytes):
2088         lddqu   -69(%rsi), %xmm0
2089         movdqu  %xmm0, -69(%rdi)
2090 L(fwd_write_53bytes):
2091         lddqu   -53(%rsi), %xmm0
2092         movdqu  %xmm0, -53(%rdi)
2093 L(fwd_write_37bytes):
2094         lddqu   -37(%rsi), %xmm0
2095         movdqu  %xmm0, -37(%rdi)
2096 L(fwd_write_21bytes):
2097         lddqu   -21(%rsi), %xmm0
2098         lddqu   -16(%rsi), %xmm1
2099         movdqu  %xmm0, -21(%rdi)
2100         movdqu  %xmm1, -16(%rdi)
2101         ret
2103         .p2align 4
2104 L(fwd_write_5bytes):
2105         mov     -5(%rsi), %edx
2106         mov     -4(%rsi), %ecx
2107         mov     %edx, -5(%rdi)
2108         mov     %ecx, -4(%rdi)
2109         ret
2111         .p2align 4
2112 L(fwd_write_132bytes):
2113         lddqu   -132(%rsi), %xmm0
2114         movdqu  %xmm0, -132(%rdi)
2115 L(fwd_write_116bytes):
2116         lddqu   -116(%rsi), %xmm0
2117         movdqu  %xmm0, -116(%rdi)
2118 L(fwd_write_100bytes):
2119         lddqu   -100(%rsi), %xmm0
2120         movdqu  %xmm0, -100(%rdi)
2121 L(fwd_write_84bytes):
2122         lddqu   -84(%rsi), %xmm0
2123         movdqu  %xmm0, -84(%rdi)
2124 L(fwd_write_68bytes):
2125         lddqu   -68(%rsi), %xmm0
2126         movdqu  %xmm0, -68(%rdi)
2127 L(fwd_write_52bytes):
2128         lddqu   -52(%rsi), %xmm0
2129         movdqu  %xmm0, -52(%rdi)
2130 L(fwd_write_36bytes):
2131         lddqu   -36(%rsi), %xmm0
2132         movdqu  %xmm0, -36(%rdi)
2133 L(fwd_write_20bytes):
2134         lddqu   -20(%rsi), %xmm0
2135         lddqu   -16(%rsi), %xmm1
2136         movdqu  %xmm0, -20(%rdi)
2137         movdqu  %xmm1, -16(%rdi)
2138         ret
2140         .p2align 4
2141 L(fwd_write_4bytes):
2142         mov     -4(%rsi), %edx
2143         mov     %edx, -4(%rdi)
2144         ret
2146         .p2align 4
2147 L(fwd_write_131bytes):
2148         lddqu   -131(%rsi), %xmm0
2149         movdqu  %xmm0, -131(%rdi)
2150 L(fwd_write_115bytes):
2151         lddqu   -115(%rsi), %xmm0
2152         movdqu  %xmm0, -115(%rdi)
2153 L(fwd_write_99bytes):
2154         lddqu   -99(%rsi), %xmm0
2155         movdqu  %xmm0, -99(%rdi)
2156 L(fwd_write_83bytes):
2157         lddqu   -83(%rsi), %xmm0
2158         movdqu  %xmm0, -83(%rdi)
2159 L(fwd_write_67bytes):
2160         lddqu   -67(%rsi), %xmm0
2161         movdqu  %xmm0, -67(%rdi)
2162 L(fwd_write_51bytes):
2163         lddqu   -51(%rsi), %xmm0
2164         movdqu  %xmm0, -51(%rdi)
2165 L(fwd_write_35bytes):
2166         lddqu   -35(%rsi), %xmm0
2167         movdqu  %xmm0, -35(%rdi)
2168 L(fwd_write_19bytes):
2169         lddqu   -19(%rsi), %xmm0
2170         lddqu   -16(%rsi), %xmm1
2171         movdqu  %xmm0, -19(%rdi)
2172         movdqu  %xmm1, -16(%rdi)
2173         ret
2175         .p2align 4
2176 L(fwd_write_3bytes):
2177         mov     -3(%rsi), %dx
2178         mov     -2(%rsi), %cx
2179         mov     %dx, -3(%rdi)
2180         mov     %cx, -2(%rdi)
2181         ret
2183         .p2align 4
2184 L(fwd_write_130bytes):
2185         lddqu   -130(%rsi), %xmm0
2186         movdqu  %xmm0, -130(%rdi)
2187 L(fwd_write_114bytes):
2188         lddqu   -114(%rsi), %xmm0
2189         movdqu  %xmm0, -114(%rdi)
2190 L(fwd_write_98bytes):
2191         lddqu   -98(%rsi), %xmm0
2192         movdqu  %xmm0, -98(%rdi)
2193 L(fwd_write_82bytes):
2194         lddqu   -82(%rsi), %xmm0
2195         movdqu  %xmm0, -82(%rdi)
2196 L(fwd_write_66bytes):
2197         lddqu   -66(%rsi), %xmm0
2198         movdqu  %xmm0, -66(%rdi)
2199 L(fwd_write_50bytes):
2200         lddqu   -50(%rsi), %xmm0
2201         movdqu  %xmm0, -50(%rdi)
2202 L(fwd_write_34bytes):
2203         lddqu   -34(%rsi), %xmm0
2204         movdqu  %xmm0, -34(%rdi)
2205 L(fwd_write_18bytes):
2206         lddqu   -18(%rsi), %xmm0
2207         lddqu   -16(%rsi), %xmm1
2208         movdqu  %xmm0, -18(%rdi)
2209         movdqu  %xmm1, -16(%rdi)
2210         ret
2212         .p2align 4
2213 L(fwd_write_2bytes):
2214         movzwl  -2(%rsi), %edx
2215         mov     %dx, -2(%rdi)
2216         ret
2218         .p2align 4
2219 L(fwd_write_129bytes):
2220         lddqu   -129(%rsi), %xmm0
2221         movdqu  %xmm0, -129(%rdi)
2222 L(fwd_write_113bytes):
2223         lddqu   -113(%rsi), %xmm0
2224         movdqu  %xmm0, -113(%rdi)
2225 L(fwd_write_97bytes):
2226         lddqu   -97(%rsi), %xmm0
2227         movdqu  %xmm0, -97(%rdi)
2228 L(fwd_write_81bytes):
2229         lddqu   -81(%rsi), %xmm0
2230         movdqu  %xmm0, -81(%rdi)
2231 L(fwd_write_65bytes):
2232         lddqu   -65(%rsi), %xmm0
2233         movdqu  %xmm0, -65(%rdi)
2234 L(fwd_write_49bytes):
2235         lddqu   -49(%rsi), %xmm0
2236         movdqu  %xmm0, -49(%rdi)
2237 L(fwd_write_33bytes):
2238         lddqu   -33(%rsi), %xmm0
2239         movdqu  %xmm0, -33(%rdi)
2240 L(fwd_write_17bytes):
2241         lddqu   -17(%rsi), %xmm0
2242         lddqu   -16(%rsi), %xmm1
2243         movdqu  %xmm0, -17(%rdi)
2244         movdqu  %xmm1, -16(%rdi)
2245         ret
2247         .p2align 4
2248 L(fwd_write_1bytes):
2249         movzbl  -1(%rsi), %edx
2250         mov     %dl, -1(%rdi)
2251         ret
2253         .p2align 4
2254 L(bwd_write_128bytes):
2255         lddqu   112(%rsi), %xmm0
2256         movdqu  %xmm0, 112(%rdi)
2257 L(bwd_write_112bytes):
2258         lddqu   96(%rsi), %xmm0
2259         movdqu  %xmm0, 96(%rdi)
2260 L(bwd_write_96bytes):
2261         lddqu   80(%rsi), %xmm0
2262         movdqu  %xmm0, 80(%rdi)
2263 L(bwd_write_80bytes):
2264         lddqu   64(%rsi), %xmm0
2265         movdqu  %xmm0, 64(%rdi)
2266 L(bwd_write_64bytes):
2267         lddqu   48(%rsi), %xmm0
2268         movdqu  %xmm0, 48(%rdi)
2269 L(bwd_write_48bytes):
2270         lddqu   32(%rsi), %xmm0
2271         movdqu  %xmm0, 32(%rdi)
2272 L(bwd_write_32bytes):
2273         lddqu   16(%rsi), %xmm0
2274         movdqu  %xmm0, 16(%rdi)
2275 L(bwd_write_16bytes):
2276         lddqu   (%rsi), %xmm0
2277         movdqu  %xmm0, (%rdi)
2278 L(bwd_write_0bytes):
2279         ret
2281         .p2align 4
2282 L(bwd_write_143bytes):
2283         lddqu   127(%rsi), %xmm0
2284         movdqu  %xmm0, 127(%rdi)
2285 L(bwd_write_127bytes):
2286         lddqu   111(%rsi), %xmm0
2287         movdqu  %xmm0, 111(%rdi)
2288 L(bwd_write_111bytes):
2289         lddqu   95(%rsi), %xmm0
2290         movdqu  %xmm0, 95(%rdi)
2291 L(bwd_write_95bytes):
2292         lddqu   79(%rsi), %xmm0
2293         movdqu  %xmm0, 79(%rdi)
2294 L(bwd_write_79bytes):
2295         lddqu   63(%rsi), %xmm0
2296         movdqu  %xmm0, 63(%rdi)
2297 L(bwd_write_63bytes):
2298         lddqu   47(%rsi), %xmm0
2299         movdqu  %xmm0, 47(%rdi)
2300 L(bwd_write_47bytes):
2301         lddqu   31(%rsi), %xmm0
2302         movdqu  %xmm0, 31(%rdi)
2303 L(bwd_write_31bytes):
2304         lddqu   15(%rsi), %xmm0
2305         lddqu   (%rsi), %xmm1
2306         movdqu  %xmm0, 15(%rdi)
2307         movdqu  %xmm1, (%rdi)
2308         ret
2311         .p2align 4
2312 L(bwd_write_15bytes):
2313         mov     7(%rsi), %rdx
2314         mov     (%rsi), %rcx
2315         mov     %rdx, 7(%rdi)
2316         mov     %rcx, (%rdi)
2317         ret
2319         .p2align 4
2320 L(bwd_write_142bytes):
2321         lddqu   126(%rsi), %xmm0
2322         movdqu  %xmm0, 126(%rdi)
2323 L(bwd_write_126bytes):
2324         lddqu   110(%rsi), %xmm0
2325         movdqu  %xmm0, 110(%rdi)
2326 L(bwd_write_110bytes):
2327         lddqu   94(%rsi), %xmm0
2328         movdqu  %xmm0, 94(%rdi)
2329 L(bwd_write_94bytes):
2330         lddqu   78(%rsi), %xmm0
2331         movdqu  %xmm0, 78(%rdi)
2332 L(bwd_write_78bytes):
2333         lddqu   62(%rsi), %xmm0
2334         movdqu  %xmm0, 62(%rdi)
2335 L(bwd_write_62bytes):
2336         lddqu   46(%rsi), %xmm0
2337         movdqu  %xmm0, 46(%rdi)
2338 L(bwd_write_46bytes):
2339         lddqu   30(%rsi), %xmm0
2340         movdqu  %xmm0, 30(%rdi)
2341 L(bwd_write_30bytes):
2342         lddqu   14(%rsi), %xmm0
2343         lddqu   (%rsi), %xmm1
2344         movdqu  %xmm0, 14(%rdi)
2345         movdqu  %xmm1, (%rdi)
2346         ret
2348         .p2align 4
2349 L(bwd_write_14bytes):
2350         mov     6(%rsi), %rdx
2351         mov     (%rsi), %rcx
2352         mov     %rdx, 6(%rdi)
2353         mov     %rcx, (%rdi)
2354         ret
2356         .p2align 4
2357 L(bwd_write_141bytes):
2358         lddqu   125(%rsi), %xmm0
2359         movdqu  %xmm0, 125(%rdi)
2360 L(bwd_write_125bytes):
2361         lddqu   109(%rsi), %xmm0
2362         movdqu  %xmm0, 109(%rdi)
2363 L(bwd_write_109bytes):
2364         lddqu   93(%rsi), %xmm0
2365         movdqu  %xmm0, 93(%rdi)
2366 L(bwd_write_93bytes):
2367         lddqu   77(%rsi), %xmm0
2368         movdqu  %xmm0, 77(%rdi)
2369 L(bwd_write_77bytes):
2370         lddqu   61(%rsi), %xmm0
2371         movdqu  %xmm0, 61(%rdi)
2372 L(bwd_write_61bytes):
2373         lddqu   45(%rsi), %xmm0
2374         movdqu  %xmm0, 45(%rdi)
2375 L(bwd_write_45bytes):
2376         lddqu   29(%rsi), %xmm0
2377         movdqu  %xmm0, 29(%rdi)
2378 L(bwd_write_29bytes):
2379         lddqu   13(%rsi), %xmm0
2380         lddqu   (%rsi), %xmm1
2381         movdqu  %xmm0, 13(%rdi)
2382         movdqu  %xmm1, (%rdi)
2383         ret
2385         .p2align 4
2386 L(bwd_write_13bytes):
2387         mov     5(%rsi), %rdx
2388         mov     (%rsi), %rcx
2389         mov     %rdx, 5(%rdi)
2390         mov     %rcx, (%rdi)
2391         ret
2393         .p2align 4
2394 L(bwd_write_140bytes):
2395         lddqu   124(%rsi), %xmm0
2396         movdqu  %xmm0, 124(%rdi)
2397 L(bwd_write_124bytes):
2398         lddqu   108(%rsi), %xmm0
2399         movdqu  %xmm0, 108(%rdi)
2400 L(bwd_write_108bytes):
2401         lddqu   92(%rsi), %xmm0
2402         movdqu  %xmm0, 92(%rdi)
2403 L(bwd_write_92bytes):
2404         lddqu   76(%rsi), %xmm0
2405         movdqu  %xmm0, 76(%rdi)
2406 L(bwd_write_76bytes):
2407         lddqu   60(%rsi), %xmm0
2408         movdqu  %xmm0, 60(%rdi)
2409 L(bwd_write_60bytes):
2410         lddqu   44(%rsi), %xmm0
2411         movdqu  %xmm0, 44(%rdi)
2412 L(bwd_write_44bytes):
2413         lddqu   28(%rsi), %xmm0
2414         movdqu  %xmm0, 28(%rdi)
2415 L(bwd_write_28bytes):
2416         lddqu   12(%rsi), %xmm0
2417         lddqu   (%rsi), %xmm1
2418         movdqu  %xmm0, 12(%rdi)
2419         movdqu  %xmm1, (%rdi)
2420         ret
2422         .p2align 4
2423 L(bwd_write_12bytes):
2424         mov     4(%rsi), %rdx
2425         mov     (%rsi), %rcx
2426         mov     %rdx, 4(%rdi)
2427         mov     %rcx, (%rdi)
2428         ret
2430         .p2align 4
2431 L(bwd_write_139bytes):
2432         lddqu   123(%rsi), %xmm0
2433         movdqu  %xmm0, 123(%rdi)
2434 L(bwd_write_123bytes):
2435         lddqu   107(%rsi), %xmm0
2436         movdqu  %xmm0, 107(%rdi)
2437 L(bwd_write_107bytes):
2438         lddqu   91(%rsi), %xmm0
2439         movdqu  %xmm0, 91(%rdi)
2440 L(bwd_write_91bytes):
2441         lddqu   75(%rsi), %xmm0
2442         movdqu  %xmm0, 75(%rdi)
2443 L(bwd_write_75bytes):
2444         lddqu   59(%rsi), %xmm0
2445         movdqu  %xmm0, 59(%rdi)
2446 L(bwd_write_59bytes):
2447         lddqu   43(%rsi), %xmm0
2448         movdqu  %xmm0, 43(%rdi)
2449 L(bwd_write_43bytes):
2450         lddqu   27(%rsi), %xmm0
2451         movdqu  %xmm0, 27(%rdi)
2452 L(bwd_write_27bytes):
2453         lddqu   11(%rsi), %xmm0
2454         lddqu   (%rsi), %xmm1
2455         movdqu  %xmm0, 11(%rdi)
2456         movdqu  %xmm1, (%rdi)
2457         ret
2459         .p2align 4
2460 L(bwd_write_11bytes):
2461         mov     3(%rsi), %rdx
2462         mov     (%rsi), %rcx
2463         mov     %rdx, 3(%rdi)
2464         mov     %rcx, (%rdi)
2465         ret
2467         .p2align 4
2468 L(bwd_write_138bytes):
2469         lddqu   122(%rsi), %xmm0
2470         movdqu  %xmm0, 122(%rdi)
2471 L(bwd_write_122bytes):
2472         lddqu   106(%rsi), %xmm0
2473         movdqu  %xmm0, 106(%rdi)
2474 L(bwd_write_106bytes):
2475         lddqu   90(%rsi), %xmm0
2476         movdqu  %xmm0, 90(%rdi)
2477 L(bwd_write_90bytes):
2478         lddqu   74(%rsi), %xmm0
2479         movdqu  %xmm0, 74(%rdi)
2480 L(bwd_write_74bytes):
2481         lddqu   58(%rsi), %xmm0
2482         movdqu  %xmm0, 58(%rdi)
2483 L(bwd_write_58bytes):
2484         lddqu   42(%rsi), %xmm0
2485         movdqu  %xmm0, 42(%rdi)
2486 L(bwd_write_42bytes):
2487         lddqu   26(%rsi), %xmm0
2488         movdqu  %xmm0, 26(%rdi)
2489 L(bwd_write_26bytes):
2490         lddqu   10(%rsi), %xmm0
2491         lddqu   (%rsi), %xmm1
2492         movdqu  %xmm0, 10(%rdi)
2493         movdqu  %xmm1, (%rdi)
2494         ret
2496         .p2align 4
2497 L(bwd_write_10bytes):
2498         mov     2(%rsi), %rdx
2499         mov     (%rsi), %rcx
2500         mov     %rdx, 2(%rdi)
2501         mov     %rcx, (%rdi)
2502         ret
2504         .p2align 4
2505 L(bwd_write_137bytes):
2506         lddqu   121(%rsi), %xmm0
2507         movdqu  %xmm0, 121(%rdi)
2508 L(bwd_write_121bytes):
2509         lddqu   105(%rsi), %xmm0
2510         movdqu  %xmm0, 105(%rdi)
2511 L(bwd_write_105bytes):
2512         lddqu   89(%rsi), %xmm0
2513         movdqu  %xmm0, 89(%rdi)
2514 L(bwd_write_89bytes):
2515         lddqu   73(%rsi), %xmm0
2516         movdqu  %xmm0, 73(%rdi)
2517 L(bwd_write_73bytes):
2518         lddqu   57(%rsi), %xmm0
2519         movdqu  %xmm0, 57(%rdi)
2520 L(bwd_write_57bytes):
2521         lddqu   41(%rsi), %xmm0
2522         movdqu  %xmm0, 41(%rdi)
2523 L(bwd_write_41bytes):
2524         lddqu   25(%rsi), %xmm0
2525         movdqu  %xmm0, 25(%rdi)
2526 L(bwd_write_25bytes):
2527         lddqu   9(%rsi), %xmm0
2528         lddqu   (%rsi), %xmm1
2529         movdqu  %xmm0, 9(%rdi)
2530         movdqu  %xmm1, (%rdi)
2531         ret
2533         .p2align 4
2534 L(bwd_write_9bytes):
2535         mov     1(%rsi), %rdx
2536         mov     (%rsi), %rcx
2537         mov     %rdx, 1(%rdi)
2538         mov     %rcx, (%rdi)
2539         ret
2541         .p2align 4
2542 L(bwd_write_136bytes):
2543         lddqu   120(%rsi), %xmm0
2544         movdqu  %xmm0, 120(%rdi)
2545 L(bwd_write_120bytes):
2546         lddqu   104(%rsi), %xmm0
2547         movdqu  %xmm0, 104(%rdi)
2548 L(bwd_write_104bytes):
2549         lddqu   88(%rsi), %xmm0
2550         movdqu  %xmm0, 88(%rdi)
2551 L(bwd_write_88bytes):
2552         lddqu   72(%rsi), %xmm0
2553         movdqu  %xmm0, 72(%rdi)
2554 L(bwd_write_72bytes):
2555         lddqu   56(%rsi), %xmm0
2556         movdqu  %xmm0, 56(%rdi)
2557 L(bwd_write_56bytes):
2558         lddqu   40(%rsi), %xmm0
2559         movdqu  %xmm0, 40(%rdi)
2560 L(bwd_write_40bytes):
2561         lddqu   24(%rsi), %xmm0
2562         movdqu  %xmm0, 24(%rdi)
2563 L(bwd_write_24bytes):
2564         lddqu   8(%rsi), %xmm0
2565         lddqu   (%rsi), %xmm1
2566         movdqu  %xmm0, 8(%rdi)
2567         movdqu  %xmm1, (%rdi)
2568         ret
2570         .p2align 4
2571 L(bwd_write_8bytes):
2572         mov     (%rsi), %rdx
2573         mov     %rdx, (%rdi)
2574         ret
2576         .p2align 4
2577 L(bwd_write_135bytes):
2578         lddqu   119(%rsi), %xmm0
2579         movdqu  %xmm0, 119(%rdi)
2580 L(bwd_write_119bytes):
2581         lddqu   103(%rsi), %xmm0
2582         movdqu  %xmm0, 103(%rdi)
2583 L(bwd_write_103bytes):
2584         lddqu   87(%rsi), %xmm0
2585         movdqu  %xmm0, 87(%rdi)
2586 L(bwd_write_87bytes):
2587         lddqu   71(%rsi), %xmm0
2588         movdqu  %xmm0, 71(%rdi)
2589 L(bwd_write_71bytes):
2590         lddqu   55(%rsi), %xmm0
2591         movdqu  %xmm0, 55(%rdi)
2592 L(bwd_write_55bytes):
2593         lddqu   39(%rsi), %xmm0
2594         movdqu  %xmm0, 39(%rdi)
2595 L(bwd_write_39bytes):
2596         lddqu   23(%rsi), %xmm0
2597         movdqu  %xmm0, 23(%rdi)
2598 L(bwd_write_23bytes):
2599         lddqu   7(%rsi), %xmm0
2600         lddqu   (%rsi), %xmm1
2601         movdqu  %xmm0, 7(%rdi)
2602         movdqu  %xmm1, (%rdi)
2603         ret
2605         .p2align 4
2606 L(bwd_write_7bytes):
2607         mov     3(%rsi), %edx
2608         mov     (%rsi), %ecx
2609         mov     %edx, 3(%rdi)
2610         mov     %ecx, (%rdi)
2611         ret
2613         .p2align 4
2614 L(bwd_write_134bytes):
2615         lddqu   118(%rsi), %xmm0
2616         movdqu  %xmm0, 118(%rdi)
2617 L(bwd_write_118bytes):
2618         lddqu   102(%rsi), %xmm0
2619         movdqu  %xmm0, 102(%rdi)
2620 L(bwd_write_102bytes):
2621         lddqu   86(%rsi), %xmm0
2622         movdqu  %xmm0, 86(%rdi)
2623 L(bwd_write_86bytes):
2624         lddqu   70(%rsi), %xmm0
2625         movdqu  %xmm0, 70(%rdi)
2626 L(bwd_write_70bytes):
2627         lddqu   54(%rsi), %xmm0
2628         movdqu  %xmm0, 54(%rdi)
2629 L(bwd_write_54bytes):
2630         lddqu   38(%rsi), %xmm0
2631         movdqu  %xmm0, 38(%rdi)
2632 L(bwd_write_38bytes):
2633         lddqu   22(%rsi), %xmm0
2634         movdqu  %xmm0, 22(%rdi)
2635 L(bwd_write_22bytes):
2636         lddqu   6(%rsi), %xmm0
2637         lddqu   (%rsi), %xmm1
2638         movdqu  %xmm0, 6(%rdi)
2639         movdqu  %xmm1, (%rdi)
2640         ret
2642         .p2align 4
2643 L(bwd_write_6bytes):
2644         mov     2(%rsi), %edx
2645         mov     (%rsi), %ecx
2646         mov     %edx, 2(%rdi)
2647         mov     %ecx, (%rdi)
2648         ret
2650         .p2align 4
2651 L(bwd_write_133bytes):
2652         lddqu   117(%rsi), %xmm0
2653         movdqu  %xmm0, 117(%rdi)
2654 L(bwd_write_117bytes):
2655         lddqu   101(%rsi), %xmm0
2656         movdqu  %xmm0, 101(%rdi)
2657 L(bwd_write_101bytes):
2658         lddqu   85(%rsi), %xmm0
2659         movdqu  %xmm0, 85(%rdi)
2660 L(bwd_write_85bytes):
2661         lddqu   69(%rsi), %xmm0
2662         movdqu  %xmm0, 69(%rdi)
2663 L(bwd_write_69bytes):
2664         lddqu   53(%rsi), %xmm0
2665         movdqu  %xmm0, 53(%rdi)
2666 L(bwd_write_53bytes):
2667         lddqu   37(%rsi), %xmm0
2668         movdqu  %xmm0, 37(%rdi)
2669 L(bwd_write_37bytes):
2670         lddqu   21(%rsi), %xmm0
2671         movdqu  %xmm0, 21(%rdi)
2672 L(bwd_write_21bytes):
2673         lddqu   5(%rsi), %xmm0
2674         lddqu   (%rsi), %xmm1
2675         movdqu  %xmm0, 5(%rdi)
2676         movdqu  %xmm1, (%rdi)
2677         ret
2679         .p2align 4
2680 L(bwd_write_5bytes):
2681         mov     1(%rsi), %edx
2682         mov     (%rsi), %ecx
2683         mov     %edx, 1(%rdi)
2684         mov     %ecx, (%rdi)
2685         ret
2687         .p2align 4
2688 L(bwd_write_132bytes):
2689         lddqu   116(%rsi), %xmm0
2690         movdqu  %xmm0, 116(%rdi)
2691 L(bwd_write_116bytes):
2692         lddqu   100(%rsi), %xmm0
2693         movdqu  %xmm0, 100(%rdi)
2694 L(bwd_write_100bytes):
2695         lddqu   84(%rsi), %xmm0
2696         movdqu  %xmm0, 84(%rdi)
2697 L(bwd_write_84bytes):
2698         lddqu   68(%rsi), %xmm0
2699         movdqu  %xmm0, 68(%rdi)
2700 L(bwd_write_68bytes):
2701         lddqu   52(%rsi), %xmm0
2702         movdqu  %xmm0, 52(%rdi)
2703 L(bwd_write_52bytes):
2704         lddqu   36(%rsi), %xmm0
2705         movdqu  %xmm0, 36(%rdi)
2706 L(bwd_write_36bytes):
2707         lddqu   20(%rsi), %xmm0
2708         movdqu  %xmm0, 20(%rdi)
2709 L(bwd_write_20bytes):
2710         lddqu   4(%rsi), %xmm0
2711         lddqu   (%rsi), %xmm1
2712         movdqu  %xmm0, 4(%rdi)
2713         movdqu  %xmm1, (%rdi)
2714         ret
2716         .p2align 4
2717 L(bwd_write_4bytes):
2718         mov     (%rsi), %edx
2719         mov     %edx, (%rdi)
2720         ret
2722         .p2align 4
2723 L(bwd_write_131bytes):
2724         lddqu   115(%rsi), %xmm0
2725         movdqu  %xmm0, 115(%rdi)
2726 L(bwd_write_115bytes):
2727         lddqu   99(%rsi), %xmm0
2728         movdqu  %xmm0, 99(%rdi)
2729 L(bwd_write_99bytes):
2730         lddqu   83(%rsi), %xmm0
2731         movdqu  %xmm0, 83(%rdi)
2732 L(bwd_write_83bytes):
2733         lddqu   67(%rsi), %xmm0
2734         movdqu  %xmm0, 67(%rdi)
2735 L(bwd_write_67bytes):
2736         lddqu   51(%rsi), %xmm0
2737         movdqu  %xmm0, 51(%rdi)
2738 L(bwd_write_51bytes):
2739         lddqu   35(%rsi), %xmm0
2740         movdqu  %xmm0, 35(%rdi)
2741 L(bwd_write_35bytes):
2742         lddqu   19(%rsi), %xmm0
2743         movdqu  %xmm0, 19(%rdi)
2744 L(bwd_write_19bytes):
2745         lddqu   3(%rsi), %xmm0
2746         lddqu   (%rsi), %xmm1
2747         movdqu  %xmm0, 3(%rdi)
2748         movdqu  %xmm1, (%rdi)
2749         ret
2751         .p2align 4
2752 L(bwd_write_3bytes):
2753         mov     1(%rsi), %dx
2754         mov     (%rsi), %cx
2755         mov     %dx, 1(%rdi)
2756         mov     %cx, (%rdi)
2757         ret
2759         .p2align 4
2760 L(bwd_write_130bytes):
2761         lddqu   114(%rsi), %xmm0
2762         movdqu  %xmm0, 114(%rdi)
2763 L(bwd_write_114bytes):
2764         lddqu   98(%rsi), %xmm0
2765         movdqu  %xmm0, 98(%rdi)
2766 L(bwd_write_98bytes):
2767         lddqu   82(%rsi), %xmm0
2768         movdqu  %xmm0, 82(%rdi)
2769 L(bwd_write_82bytes):
2770         lddqu   66(%rsi), %xmm0
2771         movdqu  %xmm0, 66(%rdi)
2772 L(bwd_write_66bytes):
2773         lddqu   50(%rsi), %xmm0
2774         movdqu  %xmm0, 50(%rdi)
2775 L(bwd_write_50bytes):
2776         lddqu   34(%rsi), %xmm0
2777         movdqu  %xmm0, 34(%rdi)
2778 L(bwd_write_34bytes):
2779         lddqu   18(%rsi), %xmm0
2780         movdqu  %xmm0, 18(%rdi)
2781 L(bwd_write_18bytes):
2782         lddqu   2(%rsi), %xmm0
2783         lddqu   (%rsi), %xmm1
2784         movdqu  %xmm0, 2(%rdi)
2785         movdqu  %xmm1, (%rdi)
2786         ret
2788         .p2align 4
2789 L(bwd_write_2bytes):
2790         movzwl  (%rsi), %edx
2791         mov     %dx, (%rdi)
2792         ret
2794         .p2align 4
2795 L(bwd_write_129bytes):
2796         lddqu   113(%rsi), %xmm0
2797         movdqu  %xmm0, 113(%rdi)
2798 L(bwd_write_113bytes):
2799         lddqu   97(%rsi), %xmm0
2800         movdqu  %xmm0, 97(%rdi)
2801 L(bwd_write_97bytes):
2802         lddqu   81(%rsi), %xmm0
2803         movdqu  %xmm0, 81(%rdi)
2804 L(bwd_write_81bytes):
2805         lddqu   65(%rsi), %xmm0
2806         movdqu  %xmm0, 65(%rdi)
2807 L(bwd_write_65bytes):
2808         lddqu   49(%rsi), %xmm0
2809         movdqu  %xmm0, 49(%rdi)
2810 L(bwd_write_49bytes):
2811         lddqu   33(%rsi), %xmm0
2812         movdqu  %xmm0, 33(%rdi)
2813 L(bwd_write_33bytes):
2814         lddqu   17(%rsi), %xmm0
2815         movdqu  %xmm0, 17(%rdi)
2816 L(bwd_write_17bytes):
2817         lddqu   1(%rsi), %xmm0
2818         lddqu   (%rsi), %xmm1
2819         movdqu  %xmm0, 1(%rdi)
2820         movdqu  %xmm1, (%rdi)
2821         ret
2823         .p2align 4
2824 L(bwd_write_1bytes):
2825         movzbl  (%rsi), %edx
2826         mov     %dl, (%rdi)
2827         ret
2829 END (MEMCPY)
2831         .section .rodata.ssse3,"a",@progbits
2832         .p2align 3
2833 L(table_144_bytes_bwd):
2834         .int    JMPTBL (L(bwd_write_0bytes), L(table_144_bytes_bwd))
2835         .int    JMPTBL (L(bwd_write_1bytes), L(table_144_bytes_bwd))
2836         .int    JMPTBL (L(bwd_write_2bytes), L(table_144_bytes_bwd))
2837         .int    JMPTBL (L(bwd_write_3bytes), L(table_144_bytes_bwd))
2838         .int    JMPTBL (L(bwd_write_4bytes), L(table_144_bytes_bwd))
2839         .int    JMPTBL (L(bwd_write_5bytes), L(table_144_bytes_bwd))
2840         .int    JMPTBL (L(bwd_write_6bytes), L(table_144_bytes_bwd))
2841         .int    JMPTBL (L(bwd_write_7bytes), L(table_144_bytes_bwd))
2842         .int    JMPTBL (L(bwd_write_8bytes), L(table_144_bytes_bwd))
2843         .int    JMPTBL (L(bwd_write_9bytes), L(table_144_bytes_bwd))
2844         .int    JMPTBL (L(bwd_write_10bytes), L(table_144_bytes_bwd))
2845         .int    JMPTBL (L(bwd_write_11bytes), L(table_144_bytes_bwd))
2846         .int    JMPTBL (L(bwd_write_12bytes), L(table_144_bytes_bwd))
2847         .int    JMPTBL (L(bwd_write_13bytes), L(table_144_bytes_bwd))
2848         .int    JMPTBL (L(bwd_write_14bytes), L(table_144_bytes_bwd))
2849         .int    JMPTBL (L(bwd_write_15bytes), L(table_144_bytes_bwd))
2850         .int    JMPTBL (L(bwd_write_16bytes), L(table_144_bytes_bwd))
2851         .int    JMPTBL (L(bwd_write_17bytes), L(table_144_bytes_bwd))
2852         .int    JMPTBL (L(bwd_write_18bytes), L(table_144_bytes_bwd))
2853         .int    JMPTBL (L(bwd_write_19bytes), L(table_144_bytes_bwd))
2854         .int    JMPTBL (L(bwd_write_20bytes), L(table_144_bytes_bwd))
2855         .int    JMPTBL (L(bwd_write_21bytes), L(table_144_bytes_bwd))
2856         .int    JMPTBL (L(bwd_write_22bytes), L(table_144_bytes_bwd))
2857         .int    JMPTBL (L(bwd_write_23bytes), L(table_144_bytes_bwd))
2858         .int    JMPTBL (L(bwd_write_24bytes), L(table_144_bytes_bwd))
2859         .int    JMPTBL (L(bwd_write_25bytes), L(table_144_bytes_bwd))
2860         .int    JMPTBL (L(bwd_write_26bytes), L(table_144_bytes_bwd))
2861         .int    JMPTBL (L(bwd_write_27bytes), L(table_144_bytes_bwd))
2862         .int    JMPTBL (L(bwd_write_28bytes), L(table_144_bytes_bwd))
2863         .int    JMPTBL (L(bwd_write_29bytes), L(table_144_bytes_bwd))
2864         .int    JMPTBL (L(bwd_write_30bytes), L(table_144_bytes_bwd))
2865         .int    JMPTBL (L(bwd_write_31bytes), L(table_144_bytes_bwd))
2866         .int    JMPTBL (L(bwd_write_32bytes), L(table_144_bytes_bwd))
2867         .int    JMPTBL (L(bwd_write_33bytes), L(table_144_bytes_bwd))
2868         .int    JMPTBL (L(bwd_write_34bytes), L(table_144_bytes_bwd))
2869         .int    JMPTBL (L(bwd_write_35bytes), L(table_144_bytes_bwd))
2870         .int    JMPTBL (L(bwd_write_36bytes), L(table_144_bytes_bwd))
2871         .int    JMPTBL (L(bwd_write_37bytes), L(table_144_bytes_bwd))
2872         .int    JMPTBL (L(bwd_write_38bytes), L(table_144_bytes_bwd))
2873         .int    JMPTBL (L(bwd_write_39bytes), L(table_144_bytes_bwd))
2874         .int    JMPTBL (L(bwd_write_40bytes), L(table_144_bytes_bwd))
2875         .int    JMPTBL (L(bwd_write_41bytes), L(table_144_bytes_bwd))
2876         .int    JMPTBL (L(bwd_write_42bytes), L(table_144_bytes_bwd))
2877         .int    JMPTBL (L(bwd_write_43bytes), L(table_144_bytes_bwd))
2878         .int    JMPTBL (L(bwd_write_44bytes), L(table_144_bytes_bwd))
2879         .int    JMPTBL (L(bwd_write_45bytes), L(table_144_bytes_bwd))
2880         .int    JMPTBL (L(bwd_write_46bytes), L(table_144_bytes_bwd))
2881         .int    JMPTBL (L(bwd_write_47bytes), L(table_144_bytes_bwd))
2882         .int    JMPTBL (L(bwd_write_48bytes), L(table_144_bytes_bwd))
2883         .int    JMPTBL (L(bwd_write_49bytes), L(table_144_bytes_bwd))
2884         .int    JMPTBL (L(bwd_write_50bytes), L(table_144_bytes_bwd))
2885         .int    JMPTBL (L(bwd_write_51bytes), L(table_144_bytes_bwd))
2886         .int    JMPTBL (L(bwd_write_52bytes), L(table_144_bytes_bwd))
2887         .int    JMPTBL (L(bwd_write_53bytes), L(table_144_bytes_bwd))
2888         .int    JMPTBL (L(bwd_write_54bytes), L(table_144_bytes_bwd))
2889         .int    JMPTBL (L(bwd_write_55bytes), L(table_144_bytes_bwd))
2890         .int    JMPTBL (L(bwd_write_56bytes), L(table_144_bytes_bwd))
2891         .int    JMPTBL (L(bwd_write_57bytes), L(table_144_bytes_bwd))
2892         .int    JMPTBL (L(bwd_write_58bytes), L(table_144_bytes_bwd))
2893         .int    JMPTBL (L(bwd_write_59bytes), L(table_144_bytes_bwd))
2894         .int    JMPTBL (L(bwd_write_60bytes), L(table_144_bytes_bwd))
2895         .int    JMPTBL (L(bwd_write_61bytes), L(table_144_bytes_bwd))
2896         .int    JMPTBL (L(bwd_write_62bytes), L(table_144_bytes_bwd))
2897         .int    JMPTBL (L(bwd_write_63bytes), L(table_144_bytes_bwd))
2898         .int    JMPTBL (L(bwd_write_64bytes), L(table_144_bytes_bwd))
2899         .int    JMPTBL (L(bwd_write_65bytes), L(table_144_bytes_bwd))
2900         .int    JMPTBL (L(bwd_write_66bytes), L(table_144_bytes_bwd))
2901         .int    JMPTBL (L(bwd_write_67bytes), L(table_144_bytes_bwd))
2902         .int    JMPTBL (L(bwd_write_68bytes), L(table_144_bytes_bwd))
2903         .int    JMPTBL (L(bwd_write_69bytes), L(table_144_bytes_bwd))
2904         .int    JMPTBL (L(bwd_write_70bytes), L(table_144_bytes_bwd))
2905         .int    JMPTBL (L(bwd_write_71bytes), L(table_144_bytes_bwd))
2906         .int    JMPTBL (L(bwd_write_72bytes), L(table_144_bytes_bwd))
2907         .int    JMPTBL (L(bwd_write_73bytes), L(table_144_bytes_bwd))
2908         .int    JMPTBL (L(bwd_write_74bytes), L(table_144_bytes_bwd))
2909         .int    JMPTBL (L(bwd_write_75bytes), L(table_144_bytes_bwd))
2910         .int    JMPTBL (L(bwd_write_76bytes), L(table_144_bytes_bwd))
2911         .int    JMPTBL (L(bwd_write_77bytes), L(table_144_bytes_bwd))
2912         .int    JMPTBL (L(bwd_write_78bytes), L(table_144_bytes_bwd))
2913         .int    JMPTBL (L(bwd_write_79bytes), L(table_144_bytes_bwd))
2914         .int    JMPTBL (L(bwd_write_80bytes), L(table_144_bytes_bwd))
2915         .int    JMPTBL (L(bwd_write_81bytes), L(table_144_bytes_bwd))
2916         .int    JMPTBL (L(bwd_write_82bytes), L(table_144_bytes_bwd))
2917         .int    JMPTBL (L(bwd_write_83bytes), L(table_144_bytes_bwd))
2918         .int    JMPTBL (L(bwd_write_84bytes), L(table_144_bytes_bwd))
2919         .int    JMPTBL (L(bwd_write_85bytes), L(table_144_bytes_bwd))
2920         .int    JMPTBL (L(bwd_write_86bytes), L(table_144_bytes_bwd))
2921         .int    JMPTBL (L(bwd_write_87bytes), L(table_144_bytes_bwd))
2922         .int    JMPTBL (L(bwd_write_88bytes), L(table_144_bytes_bwd))
2923         .int    JMPTBL (L(bwd_write_89bytes), L(table_144_bytes_bwd))
2924         .int    JMPTBL (L(bwd_write_90bytes), L(table_144_bytes_bwd))
2925         .int    JMPTBL (L(bwd_write_91bytes), L(table_144_bytes_bwd))
2926         .int    JMPTBL (L(bwd_write_92bytes), L(table_144_bytes_bwd))
2927         .int    JMPTBL (L(bwd_write_93bytes), L(table_144_bytes_bwd))
2928         .int    JMPTBL (L(bwd_write_94bytes), L(table_144_bytes_bwd))
2929         .int    JMPTBL (L(bwd_write_95bytes), L(table_144_bytes_bwd))
2930         .int    JMPTBL (L(bwd_write_96bytes), L(table_144_bytes_bwd))
2931         .int    JMPTBL (L(bwd_write_97bytes), L(table_144_bytes_bwd))
2932         .int    JMPTBL (L(bwd_write_98bytes), L(table_144_bytes_bwd))
2933         .int    JMPTBL (L(bwd_write_99bytes), L(table_144_bytes_bwd))
2934         .int    JMPTBL (L(bwd_write_100bytes), L(table_144_bytes_bwd))
2935         .int    JMPTBL (L(bwd_write_101bytes), L(table_144_bytes_bwd))
2936         .int    JMPTBL (L(bwd_write_102bytes), L(table_144_bytes_bwd))
2937         .int    JMPTBL (L(bwd_write_103bytes), L(table_144_bytes_bwd))
2938         .int    JMPTBL (L(bwd_write_104bytes), L(table_144_bytes_bwd))
2939         .int    JMPTBL (L(bwd_write_105bytes), L(table_144_bytes_bwd))
2940         .int    JMPTBL (L(bwd_write_106bytes), L(table_144_bytes_bwd))
2941         .int    JMPTBL (L(bwd_write_107bytes), L(table_144_bytes_bwd))
2942         .int    JMPTBL (L(bwd_write_108bytes), L(table_144_bytes_bwd))
2943         .int    JMPTBL (L(bwd_write_109bytes), L(table_144_bytes_bwd))
2944         .int    JMPTBL (L(bwd_write_110bytes), L(table_144_bytes_bwd))
2945         .int    JMPTBL (L(bwd_write_111bytes), L(table_144_bytes_bwd))
2946         .int    JMPTBL (L(bwd_write_112bytes), L(table_144_bytes_bwd))
2947         .int    JMPTBL (L(bwd_write_113bytes), L(table_144_bytes_bwd))
2948         .int    JMPTBL (L(bwd_write_114bytes), L(table_144_bytes_bwd))
2949         .int    JMPTBL (L(bwd_write_115bytes), L(table_144_bytes_bwd))
2950         .int    JMPTBL (L(bwd_write_116bytes), L(table_144_bytes_bwd))
2951         .int    JMPTBL (L(bwd_write_117bytes), L(table_144_bytes_bwd))
2952         .int    JMPTBL (L(bwd_write_118bytes), L(table_144_bytes_bwd))
2953         .int    JMPTBL (L(bwd_write_119bytes), L(table_144_bytes_bwd))
2954         .int    JMPTBL (L(bwd_write_120bytes), L(table_144_bytes_bwd))
2955         .int    JMPTBL (L(bwd_write_121bytes), L(table_144_bytes_bwd))
2956         .int    JMPTBL (L(bwd_write_122bytes), L(table_144_bytes_bwd))
2957         .int    JMPTBL (L(bwd_write_123bytes), L(table_144_bytes_bwd))
2958         .int    JMPTBL (L(bwd_write_124bytes), L(table_144_bytes_bwd))
2959         .int    JMPTBL (L(bwd_write_125bytes), L(table_144_bytes_bwd))
2960         .int    JMPTBL (L(bwd_write_126bytes), L(table_144_bytes_bwd))
2961         .int    JMPTBL (L(bwd_write_127bytes), L(table_144_bytes_bwd))
2962         .int    JMPTBL (L(bwd_write_128bytes), L(table_144_bytes_bwd))
2963         .int    JMPTBL (L(bwd_write_129bytes), L(table_144_bytes_bwd))
2964         .int    JMPTBL (L(bwd_write_130bytes), L(table_144_bytes_bwd))
2965         .int    JMPTBL (L(bwd_write_131bytes), L(table_144_bytes_bwd))
2966         .int    JMPTBL (L(bwd_write_132bytes), L(table_144_bytes_bwd))
2967         .int    JMPTBL (L(bwd_write_133bytes), L(table_144_bytes_bwd))
2968         .int    JMPTBL (L(bwd_write_134bytes), L(table_144_bytes_bwd))
2969         .int    JMPTBL (L(bwd_write_135bytes), L(table_144_bytes_bwd))
2970         .int    JMPTBL (L(bwd_write_136bytes), L(table_144_bytes_bwd))
2971         .int    JMPTBL (L(bwd_write_137bytes), L(table_144_bytes_bwd))
2972         .int    JMPTBL (L(bwd_write_138bytes), L(table_144_bytes_bwd))
2973         .int    JMPTBL (L(bwd_write_139bytes), L(table_144_bytes_bwd))
2974         .int    JMPTBL (L(bwd_write_140bytes), L(table_144_bytes_bwd))
2975         .int    JMPTBL (L(bwd_write_141bytes), L(table_144_bytes_bwd))
2976         .int    JMPTBL (L(bwd_write_142bytes), L(table_144_bytes_bwd))
2977         .int    JMPTBL (L(bwd_write_143bytes), L(table_144_bytes_bwd))
2979         .p2align 3
2980 L(table_144_bytes_fwd):
2981         .int    JMPTBL (L(fwd_write_0bytes), L(table_144_bytes_fwd))
2982         .int    JMPTBL (L(fwd_write_1bytes), L(table_144_bytes_fwd))
2983         .int    JMPTBL (L(fwd_write_2bytes), L(table_144_bytes_fwd))
2984         .int    JMPTBL (L(fwd_write_3bytes), L(table_144_bytes_fwd))
2985         .int    JMPTBL (L(fwd_write_4bytes), L(table_144_bytes_fwd))
2986         .int    JMPTBL (L(fwd_write_5bytes), L(table_144_bytes_fwd))
2987         .int    JMPTBL (L(fwd_write_6bytes), L(table_144_bytes_fwd))
2988         .int    JMPTBL (L(fwd_write_7bytes), L(table_144_bytes_fwd))
2989         .int    JMPTBL (L(fwd_write_8bytes), L(table_144_bytes_fwd))
2990         .int    JMPTBL (L(fwd_write_9bytes), L(table_144_bytes_fwd))
2991         .int    JMPTBL (L(fwd_write_10bytes), L(table_144_bytes_fwd))
2992         .int    JMPTBL (L(fwd_write_11bytes), L(table_144_bytes_fwd))
2993         .int    JMPTBL (L(fwd_write_12bytes), L(table_144_bytes_fwd))
2994         .int    JMPTBL (L(fwd_write_13bytes), L(table_144_bytes_fwd))
2995         .int    JMPTBL (L(fwd_write_14bytes), L(table_144_bytes_fwd))
2996         .int    JMPTBL (L(fwd_write_15bytes), L(table_144_bytes_fwd))
2997         .int    JMPTBL (L(fwd_write_16bytes), L(table_144_bytes_fwd))
2998         .int    JMPTBL (L(fwd_write_17bytes), L(table_144_bytes_fwd))
2999         .int    JMPTBL (L(fwd_write_18bytes), L(table_144_bytes_fwd))
3000         .int    JMPTBL (L(fwd_write_19bytes), L(table_144_bytes_fwd))
3001         .int    JMPTBL (L(fwd_write_20bytes), L(table_144_bytes_fwd))
3002         .int    JMPTBL (L(fwd_write_21bytes), L(table_144_bytes_fwd))
3003         .int    JMPTBL (L(fwd_write_22bytes), L(table_144_bytes_fwd))
3004         .int    JMPTBL (L(fwd_write_23bytes), L(table_144_bytes_fwd))
3005         .int    JMPTBL (L(fwd_write_24bytes), L(table_144_bytes_fwd))
3006         .int    JMPTBL (L(fwd_write_25bytes), L(table_144_bytes_fwd))
3007         .int    JMPTBL (L(fwd_write_26bytes), L(table_144_bytes_fwd))
3008         .int    JMPTBL (L(fwd_write_27bytes), L(table_144_bytes_fwd))
3009         .int    JMPTBL (L(fwd_write_28bytes), L(table_144_bytes_fwd))
3010         .int    JMPTBL (L(fwd_write_29bytes), L(table_144_bytes_fwd))
3011         .int    JMPTBL (L(fwd_write_30bytes), L(table_144_bytes_fwd))
3012         .int    JMPTBL (L(fwd_write_31bytes), L(table_144_bytes_fwd))
3013         .int    JMPTBL (L(fwd_write_32bytes), L(table_144_bytes_fwd))
3014         .int    JMPTBL (L(fwd_write_33bytes), L(table_144_bytes_fwd))
3015         .int    JMPTBL (L(fwd_write_34bytes), L(table_144_bytes_fwd))
3016         .int    JMPTBL (L(fwd_write_35bytes), L(table_144_bytes_fwd))
3017         .int    JMPTBL (L(fwd_write_36bytes), L(table_144_bytes_fwd))
3018         .int    JMPTBL (L(fwd_write_37bytes), L(table_144_bytes_fwd))
3019         .int    JMPTBL (L(fwd_write_38bytes), L(table_144_bytes_fwd))
3020         .int    JMPTBL (L(fwd_write_39bytes), L(table_144_bytes_fwd))
3021         .int    JMPTBL (L(fwd_write_40bytes), L(table_144_bytes_fwd))
3022         .int    JMPTBL (L(fwd_write_41bytes), L(table_144_bytes_fwd))
3023         .int    JMPTBL (L(fwd_write_42bytes), L(table_144_bytes_fwd))
3024         .int    JMPTBL (L(fwd_write_43bytes), L(table_144_bytes_fwd))
3025         .int    JMPTBL (L(fwd_write_44bytes), L(table_144_bytes_fwd))
3026         .int    JMPTBL (L(fwd_write_45bytes), L(table_144_bytes_fwd))
3027         .int    JMPTBL (L(fwd_write_46bytes), L(table_144_bytes_fwd))
3028         .int    JMPTBL (L(fwd_write_47bytes), L(table_144_bytes_fwd))
3029         .int    JMPTBL (L(fwd_write_48bytes), L(table_144_bytes_fwd))
3030         .int    JMPTBL (L(fwd_write_49bytes), L(table_144_bytes_fwd))
3031         .int    JMPTBL (L(fwd_write_50bytes), L(table_144_bytes_fwd))
3032         .int    JMPTBL (L(fwd_write_51bytes), L(table_144_bytes_fwd))
3033         .int    JMPTBL (L(fwd_write_52bytes), L(table_144_bytes_fwd))
3034         .int    JMPTBL (L(fwd_write_53bytes), L(table_144_bytes_fwd))
3035         .int    JMPTBL (L(fwd_write_54bytes), L(table_144_bytes_fwd))
3036         .int    JMPTBL (L(fwd_write_55bytes), L(table_144_bytes_fwd))
3037         .int    JMPTBL (L(fwd_write_56bytes), L(table_144_bytes_fwd))
3038         .int    JMPTBL (L(fwd_write_57bytes), L(table_144_bytes_fwd))
3039         .int    JMPTBL (L(fwd_write_58bytes), L(table_144_bytes_fwd))
3040         .int    JMPTBL (L(fwd_write_59bytes), L(table_144_bytes_fwd))
3041         .int    JMPTBL (L(fwd_write_60bytes), L(table_144_bytes_fwd))
3042         .int    JMPTBL (L(fwd_write_61bytes), L(table_144_bytes_fwd))
3043         .int    JMPTBL (L(fwd_write_62bytes), L(table_144_bytes_fwd))
3044         .int    JMPTBL (L(fwd_write_63bytes), L(table_144_bytes_fwd))
3045         .int    JMPTBL (L(fwd_write_64bytes), L(table_144_bytes_fwd))
3046         .int    JMPTBL (L(fwd_write_65bytes), L(table_144_bytes_fwd))
3047         .int    JMPTBL (L(fwd_write_66bytes), L(table_144_bytes_fwd))
3048         .int    JMPTBL (L(fwd_write_67bytes), L(table_144_bytes_fwd))
3049         .int    JMPTBL (L(fwd_write_68bytes), L(table_144_bytes_fwd))
3050         .int    JMPTBL (L(fwd_write_69bytes), L(table_144_bytes_fwd))
3051         .int    JMPTBL (L(fwd_write_70bytes), L(table_144_bytes_fwd))
3052         .int    JMPTBL (L(fwd_write_71bytes), L(table_144_bytes_fwd))
3053         .int    JMPTBL (L(fwd_write_72bytes), L(table_144_bytes_fwd))
3054         .int    JMPTBL (L(fwd_write_73bytes), L(table_144_bytes_fwd))
3055         .int    JMPTBL (L(fwd_write_74bytes), L(table_144_bytes_fwd))
3056         .int    JMPTBL (L(fwd_write_75bytes), L(table_144_bytes_fwd))
3057         .int    JMPTBL (L(fwd_write_76bytes), L(table_144_bytes_fwd))
3058         .int    JMPTBL (L(fwd_write_77bytes), L(table_144_bytes_fwd))
3059         .int    JMPTBL (L(fwd_write_78bytes), L(table_144_bytes_fwd))
3060         .int    JMPTBL (L(fwd_write_79bytes), L(table_144_bytes_fwd))
3061         .int    JMPTBL (L(fwd_write_80bytes), L(table_144_bytes_fwd))
3062         .int    JMPTBL (L(fwd_write_81bytes), L(table_144_bytes_fwd))
3063         .int    JMPTBL (L(fwd_write_82bytes), L(table_144_bytes_fwd))
3064         .int    JMPTBL (L(fwd_write_83bytes), L(table_144_bytes_fwd))
3065         .int    JMPTBL (L(fwd_write_84bytes), L(table_144_bytes_fwd))
3066         .int    JMPTBL (L(fwd_write_85bytes), L(table_144_bytes_fwd))
3067         .int    JMPTBL (L(fwd_write_86bytes), L(table_144_bytes_fwd))
3068         .int    JMPTBL (L(fwd_write_87bytes), L(table_144_bytes_fwd))
3069         .int    JMPTBL (L(fwd_write_88bytes), L(table_144_bytes_fwd))
3070         .int    JMPTBL (L(fwd_write_89bytes), L(table_144_bytes_fwd))
3071         .int    JMPTBL (L(fwd_write_90bytes), L(table_144_bytes_fwd))
3072         .int    JMPTBL (L(fwd_write_91bytes), L(table_144_bytes_fwd))
3073         .int    JMPTBL (L(fwd_write_92bytes), L(table_144_bytes_fwd))
3074         .int    JMPTBL (L(fwd_write_93bytes), L(table_144_bytes_fwd))
3075         .int    JMPTBL (L(fwd_write_94bytes), L(table_144_bytes_fwd))
3076         .int    JMPTBL (L(fwd_write_95bytes), L(table_144_bytes_fwd))
3077         .int    JMPTBL (L(fwd_write_96bytes), L(table_144_bytes_fwd))
3078         .int    JMPTBL (L(fwd_write_97bytes), L(table_144_bytes_fwd))
3079         .int    JMPTBL (L(fwd_write_98bytes), L(table_144_bytes_fwd))
3080         .int    JMPTBL (L(fwd_write_99bytes), L(table_144_bytes_fwd))
3081         .int    JMPTBL (L(fwd_write_100bytes), L(table_144_bytes_fwd))
3082         .int    JMPTBL (L(fwd_write_101bytes), L(table_144_bytes_fwd))
3083         .int    JMPTBL (L(fwd_write_102bytes), L(table_144_bytes_fwd))
3084         .int    JMPTBL (L(fwd_write_103bytes), L(table_144_bytes_fwd))
3085         .int    JMPTBL (L(fwd_write_104bytes), L(table_144_bytes_fwd))
3086         .int    JMPTBL (L(fwd_write_105bytes), L(table_144_bytes_fwd))
3087         .int    JMPTBL (L(fwd_write_106bytes), L(table_144_bytes_fwd))
3088         .int    JMPTBL (L(fwd_write_107bytes), L(table_144_bytes_fwd))
3089         .int    JMPTBL (L(fwd_write_108bytes), L(table_144_bytes_fwd))
3090         .int    JMPTBL (L(fwd_write_109bytes), L(table_144_bytes_fwd))
3091         .int    JMPTBL (L(fwd_write_110bytes), L(table_144_bytes_fwd))
3092         .int    JMPTBL (L(fwd_write_111bytes), L(table_144_bytes_fwd))
3093         .int    JMPTBL (L(fwd_write_112bytes), L(table_144_bytes_fwd))
3094         .int    JMPTBL (L(fwd_write_113bytes), L(table_144_bytes_fwd))
3095         .int    JMPTBL (L(fwd_write_114bytes), L(table_144_bytes_fwd))
3096         .int    JMPTBL (L(fwd_write_115bytes), L(table_144_bytes_fwd))
3097         .int    JMPTBL (L(fwd_write_116bytes), L(table_144_bytes_fwd))
3098         .int    JMPTBL (L(fwd_write_117bytes), L(table_144_bytes_fwd))
3099         .int    JMPTBL (L(fwd_write_118bytes), L(table_144_bytes_fwd))
3100         .int    JMPTBL (L(fwd_write_119bytes), L(table_144_bytes_fwd))
3101         .int    JMPTBL (L(fwd_write_120bytes), L(table_144_bytes_fwd))
3102         .int    JMPTBL (L(fwd_write_121bytes), L(table_144_bytes_fwd))
3103         .int    JMPTBL (L(fwd_write_122bytes), L(table_144_bytes_fwd))
3104         .int    JMPTBL (L(fwd_write_123bytes), L(table_144_bytes_fwd))
3105         .int    JMPTBL (L(fwd_write_124bytes), L(table_144_bytes_fwd))
3106         .int    JMPTBL (L(fwd_write_125bytes), L(table_144_bytes_fwd))
3107         .int    JMPTBL (L(fwd_write_126bytes), L(table_144_bytes_fwd))
3108         .int    JMPTBL (L(fwd_write_127bytes), L(table_144_bytes_fwd))
3109         .int    JMPTBL (L(fwd_write_128bytes), L(table_144_bytes_fwd))
3110         .int    JMPTBL (L(fwd_write_129bytes), L(table_144_bytes_fwd))
3111         .int    JMPTBL (L(fwd_write_130bytes), L(table_144_bytes_fwd))
3112         .int    JMPTBL (L(fwd_write_131bytes), L(table_144_bytes_fwd))
3113         .int    JMPTBL (L(fwd_write_132bytes), L(table_144_bytes_fwd))
3114         .int    JMPTBL (L(fwd_write_133bytes), L(table_144_bytes_fwd))
3115         .int    JMPTBL (L(fwd_write_134bytes), L(table_144_bytes_fwd))
3116         .int    JMPTBL (L(fwd_write_135bytes), L(table_144_bytes_fwd))
3117         .int    JMPTBL (L(fwd_write_136bytes), L(table_144_bytes_fwd))
3118         .int    JMPTBL (L(fwd_write_137bytes), L(table_144_bytes_fwd))
3119         .int    JMPTBL (L(fwd_write_138bytes), L(table_144_bytes_fwd))
3120         .int    JMPTBL (L(fwd_write_139bytes), L(table_144_bytes_fwd))
3121         .int    JMPTBL (L(fwd_write_140bytes), L(table_144_bytes_fwd))
3122         .int    JMPTBL (L(fwd_write_141bytes), L(table_144_bytes_fwd))
3123         .int    JMPTBL (L(fwd_write_142bytes), L(table_144_bytes_fwd))
3124         .int    JMPTBL (L(fwd_write_143bytes), L(table_144_bytes_fwd))
3126         .p2align 3
3127 L(shl_table_fwd):
3128         .int    JMPTBL (L(shl_0), L(shl_table_fwd))
3129         .int    JMPTBL (L(shl_1), L(shl_table_fwd))
3130         .int    JMPTBL (L(shl_2), L(shl_table_fwd))
3131         .int    JMPTBL (L(shl_3), L(shl_table_fwd))
3132         .int    JMPTBL (L(shl_4), L(shl_table_fwd))
3133         .int    JMPTBL (L(shl_5), L(shl_table_fwd))
3134         .int    JMPTBL (L(shl_6), L(shl_table_fwd))
3135         .int    JMPTBL (L(shl_7), L(shl_table_fwd))
3136         .int    JMPTBL (L(shl_8), L(shl_table_fwd))
3137         .int    JMPTBL (L(shl_9), L(shl_table_fwd))
3138         .int    JMPTBL (L(shl_10), L(shl_table_fwd))
3139         .int    JMPTBL (L(shl_11), L(shl_table_fwd))
3140         .int    JMPTBL (L(shl_12), L(shl_table_fwd))
3141         .int    JMPTBL (L(shl_13), L(shl_table_fwd))
3142         .int    JMPTBL (L(shl_14), L(shl_table_fwd))
3143         .int    JMPTBL (L(shl_15), L(shl_table_fwd))
3145         .p2align 3
3146 L(shl_table_bwd):
3147         .int    JMPTBL (L(shl_0_bwd), L(shl_table_bwd))
3148         .int    JMPTBL (L(shl_1_bwd), L(shl_table_bwd))
3149         .int    JMPTBL (L(shl_2_bwd), L(shl_table_bwd))
3150         .int    JMPTBL (L(shl_3_bwd), L(shl_table_bwd))
3151         .int    JMPTBL (L(shl_4_bwd), L(shl_table_bwd))
3152         .int    JMPTBL (L(shl_5_bwd), L(shl_table_bwd))
3153         .int    JMPTBL (L(shl_6_bwd), L(shl_table_bwd))
3154         .int    JMPTBL (L(shl_7_bwd), L(shl_table_bwd))
3155         .int    JMPTBL (L(shl_8_bwd), L(shl_table_bwd))
3156         .int    JMPTBL (L(shl_9_bwd), L(shl_table_bwd))
3157         .int    JMPTBL (L(shl_10_bwd), L(shl_table_bwd))
3158         .int    JMPTBL (L(shl_11_bwd), L(shl_table_bwd))
3159         .int    JMPTBL (L(shl_12_bwd), L(shl_table_bwd))
3160         .int    JMPTBL (L(shl_13_bwd), L(shl_table_bwd))
3161         .int    JMPTBL (L(shl_14_bwd), L(shl_table_bwd))
3162         .int    JMPTBL (L(shl_15_bwd), L(shl_table_bwd))
3164 #endif