12a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik/*
22a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * Copyright (C) 2014 The Android Open Source Project
32a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik *
42a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * Licensed under the Apache License, Version 2.0 (the "License");
52a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * you may not use this file except in compliance with the License.
62a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * You may obtain a copy of the License at
72a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik *
82a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik *      http://www.apache.org/licenses/LICENSE-2.0
92a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik *
102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * Unless required by applicable law or agreed to in writing, software
112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * distributed under the License is distributed on an "AS IS" BASIS,
122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * See the License for the specific language governing permissions and
142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * limitations under the License.
152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik */
162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#include "asm_support_x86_64.S"
182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#define MEMCMP  __memcmp16
202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik/*
222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * Half of Silvermont L1 Data Cache size
232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik *(see original file cache.h in bionic/libc/arch-x86_64/).
242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * This value is used for specific optimization on big lengths.
252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik */
262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#define DATA_CACHE_SIZE_HALF    (12*1024)
272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#ifndef L
292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik# define L(label)    .L##label
302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#endif
312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#ifndef ALIGN
332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik# define ALIGN(n)    .p2align n
342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#endif
352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#define JMPTBL(I, B)    (I - B)
372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE)        \
392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik  lea        TABLE(%rip), %r11;                \
402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik  movslq    (%r11, INDEX, SCALE), %rcx;            \
412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik  add        %r11, %rcx;                    \
422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik  jmp        *%rcx;                        \
432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik  ud2
442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikDEFINE_FUNCTION MEMCMP
462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm0, %xmm0
472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    shl       $1, %rdx
482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $79, %rdx
492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ja        L(79bytesormore)
502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(79bytesormore):
562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rsi), %xmm1
572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rdi), %xmm2
582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       %rsi, %rcx
622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    and       $-16, %rsi
632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rsi
642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       %rsi, %rcx
652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       %rcx, %rdi
672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rcx, %rdx
682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    test      $0xf, %rdi
692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jz        L(2aligned)
702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $128, %rdx
722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ja        L(128bytesormore)
732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less128bytes):
742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rdi), %xmm2
772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    16(%rdi), %xmm2
822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    32(%rdi), %xmm2
872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm2
882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(48bytesin256)
902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    48(%rdi), %xmm2
922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm2
932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesin256)
952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $32, %rdx
962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jb        L(less32bytesin64)
972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    64(%rdi), %xmm2
992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      64(%rsi), %xmm2
1002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(80bytesin256)
1022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    80(%rdi), %xmm2
1042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      80(%rsi), %xmm2
1052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(96bytesin256)
1072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $32, %rdx
1082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rdi
1092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rsi
1102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less32bytesin64):
1112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdi
1122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rsi
1132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
1142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
1152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
1162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(128bytesormore):
1182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $512, %rdx
1192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ja        L(512bytesormore)
1202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $256, %rdx
1212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ja        L(less512bytes)
1222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less256bytes):
1232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $128, %rdx
1242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rdi), %xmm2
1262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
1272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
1292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    16(%rdi), %xmm2
1312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
1322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
1342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    32(%rdi), %xmm2
1362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm2
1372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(48bytesin256)
1392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    48(%rdi), %xmm2
1412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm2
1422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesin256)
1442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    64(%rdi), %xmm2
1462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      64(%rsi), %xmm2
1472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(80bytesin256)
1492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    80(%rdi), %xmm2
1512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      80(%rsi), %xmm2
1522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(96bytesin256)
1542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    96(%rdi), %xmm2
1562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      96(%rsi), %xmm2
1572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(112bytesin256)
1592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    112(%rdi), %xmm2
1612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      112(%rsi), %xmm2
1622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(128bytesin256)
1642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $128, %rsi
1662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $128, %rdi
1672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $64, %rdx
1692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae       L(less128bytes)
1702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $32, %rdx
1722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jb        L(less32bytesin128)
1732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rdi), %xmm2
1752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
1762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
1782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    16(%rdi), %xmm2
1802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
1812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
1832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $32, %rdx
1842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rdi
1852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rsi
1862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less32bytesin128):
1872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
1882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
1892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
1902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less512bytes):
1922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $256, %rdx
1932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rdi), %xmm2
1942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
1952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
1962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
1972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
1982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    16(%rdi), %xmm2
1992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
2002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
2022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    32(%rdi), %xmm2
2042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm2
2052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(48bytesin256)
2072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    48(%rdi), %xmm2
2092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm2
2102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesin256)
2122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    64(%rdi), %xmm2
2142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      64(%rsi), %xmm2
2152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(80bytesin256)
2172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    80(%rdi), %xmm2
2192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      80(%rsi), %xmm2
2202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(96bytesin256)
2222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    96(%rdi), %xmm2
2242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      96(%rsi), %xmm2
2252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(112bytesin256)
2272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    112(%rdi), %xmm2
2292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      112(%rsi), %xmm2
2302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(128bytesin256)
2322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    128(%rdi), %xmm2
2342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      128(%rsi), %xmm2
2352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(144bytesin256)
2372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    144(%rdi), %xmm2
2392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      144(%rsi), %xmm2
2402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(160bytesin256)
2422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    160(%rdi), %xmm2
2442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      160(%rsi), %xmm2
2452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(176bytesin256)
2472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    176(%rdi), %xmm2
2492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      176(%rsi), %xmm2
2502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(192bytesin256)
2522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    192(%rdi), %xmm2
2542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      192(%rsi), %xmm2
2552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(208bytesin256)
2572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    208(%rdi), %xmm2
2592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      208(%rsi), %xmm2
2602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(224bytesin256)
2622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    224(%rdi), %xmm2
2642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      224(%rsi), %xmm2
2652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(240bytesin256)
2672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    240(%rdi), %xmm2
2692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      240(%rsi), %xmm2
2702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(256bytesin256)
2722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $256, %rsi
2742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $256, %rdi
2752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $128, %rdx
2772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae       L(less256bytes)
2782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $64, %rdx
2802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae       L(less128bytes)
2812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $32, %rdx
2832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jb        L(less32bytesin256)
2842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rdi), %xmm2
2862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
2872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
2892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
2902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    16(%rdi), %xmm2
2912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
2922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
2932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
2942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $32, %rdx
2952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rdi
2962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rsi
2972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less32bytesin256):
2982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
2992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
3002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
3012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
3032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(512bytesormore):
3042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#ifdef DATA_CACHE_SIZE_HALF
3052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $DATA_CACHE_SIZE_HALF, %r8
3062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#else
3072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       __x86_64_data_cache_size_half(%rip), %r8
3082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#endif
3092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       %r8, %r9
3102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    shr       $1, %r8
3112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %r9, %r8
3122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %r8, %rdx
3132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ja        L(L2_L3_cache_unaglined)
3142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
3152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
3162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(64bytesormore_loop):
3172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rdi), %xmm2
3182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
3192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    %xmm2, %xmm1
3202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    16(%rdi), %xmm3
3222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm3
3232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm3, %xmm1
3242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    32(%rdi), %xmm4
3262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm4
3272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm4, %xmm1
3282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    48(%rdi), %xmm5
3302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm5
3312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm5, %xmm1
3322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm1, %xmm0
3342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesormore_loop_end)
3352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rsi
3362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdi
3372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
3382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae       L(64bytesormore_loop)
3392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdx
3412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
3422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
3432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
3442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(L2_L3_cache_unaglined):
3462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
3472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
3482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(L2_L3_unaligned_128bytes_loop):
3492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    prefetchnta 0x1c0(%rdi)
3502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    prefetchnta 0x1c0(%rsi)
3512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rdi), %xmm2
3522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
3532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    %xmm2, %xmm1
3542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    16(%rdi), %xmm3
3562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm3
3572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm3, %xmm1
3582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    32(%rdi), %xmm4
3602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm4
3612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm4, %xmm1
3622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    48(%rdi), %xmm5
3642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm5
3652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm5, %xmm1
3662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm1, %xmm0
3682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesormore_loop_end)
3692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rsi
3702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdi
3712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
3722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae       L(L2_L3_unaligned_128bytes_loop)
3732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdx
3752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
3762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
3772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
3782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik/*
3802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * This case is for machines which are sensitive for unaligned instructions.
3812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik */
3822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
3832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(2aligned):
3842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $128, %rdx
3852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ja        L(128bytesormorein2aligned)
3862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less128bytesin2aligned):
3872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
3882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    (%rdi), %xmm2
3902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
3912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
3922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
3932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    16(%rdi), %xmm2
3952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
3962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
3972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
3982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
3992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    32(%rdi), %xmm2
4002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm2
4012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(48bytesin256)
4032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    48(%rdi), %xmm2
4052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm2
4062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesin256)
4082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $32, %rdx
4092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jb        L(less32bytesin64in2alinged)
4102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    64(%rdi), %xmm2
4122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      64(%rsi), %xmm2
4132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(80bytesin256)
4152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    80(%rdi), %xmm2
4172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      80(%rsi), %xmm2
4182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(96bytesin256)
4202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $32, %rdx
4212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rdi
4222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rsi
4232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less32bytesin64in2alinged):
4242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdi
4252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rsi
4262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
4272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
4282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
4292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
4312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(128bytesormorein2aligned):
4322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $512, %rdx
4332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ja        L(512bytesormorein2aligned)
4342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $256, %rdx
4352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ja        L(256bytesormorein2aligned)
4362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less256bytesin2alinged):
4372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $128, %rdx
4382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    (%rdi), %xmm2
4402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
4412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
4432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    16(%rdi), %xmm2
4452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
4462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
4482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    32(%rdi), %xmm2
4502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm2
4512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(48bytesin256)
4532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    48(%rdi), %xmm2
4552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm2
4562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesin256)
4582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    64(%rdi), %xmm2
4602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      64(%rsi), %xmm2
4612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(80bytesin256)
4632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    80(%rdi), %xmm2
4652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      80(%rsi), %xmm2
4662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(96bytesin256)
4682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    96(%rdi), %xmm2
4702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      96(%rsi), %xmm2
4712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(112bytesin256)
4732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    112(%rdi), %xmm2
4752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      112(%rsi), %xmm2
4762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(128bytesin256)
4782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $128, %rsi
4802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $128, %rdi
4812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $64, %rdx
4832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae       L(less128bytesin2aligned)
4842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $32, %rdx
4862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jb        L(less32bytesin128in2aligned)
4872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    (%rdi), %xmm2
4892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
4902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
4922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
4932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    16(%rdi), %xmm2
4942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
4952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
4962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
4972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $32, %rdx
4982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rdi
4992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rsi
5002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less32bytesin128in2aligned):
5012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
5022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
5032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
5042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
5062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(256bytesormorein2aligned):
5072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $256, %rdx
5092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    (%rdi), %xmm2
5102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
5112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
5132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    16(%rdi), %xmm2
5152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
5162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
5182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    32(%rdi), %xmm2
5202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm2
5212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(48bytesin256)
5232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    48(%rdi), %xmm2
5252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm2
5262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesin256)
5282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    64(%rdi), %xmm2
5302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      64(%rsi), %xmm2
5312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(80bytesin256)
5332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    80(%rdi), %xmm2
5352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      80(%rsi), %xmm2
5362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(96bytesin256)
5382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    96(%rdi), %xmm2
5402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      96(%rsi), %xmm2
5412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(112bytesin256)
5432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    112(%rdi), %xmm2
5452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      112(%rsi), %xmm2
5462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(128bytesin256)
5482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    128(%rdi), %xmm2
5502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      128(%rsi), %xmm2
5512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(144bytesin256)
5532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    144(%rdi), %xmm2
5552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      144(%rsi), %xmm2
5562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(160bytesin256)
5582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    160(%rdi), %xmm2
5602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      160(%rsi), %xmm2
5612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(176bytesin256)
5632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    176(%rdi), %xmm2
5652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      176(%rsi), %xmm2
5662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(192bytesin256)
5682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    192(%rdi), %xmm2
5702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      192(%rsi), %xmm2
5712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(208bytesin256)
5732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    208(%rdi), %xmm2
5752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      208(%rsi), %xmm2
5762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(224bytesin256)
5782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    224(%rdi), %xmm2
5802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      224(%rsi), %xmm2
5812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(240bytesin256)
5832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    240(%rdi), %xmm2
5852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      240(%rsi), %xmm2
5862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
5872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(256bytesin256)
5882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $256, %rsi
5902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $256, %rdi
5912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $128, %rdx
5932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae       L(less256bytesin2alinged)
5942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $64, %rdx
5962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae       L(less128bytesin2aligned)
5972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
5982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       $32, %rdx
5992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jb        L(less32bytesin256in2alinged)
6002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    (%rdi), %xmm2
6022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
6032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
6042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytesin256)
6052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    16(%rdi), %xmm2
6072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm2
6082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
6092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(32bytesin256)
6102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $32, %rdx
6112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rdi
6122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $32, %rsi
6132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less32bytesin256in2alinged):
6142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
6152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
6162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
6172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
6192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(512bytesormorein2aligned):
6202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#ifdef DATA_CACHE_SIZE_HALF
6212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $DATA_CACHE_SIZE_HALF, %r8
6222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#else
6232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       __x86_64_data_cache_size_half(%rip), %r8
6242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik#endif
6252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       %r8, %r9
6262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    shr       $1, %r8
6272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %r9, %r8
6282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %r8, %rdx
6292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ja        L(L2_L3_cache_aglined)
6302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
6322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
6332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(64bytesormore_loopin2aligned):
6342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    (%rdi), %xmm2
6352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
6362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    %xmm2, %xmm1
6372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    16(%rdi), %xmm3
6392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm3
6402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm3, %xmm1
6412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    32(%rdi), %xmm4
6432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm4
6442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm4, %xmm1
6452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    48(%rdi), %xmm5
6472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm5
6482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm5, %xmm1
6492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm1, %xmm0
6512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesormore_loop_end)
6522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rsi
6532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdi
6542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
6552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae       L(64bytesormore_loopin2aligned)
6562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdx
6582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
6592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
6602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
6612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(L2_L3_cache_aglined):
6622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
6632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
6642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(L2_L3_aligned_128bytes_loop):
6652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    prefetchnta 0x1c0(%rdi)
6662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    prefetchnta 0x1c0(%rsi)
6672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    (%rdi), %xmm2
6682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      (%rsi), %xmm2
6692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    %xmm2, %xmm1
6702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    16(%rdi), %xmm3
6722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      16(%rsi), %xmm3
6732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm3, %xmm1
6742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    32(%rdi), %xmm4
6762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      32(%rsi), %xmm4
6772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm4, %xmm1
6782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqa    48(%rdi), %xmm5
6802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      48(%rsi), %xmm5
6812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    por       %xmm5, %xmm1
6822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm1, %xmm0
6842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(64bytesormore_loop_end)
6852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rsi
6862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdi
6872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       $64, %rdx
6882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jae    L(L2_L3_aligned_128bytes_loop)
6892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdx
6912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rsi
6922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       %rdx, %rdi
6932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 2)
6942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
6962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
6972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(64bytesormore_loop_end):
6982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rdi
6992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rsi
7002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
7012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytes)
7022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
7032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rdi
7042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rsi
7052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm3, %xmm0
7062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytes)
7072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
7082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rdi
7092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rsi
7102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm4, %xmm0
7112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(16bytes)
7122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
7132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rdi
7142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rsi
7152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
7172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(256bytesin256):
7182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $256, %rdi
7192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $256, %rsi
7202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(240bytesin256):
7222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $240, %rdi
7232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $240, %rsi
7242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(224bytesin256):
7262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $224, %rdi
7272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $224, %rsi
7282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(208bytesin256):
7302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $208, %rdi
7312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $208, %rsi
7322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(192bytesin256):
7342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $192, %rdi
7352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $192, %rsi
7362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(176bytesin256):
7382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $176, %rdi
7392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $176, %rsi
7402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(160bytesin256):
7422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $160, %rdi
7432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $160, %rsi
7442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(144bytesin256):
7462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $144, %rdi
7472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $144, %rsi
7482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(128bytesin256):
7502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $128, %rdi
7512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $128, %rsi
7522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(112bytesin256):
7542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $112, %rdi
7552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $112, %rsi
7562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(96bytesin256):
7582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $96, %rdi
7592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $96, %rsi
7602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(80bytesin256):
7622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $80, %rdi
7632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $80, %rsi
7642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(64bytesin256):
7662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rdi
7672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $64, %rsi
7682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(16bytes)
7692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(48bytesin256):
7702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rdi
7712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rsi
7722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(32bytesin256):
7732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rdi
7742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rsi
7752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(16bytesin256):
7762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rdi
7772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    add       $16, %rsi
7782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(16bytes):
7792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -16(%rdi), %rax
7802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -16(%rsi), %rcx
7812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
7822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
7832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(8bytes):
7842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rdi), %rax
7852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rsi), %rcx
7862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
7872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
7882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    xor       %eax, %eax
7892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
7902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
7912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
7922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(12bytes):
7932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -12(%rdi), %rax
7942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -12(%rsi), %rcx
7952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
7962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
7972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(4bytes):
7982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -4(%rsi), %ecx
7992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -4(%rdi), %eax
8002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %eax, %ecx
8012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin4bytes)
8022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(0bytes):
8032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    xor       %eax, %eax
8042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
8052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
8062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
8072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(66bytes):
8082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -66(%rdi), %xmm1
8092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -66(%rsi), %xmm2
8102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-66, %dl
8112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
8122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
8132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
8142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(50bytes):
8152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -50(%rdi), %xmm1
8162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -50(%rsi), %xmm2
8172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-50, %dl
8182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
8192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
8202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
8212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(34bytes):
8222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -34(%rdi), %xmm1
8232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -34(%rsi), %xmm2
8242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-34, %dl
8252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
8262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
8272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
8282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(18bytes):
8292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -18(%rdi), %rax
8302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -18(%rsi), %rcx
8312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
8322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
8332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(10bytes):
8342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -10(%rdi), %rax
8352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -10(%rsi), %rcx
8362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
8372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
8382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movzwl    -2(%rdi), %eax
8392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movzwl    -2(%rsi), %ecx
8402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %cl, %al
8412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(end)
8422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    and       $0xffff, %eax
8432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    and       $0xffff, %ecx
8442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       %ecx, %eax
8452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
8462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
8472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
8482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(14bytes):
8492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -14(%rdi), %rax
8502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -14(%rsi), %rcx
8512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
8522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
8532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rdi), %rax
8542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rsi), %rcx
8552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
8562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
8572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    xor       %eax, %eax
8582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
8592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
8602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
8612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(6bytes):
8622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -6(%rdi), %eax
8632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -6(%rsi), %ecx
8642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %eax, %ecx
8652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin4bytes)
8662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(2bytes):
8672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movzwl    -2(%rsi), %ecx
8682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movzwl    -2(%rdi), %eax
8692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %cl, %al
8702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(end)
8712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    and       $0xffff, %eax
8722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    and       $0xffff, %ecx
8732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       %ecx, %eax
8742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
8752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
8762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
8772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(68bytes):
8782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -68(%rdi), %xmm2
8792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -68(%rsi), %xmm1
8802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-68, %dl
8812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
8822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
8832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
8842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(52bytes):
8852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -52(%rdi), %xmm2
8862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -52(%rsi), %xmm1
8872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-52, %dl
8882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
8892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
8902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
8912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(36bytes):
8922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -36(%rdi), %xmm2
8932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -36(%rsi), %xmm1
8942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-36, %dl
8952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
8962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
8972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
8982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(20bytes):
8992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -20(%rdi), %xmm2
9002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -20(%rsi), %xmm1
9012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-20, %dl
9022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -4(%rdi), %eax
9062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -4(%rsi), %ecx
9072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %eax, %ecx
9082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin4bytes)
9092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    xor       %eax, %eax
9102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
9112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
9122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
9132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(70bytes):
9142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -70(%rsi), %xmm1
9152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -70(%rdi), %xmm2
9162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-70, %dl
9172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(54bytes):
9212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -54(%rsi), %xmm1
9222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -54(%rdi), %xmm2
9232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-54, %dl
9242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(38bytes):
9282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -38(%rsi), %xmm1
9292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -38(%rdi), %xmm2
9302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-38, %dl
9312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(22bytes):
9352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -22(%rsi), %xmm1
9362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -22(%rdi), %xmm2
9372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-22, %dl
9382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rdi), %rax
9422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rsi), %rcx
9432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
9442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
9452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    xor       %eax, %eax
9462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
9472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
9482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
9492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(72bytes):
9502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -72(%rsi), %xmm1
9512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -72(%rdi), %xmm2
9522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-72, %dl
9532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(56bytes):
9572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -56(%rdi), %xmm2
9582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -56(%rsi), %xmm1
9592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-56, %dl
9602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(40bytes):
9642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -40(%rdi), %xmm2
9652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -40(%rsi), %xmm1
9662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-40, %dl
9672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(24bytes):
9712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -24(%rdi), %xmm2
9722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -24(%rsi), %xmm1
9732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-24, %dl
9742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rdi), %rax
9782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rsi), %rcx
9792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
9802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
9812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    xor       %eax, %eax
9822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
9832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
9842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
9852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(74bytes):
9862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -74(%rsi), %xmm1
9872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -74(%rdi), %xmm2
9882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-74, %dl
9892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(58bytes):
9932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -58(%rdi), %xmm2
9942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -58(%rsi), %xmm1
9952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-58, %dl
9962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
9972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
9982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
9992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(42bytes):
10002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -42(%rdi), %xmm2
10012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -42(%rsi), %xmm1
10022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-42, %dl
10032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(26bytes):
10072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -26(%rdi), %xmm2
10082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -26(%rsi), %xmm1
10092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-26, %dl
10102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -10(%rdi), %rax
10142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -10(%rsi), %rcx
10152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
10162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
10172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movzwl    -2(%rdi), %eax
10182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movzwl    -2(%rsi), %ecx
10192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(end)
10202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
10212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
10222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(76bytes):
10232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -76(%rsi), %xmm1
10242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -76(%rdi), %xmm2
10252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-76, %dl
10262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(60bytes):
10302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -60(%rdi), %xmm2
10312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -60(%rsi), %xmm1
10322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-60, %dl
10332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(44bytes):
10372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -44(%rdi), %xmm2
10382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -44(%rsi), %xmm1
10392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-44, %dl
10402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(28bytes):
10442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -28(%rdi), %xmm2
10452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -28(%rsi), %xmm1
10462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-28, %dl
10472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -12(%rdi), %rax
10512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -12(%rsi), %rcx
10522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
10532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
10542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -4(%rdi), %eax
10552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -4(%rsi), %ecx
10562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %eax, %ecx
10572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin4bytes)
10582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    xor       %eax, %eax
10592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
10602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
10612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
10622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(78bytes):
10632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -78(%rsi), %xmm1
10642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -78(%rdi), %xmm2
10652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-78, %dl
10662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(62bytes):
10702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -62(%rdi), %xmm2
10712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -62(%rsi), %xmm1
10722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-62, %dl
10732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(46bytes):
10772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -46(%rdi), %xmm2
10782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -46(%rsi), %xmm1
10792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-46, %dl
10802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(30bytes):
10842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -30(%rdi), %xmm2
10852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -30(%rsi), %xmm1
10862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-30, %dl
10872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
10882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
10892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
10902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -14(%rdi), %rax
10912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -14(%rsi), %rcx
10922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
10932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
10942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rdi), %rax
10952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rsi), %rcx
10962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
10972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
10982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    xor       %eax, %eax
10992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
11002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
11012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
11022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(64bytes):
11032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -64(%rdi), %xmm2
11042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -64(%rsi), %xmm1
11052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-64, %dl
11062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
11072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
11082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
11092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(48bytes):
11102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -48(%rdi), %xmm2
11112a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -48(%rsi), %xmm1
11122a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-48, %dl
11132a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
11142a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
11152a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
11162a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(32bytes):
11172a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -32(%rdi), %xmm2
11182a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movdqu    -32(%rsi), %xmm1
11192a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       $-32, %dl
11202a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    pxor      %xmm1, %xmm2
11212a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ptest     %xmm2, %xmm0
11222a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jnc       L(less16bytes)
11232a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
11242a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -16(%rdi), %rax
11252a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -16(%rsi), %rcx
11262a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
11272a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
11282a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
11292a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rdi), %rax
11302a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       -8(%rsi), %rcx
11312a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
11322a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
11332a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    xor       %eax, %eax
11342a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
11352a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
11362a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik/*
11372a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik * Aligned 8 bytes to avoid 2 branch "taken" in one 16 alinged code block.
11382a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik */
11392a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (3)
11402a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(less16bytes):
11412a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    movsbq    %dl, %rdx
11422a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       (%rsi, %rdx), %rcx
11432a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       (%rdi, %rdx), %rax
11442a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %rax, %rcx
11452a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin8bytes)
11462a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       8(%rsi, %rdx), %rcx
11472a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    mov       8(%rdi, %rdx), %rax
11482a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(diffin8bytes):
11492a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %eax, %ecx
11502a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(diffin4bytes)
11512a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    shr       $32, %rcx
11522a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    shr       $32, %rax
11532a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(diffin4bytes):
11542a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    cmp       %cx, %ax
11552a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jne       L(end)
11562a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    shr       $16, %ecx
11572a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    shr       $16, %eax
11582a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    jmp       L(end)
11592a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
11602a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (4)
11612a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(end):
11622a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    and       $0xffff, %eax
11632a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    and       $0xffff, %ecx
11642a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    sub       %ecx, %eax
11652a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ret
11662a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
11672a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikEND_FUNCTION MEMCMP
11682a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik
11692a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    ALIGN (3)
11702a0bffd2ae4725a89b400279a2d58f07ff610685Varvara RainchikL(table_64bytes):
11712a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(0bytes), L(table_64bytes))
11722a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(2bytes), L(table_64bytes))
11732a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(4bytes), L(table_64bytes))
11742a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(6bytes), L(table_64bytes))
11752a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(8bytes), L(table_64bytes))
11762a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(10bytes), L(table_64bytes))
11772a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(12bytes), L(table_64bytes))
11782a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(14bytes), L(table_64bytes))
11792a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(16bytes), L(table_64bytes))
11802a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(18bytes), L(table_64bytes))
11812a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(20bytes), L(table_64bytes))
11822a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(22bytes), L(table_64bytes))
11832a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(24bytes), L(table_64bytes))
11842a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(26bytes), L(table_64bytes))
11852a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(28bytes), L(table_64bytes))
11862a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(30bytes), L(table_64bytes))
11872a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(32bytes), L(table_64bytes))
11882a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(34bytes), L(table_64bytes))
11892a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(36bytes), L(table_64bytes))
11902a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(38bytes), L(table_64bytes))
11912a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(40bytes), L(table_64bytes))
11922a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(42bytes), L(table_64bytes))
11932a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(44bytes), L(table_64bytes))
11942a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(46bytes), L(table_64bytes))
11952a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(48bytes), L(table_64bytes))
11962a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(50bytes), L(table_64bytes))
11972a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(52bytes), L(table_64bytes))
11982a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(54bytes), L(table_64bytes))
11992a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(56bytes), L(table_64bytes))
12002a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(58bytes), L(table_64bytes))
12012a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(60bytes), L(table_64bytes))
12022a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(62bytes), L(table_64bytes))
12032a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(64bytes), L(table_64bytes))
12042a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(66bytes), L(table_64bytes))
12052a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(68bytes), L(table_64bytes))
12062a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(70bytes), L(table_64bytes))
12072a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(72bytes), L(table_64bytes))
12082a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(74bytes), L(table_64bytes))
12092a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(76bytes), L(table_64bytes))
12102a0bffd2ae4725a89b400279a2d58f07ff610685Varvara Rainchik    .int    JMPTBL (L(78bytes), L(table_64bytes))
1211