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