ghash-x86_64.S revision d9e397b599b13d642138480a28c14db7a136bf0
1d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#if defined(__x86_64__) 2d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.text 3d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 4d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 5d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _gcm_gmult_4bit 6d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _gcm_gmult_4bit 7d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 8d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 4 9d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_gcm_gmult_4bit: 10d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbx 11d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbp 12d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r12 13d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$gmult_prologue: 14d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 15d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq 15(%rdi),%r8 16d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq L$rem_4bit(%rip),%r11 17d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %rax,%rax 18d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %rbx,%rbx 19d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %r8b,%al 20d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %r8b,%bl 21d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 22d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq $14,%rcx 23d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi,%rax,1),%r8 24d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi,%rax,1),%r9 25d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andb $240,%bl 26d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%rdx 27d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L$oop1 28d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 29d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 4 30d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$oop1: 31d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 32d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq $15,%rdx 33d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 34d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb (%rdi,%rcx,1),%al 35d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 36d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rbx,1),%r8 37d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 38d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rbx,1),%r9 39d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %al,%bl 40d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%r11,%rdx,8),%r9 41d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%rdx 42d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 43d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 44d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decq %rcx 45d9e397b599b13d642138480a28c14db7a136bf0Adam Langley js L$break1 46d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 47d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 48d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq $15,%rdx 49d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 50d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 51d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 52d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 53d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 54d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andb $240,%bl 55d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%r11,%rdx,8),%r9 56d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%rdx 57d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 58d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L$oop1 59d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 60d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 4 61d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$break1: 62d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 63d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq $15,%rdx 64d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 65d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 66d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 67d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 68d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 69d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andb $240,%bl 70d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%r11,%rdx,8),%r9 71d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%rdx 72d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 73d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 74d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 75d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andq $15,%rdx 76d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 77d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 78d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rbx,1),%r8 79d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 80d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rbx,1),%r9 81d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 82d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%r11,%rdx,8),%r9 83d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 84d9e397b599b13d642138480a28c14db7a136bf0Adam Langley bswapq %r8 85d9e397b599b13d642138480a28c14db7a136bf0Adam Langley bswapq %r9 86d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,8(%rdi) 87d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,(%rdi) 88d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 89d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsp),%rbx 90d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 24(%rsp),%rsp 91d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$gmult_epilogue: 92d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 93d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 94d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _gcm_ghash_4bit 95d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _gcm_ghash_4bit 96d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 97d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 4 98d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_gcm_ghash_4bit: 99d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbx 100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %rbp 101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r12 102d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r13 103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r14 104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushq %r15 105d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $280,%rsp 106d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$ghash_prologue: 107d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,%r14 108d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rcx,%r15 109d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $-128,%rsi 110d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 16+128(%rsp),%rbp 111d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %edx,%edx 112d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 0+0-128(%rsi),%r8 113d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 0+8-128(%rsi),%rax 114d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %al,%dl 115d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rax 116d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%r10 117d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 118d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16+0-128(%rsi),%r9 119d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 120d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16+8-128(%rsi),%rbx 121d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 122d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,0(%rsp) 123d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rax 124d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %bl,%dl 125d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rbx 126d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 127d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 128d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,0(%rbp) 129d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32+0-128(%rsi),%r8 130d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 131d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,0-128(%rbp) 132d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32+8-128(%rsi),%rax 133d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 134d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,1(%rsp) 135d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rbx 136d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %al,%dl 137d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rax 138d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%r10 139d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 140d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,8(%rbp) 141d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48+0-128(%rsi),%r9 142d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 143d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rbx,8-128(%rbp) 144d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 48+8-128(%rsi),%rbx 145d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 146d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,2(%rsp) 147d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rax 148d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %bl,%dl 149d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rbx 150d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 151d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 152d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,16(%rbp) 153d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 64+0-128(%rsi),%r8 154d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 155d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,16-128(%rbp) 156d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 64+8-128(%rsi),%rax 157d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 158d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,3(%rsp) 159d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rbx 160d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %al,%dl 161d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rax 162d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%r10 163d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 164d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,24(%rbp) 165d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 80+0-128(%rsi),%r9 166d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 167d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rbx,24-128(%rbp) 168d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 80+8-128(%rsi),%rbx 169d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 170d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,4(%rsp) 171d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rax 172d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %bl,%dl 173d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rbx 174d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 175d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 176d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,32(%rbp) 177d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 96+0-128(%rsi),%r8 178d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 179d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,32-128(%rbp) 180d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 96+8-128(%rsi),%rax 181d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 182d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,5(%rsp) 183d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rbx 184d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %al,%dl 185d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rax 186d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%r10 187d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 188d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,40(%rbp) 189d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 112+0-128(%rsi),%r9 190d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 191d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rbx,40-128(%rbp) 192d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 112+8-128(%rsi),%rbx 193d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 194d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,6(%rsp) 195d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rax 196d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %bl,%dl 197d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rbx 198d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 199d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 200d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,48(%rbp) 201d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 128+0-128(%rsi),%r8 202d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 203d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,48-128(%rbp) 204d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 128+8-128(%rsi),%rax 205d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 206d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,7(%rsp) 207d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rbx 208d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %al,%dl 209d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rax 210d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%r10 211d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 212d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,56(%rbp) 213d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 144+0-128(%rsi),%r9 214d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 215d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rbx,56-128(%rbp) 216d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 144+8-128(%rsi),%rbx 217d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 218d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,8(%rsp) 219d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rax 220d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %bl,%dl 221d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rbx 222d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 223d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 224d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,64(%rbp) 225d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 160+0-128(%rsi),%r8 226d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 227d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,64-128(%rbp) 228d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 160+8-128(%rsi),%rax 229d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 230d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,9(%rsp) 231d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rbx 232d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %al,%dl 233d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rax 234d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%r10 235d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 236d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,72(%rbp) 237d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 176+0-128(%rsi),%r9 238d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 239d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rbx,72-128(%rbp) 240d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 176+8-128(%rsi),%rbx 241d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 242d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,10(%rsp) 243d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rax 244d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %bl,%dl 245d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rbx 246d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 247d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 248d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,80(%rbp) 249d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 192+0-128(%rsi),%r8 250d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 251d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,80-128(%rbp) 252d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 192+8-128(%rsi),%rax 253d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 254d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,11(%rsp) 255d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rbx 256d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %al,%dl 257d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rax 258d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%r10 259d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 260d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,88(%rbp) 261d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 208+0-128(%rsi),%r9 262d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 263d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rbx,88-128(%rbp) 264d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 208+8-128(%rsi),%rbx 265d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 266d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,12(%rsp) 267d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rax 268d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %bl,%dl 269d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rbx 270d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 271d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 272d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,96(%rbp) 273d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 224+0-128(%rsi),%r8 274d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 275d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,96-128(%rbp) 276d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 224+8-128(%rsi),%rax 277d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 278d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,13(%rsp) 279d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rbx 280d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %al,%dl 281d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rax 282d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,%r10 283d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 284d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,104(%rbp) 285d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 240+0-128(%rsi),%r9 286d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 287d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rbx,104-128(%rbp) 288d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 240+8-128(%rsi),%rbx 289d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 290d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,14(%rsp) 291d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rax 292d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %bl,%dl 293d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%rbx 294d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 295d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 296d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,112(%rbp) 297d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%dl 298d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rax,112-128(%rbp) 299d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 300d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,15(%rsp) 301d9e397b599b13d642138480a28c14db7a136bf0Adam Langley orq %r10,%rbx 302d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,120(%rbp) 303d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rbx,120-128(%rbp) 304d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq $-128,%rsi 305d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rdi),%r8 306d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 0(%rdi),%r9 307d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq %r14,%r15 308d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq L$rem_8bit(%rip),%r11 309d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L$outer_loop 310d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 4 311d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$outer_loop: 312d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%r14),%r9 313d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%r14),%rdx 314d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 16(%r14),%r14 315d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%rdx 316d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,(%rdi) 317d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %rdx,8(%rdi) 318d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $32,%rdx 319d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %rax,%rax 320d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 321d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 322d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ebx 323d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 324d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ebx 325d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 326d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi,%rax,1),%r8 327d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq (%rsi,%rax,1),%r9 328d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 329d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ecx 330d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 331d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rbx,1),%r12 332d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ecx 333d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r12 334d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 335d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 336d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r12b,%r12 337d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 338d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rbx,8),%r8 339d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 340d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rbx,8),%r9 341d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 342d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 343d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 344d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 345d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 346d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r12,2),%r12 347d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ebx 348d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 349d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rcx,1),%r13 350d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ebx 351d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r12 352d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r13 353d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 354d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r12,%r9 355d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 356d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r13b,%r13 357d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 358d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rcx,8),%r8 359d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 360d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rcx,8),%r9 361d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 362d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 363d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 364d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 365d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 366d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r13,2),%r13 367d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ecx 368d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 369d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rbx,1),%r12 370d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ecx 371d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r13 372d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r12 373d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 374d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r13,%r9 375d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 376d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r12b,%r12 377d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 8(%rdi),%edx 378d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 379d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rbx,8),%r8 380d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 381d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rbx,8),%r9 382d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 383d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 384d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 385d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 386d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 387d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r12,2),%r12 388d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ebx 389d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 390d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rcx,1),%r13 391d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ebx 392d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r12 393d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r13 394d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 395d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r12,%r9 396d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 397d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r13b,%r13 398d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 399d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rcx,8),%r8 400d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 401d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rcx,8),%r9 402d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 403d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 404d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 405d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 406d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 407d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r13,2),%r13 408d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ecx 409d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 410d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rbx,1),%r12 411d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ecx 412d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r13 413d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r12 414d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 415d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r13,%r9 416d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 417d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r12b,%r12 418d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 419d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rbx,8),%r8 420d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 421d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rbx,8),%r9 422d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 423d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 424d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 425d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 426d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 427d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r12,2),%r12 428d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ebx 429d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 430d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rcx,1),%r13 431d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ebx 432d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r12 433d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r13 434d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 435d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r12,%r9 436d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 437d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r13b,%r13 438d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 439d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rcx,8),%r8 440d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 441d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rcx,8),%r9 442d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 443d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 444d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 445d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 446d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 447d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r13,2),%r13 448d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ecx 449d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 450d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rbx,1),%r12 451d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ecx 452d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r13 453d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r12 454d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 455d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r13,%r9 456d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 457d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r12b,%r12 458d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 4(%rdi),%edx 459d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 460d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rbx,8),%r8 461d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 462d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rbx,8),%r9 463d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 464d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 465d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 466d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 467d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 468d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r12,2),%r12 469d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ebx 470d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 471d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rcx,1),%r13 472d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ebx 473d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r12 474d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r13 475d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 476d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r12,%r9 477d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 478d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r13b,%r13 479d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 480d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rcx,8),%r8 481d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 482d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rcx,8),%r9 483d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 484d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 485d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 486d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 487d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 488d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r13,2),%r13 489d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ecx 490d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 491d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rbx,1),%r12 492d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ecx 493d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r13 494d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r12 495d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 496d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r13,%r9 497d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 498d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r12b,%r12 499d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 500d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rbx,8),%r8 501d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 502d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rbx,8),%r9 503d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 504d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 505d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 506d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 507d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 508d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r12,2),%r12 509d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ebx 510d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 511d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rcx,1),%r13 512d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ebx 513d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r12 514d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r13 515d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 516d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r12,%r9 517d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 518d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r13b,%r13 519d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 520d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rcx,8),%r8 521d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 522d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rcx,8),%r9 523d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 524d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 525d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 526d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 527d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 528d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r13,2),%r13 529d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ecx 530d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 531d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rbx,1),%r12 532d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ecx 533d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r13 534d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r12 535d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 536d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r13,%r9 537d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 538d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r12b,%r12 539d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 0(%rdi),%edx 540d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 541d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rbx,8),%r8 542d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 543d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rbx,8),%r9 544d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 545d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 546d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 547d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 548d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 549d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r12,2),%r12 550d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ebx 551d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 552d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rcx,1),%r13 553d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ebx 554d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r12 555d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r13 556d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 557d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r12,%r9 558d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 559d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r13b,%r13 560d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 561d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rcx,8),%r8 562d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 563d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rcx,8),%r9 564d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 565d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 566d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 567d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 568d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 569d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r13,2),%r13 570d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ecx 571d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 572d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rbx,1),%r12 573d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ecx 574d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r13 575d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r12 576d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 577d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r13,%r9 578d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 579d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r12b,%r12 580d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 581d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rbx,8),%r8 582d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 583d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rbx,8),%r9 584d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 585d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 586d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 587d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 588d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 589d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r12,2),%r12 590d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ebx 591d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 592d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rcx,1),%r13 593d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $4,%ebx 594d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r12 595d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r13 596d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 597d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r12,%r9 598d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 599d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r13b,%r13 600d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 601d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rcx,8),%r8 602d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 603d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rcx,8),%r9 604d9e397b599b13d642138480a28c14db7a136bf0Adam Langley roll $8,%edx 605d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 606d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 607d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movb %dl,%al 608d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 609d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r13,2),%r13 610d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbl %dl,%ecx 611d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%al 612d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq (%rsp,%rbx,1),%r12 613d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $240,%ecx 614d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r13 615d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r8,%r12 616d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 617d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r13,%r9 618d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r8 619d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r12b,%r12 620d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl -4(%rdi),%edx 621d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $8,%r9 622d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq -128(%rbp,%rbx,8),%r8 623d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $56,%r10 624d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rbp,%rbx,8),%r9 625d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r12,2),%r12 626d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rax,1),%r8 627d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rax,1),%r9 628d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r12 629d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 630d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r12,%r9 631d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzbq %r8b,%r13 632d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r8 633d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,%r10 634d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlb $4,%r13b 635d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrq $4,%r9 636d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq 8(%rsi,%rcx,1),%r8 637d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movzwq (%r11,%r13,2),%r13 638d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $60,%r10 639d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq (%rsi,%rcx,1),%r9 640d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r10,%r8 641d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shlq $48,%r13 642d9e397b599b13d642138480a28c14db7a136bf0Adam Langley bswapq %r8 643d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorq %r13,%r9 644d9e397b599b13d642138480a28c14db7a136bf0Adam Langley bswapq %r9 645d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpq %r15,%r14 646d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jb L$outer_loop 647d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r8,8(%rdi) 648d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq %r9,(%rdi) 649d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 650d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 280(%rsp),%rsi 651d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 0(%rsi),%r15 652d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 8(%rsi),%r14 653d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 16(%rsi),%r13 654d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 24(%rsi),%r12 655d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 32(%rsi),%rbp 656d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq 40(%rsi),%rbx 657d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 48(%rsi),%rsp 658d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$ghash_epilogue: 659d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 660d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 661d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _gcm_init_clmul 662d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _gcm_init_clmul 663d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 664d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 4 665d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_gcm_init_clmul: 666d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$_init_clmul: 667d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%rsi),%xmm2 668d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm2,%xmm2 669d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 670d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 671d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $255,%xmm2,%xmm4 672d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm2,%xmm3 673d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $1,%xmm2 674d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm5 675d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $63,%xmm3 676d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pcmpgtd %xmm4,%xmm5 677d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm3 678d9e397b599b13d642138480a28c14db7a136bf0Adam Langley por %xmm3,%xmm2 679d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 680d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 681d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand L$0x1c2_polynomial(%rip),%xmm5 682d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm2 683d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 684d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 685d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm2,%xmm6 686d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm2,%xmm0 687d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm6 688d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 689d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm3 690d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 691d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,194,0 692d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,202,17 693d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,222,0 694d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 695d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm3 696d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 697d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm3,%xmm4 698d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 699d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm4 700d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 701d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 702d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 703d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 704d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 705d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $5,%xmm0 706d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 707d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $1,%xmm0 708d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 709d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $57,%xmm0 710d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 711d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm0 712d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 713d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 714d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 715d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 716d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 717d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 718d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 719d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm1 720d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 721d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $5,%xmm0 722d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 723d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 724d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 725d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm2,%xmm3 726d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm4 727d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm3 728d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm2,0(%rdi) 729d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 730d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,16(%rdi) 731d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,15,227,8 732d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm4,32(%rdi) 733d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 734d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm3 735d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 736d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,194,0 737d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,202,17 738d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,222,0 739d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 740d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm3 741d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 742d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm3,%xmm4 743d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 744d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm4 745d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 746d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 747d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 748d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 749d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 750d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $5,%xmm0 751d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 752d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $1,%xmm0 753d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 754d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $57,%xmm0 755d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 756d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm0 757d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 758d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 759d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 760d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 761d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 762d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 763d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 764d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm1 765d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 766d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $5,%xmm0 767d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 768d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 769d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 770d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm5 771d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 772d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm3 773d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 774d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,194,0 775d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,202,17 776d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,222,0 777d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 778d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm3 779d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 780d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm3,%xmm4 781d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 782d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm4 783d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 784d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 785d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 786d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 787d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 788d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $5,%xmm0 789d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 790d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $1,%xmm0 791d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 792d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $57,%xmm0 793d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 794d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm0 795d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 796d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 797d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 798d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 799d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 800d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 801d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 802d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm1 803d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 804d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $5,%xmm0 805d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 806d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 807d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 808d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm5,%xmm3 809d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm4 810d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm3 811d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm5,48(%rdi) 812d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 813d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,64(%rdi) 814d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,15,227,8 815d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm4,80(%rdi) 816d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 817d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 818d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _gcm_gmult_clmul 819d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _gcm_gmult_clmul 820d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 821d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 4 822d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_gcm_gmult_clmul: 823d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$_gmult_clmul: 824d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%rdi),%xmm0 825d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa L$bswap_mask(%rip),%xmm5 826d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%rsi),%xmm2 827d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%rsi),%xmm4 828d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,197 829d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 830d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm3 831d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 832d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,194,0 833d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,202,17 834d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,220,0 835d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 836d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm3 837d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 838d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm3,%xmm4 839d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 840d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm4 841d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 842d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 843d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 844d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 845d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 846d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $5,%xmm0 847d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 848d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $1,%xmm0 849d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 850d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $57,%xmm0 851d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 852d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm0 853d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 854d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 855d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 856d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 857d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 858d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 859d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 860d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm1 861d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 862d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $5,%xmm0 863d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 864d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 865d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 866d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,197 867d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,(%rdi) 868d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 869d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 870d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _gcm_ghash_clmul 871d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _gcm_ghash_clmul 872d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 873d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 5 874d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_gcm_ghash_clmul: 875d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$_ghash_clmul: 876d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa L$bswap_mask(%rip),%xmm10 877d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 878d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%rdi),%xmm0 879d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%rsi),%xmm2 880d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%rsi),%xmm7 881d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,56,0,194 882d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 883d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $16,%rcx 884d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jz L$odd_tail 885d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 886d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%rsi),%xmm6 887d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl _OPENSSL_ia32cap_P+4(%rip),%eax 888d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpq $48,%rcx 889d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jb L$skip4x 890d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 891d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $71303168,%eax 892d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $4194304,%eax 893d9e397b599b13d642138480a28c14db7a136bf0Adam Langley je L$skip4x 894d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 895d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $48,%rcx 896d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movq $11547335547999543296,%rax 897d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%rsi),%xmm14 898d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 64(%rsi),%xmm15 899d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 900d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 901d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 902d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 903d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%rdx),%xmm3 904d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%rdx),%xmm11 905d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,56,0,218 906d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,218 907d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm3,%xmm5 908d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm3,%xmm4 909d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm4 910d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,218,0 911d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,234,17 912d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,231,0 913d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 914d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm11,%xmm13 915d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm11,%xmm12 916d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm11,%xmm12 917d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,222,0 918d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,238,17 919d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,231,16 920d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm11,%xmm3 921d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm13,%xmm5 922d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 80(%rsi),%xmm7 923d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm12,%xmm4 924d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 925d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%rdx),%xmm11 926d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 0(%rdx),%xmm8 927d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,218 928d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,194 929d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm11,%xmm13 930d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm11,%xmm12 931d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm0 932d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm11,%xmm12 933d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,58,68,222,0 934d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 935d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm8 936d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm8 937d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,58,68,238,17 938d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,231,0 939d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm11,%xmm3 940d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm13,%xmm5 941d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 942d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 64(%rdx),%rdx 943d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $64,%rcx 944d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jc L$tail4x 945d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 946d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L$mod4_loop 947d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 5 948d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$mod4_loop: 949d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,58,68,199,0 950d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm12,%xmm4 951d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 48(%rdx),%xmm11 952d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,218 953d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,58,68,207,17 954d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm3,%xmm0 955d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%rdx),%xmm3 956d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm11,%xmm13 957d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,199,16 958d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm11,%xmm12 959d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm1 960d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm11,%xmm12 961d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,56,0,218 962d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 32(%rsi),%xmm7 963d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm4,%xmm8 964d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,218,0 965d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm3,%xmm4 966d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 967d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm8 968d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm3,%xmm5 969d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm8 970d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm4 971d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm8,%xmm9 972d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,234,17 973d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm8 974d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm9 975d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm0 976d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa L$7_mask(%rip),%xmm8 977d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm9,%xmm1 978d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,76,15,110,200 979d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 980d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm0,%xmm8 981d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,200 982d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm9 983d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,231,0 984d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $57,%xmm9 985d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm9,%xmm8 986d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm9 987d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,222,0 988d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm8 989d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm9,%xmm0 990d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm1 991d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 0(%rdx),%xmm8 992d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 993d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm9 994d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 995d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,238,17 996d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm11,%xmm3 997d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%rdx),%xmm11 998d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,218 999d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,231,16 1000d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm13,%xmm5 1001d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movups 80(%rsi),%xmm7 1002d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,194 1003d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm9,%xmm1 1004d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm9 1005d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $5,%xmm0 1006d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1007d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm11,%xmm13 1008d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm12,%xmm4 1009d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm11,%xmm12 1010d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm9,%xmm0 1011d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm1 1012d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm11,%xmm12 1013d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,58,68,222,0 1014d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 1015d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 1016d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 1017d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,58,68,238,17 1018d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm11,%xmm3 1019d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm8 1020d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm8 1021d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1022d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,231,0 1023d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm13,%xmm5 1024d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1025d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 64(%rdx),%rdx 1026d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $64,%rcx 1027d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnc L$mod4_loop 1028d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1029d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$tail4x: 1030d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,58,68,199,0 1031d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,58,68,207,17 1032d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,68,15,58,68,199,16 1033d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm12,%xmm4 1034d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm3,%xmm0 1035d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorps %xmm5,%xmm1 1036d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm1 1037d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm8 1038d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1039d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm8 1040d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm1 1041d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1042d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm8,%xmm9 1043d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm8 1044d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm9 1045d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm1 1046d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm9,%xmm0 1047d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1048d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 1049d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 1050d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $5,%xmm0 1051d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 1052d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $1,%xmm0 1053d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 1054d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $57,%xmm0 1055d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 1056d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm0 1057d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 1058d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 1059d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 1060d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1061d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1062d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 1063d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 1064d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm1 1065d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 1066d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $5,%xmm0 1067d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 1068d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 1069d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 1070d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addq $64,%rcx 1071d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jz L$done 1072d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 32(%rsi),%xmm7 1073d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $16,%rcx 1074d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jz L$odd_tail 1075d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$skip4x: 1076d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1077d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1078d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1079d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1080d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1081d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%rdx),%xmm8 1082d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%rdx),%xmm3 1083d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,194 1084d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,56,0,218 1085d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm0 1086d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1087d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm3,%xmm5 1088d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm3,%xmm4 1089d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm4 1090d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,218,0 1091d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,234,17 1092d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,231,0 1093d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1094d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 32(%rdx),%rdx 1095d9e397b599b13d642138480a28c14db7a136bf0Adam Langley nop 1096d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $32,%rcx 1097d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jbe L$even_tail 1098d9e397b599b13d642138480a28c14db7a136bf0Adam Langley nop 1099d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L$mod_loop 1100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 5 1102d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$mod_loop: 1103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 1104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm4,%xmm8 1105d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm4 1106d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 1107d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1108d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,198,0 1109d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,206,17 1110d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,231,16 1111d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1112d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 1113d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm1 1114d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%rdx),%xmm9 1115d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm8 1116d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,202 1117d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%rdx),%xmm3 1118d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1119d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm8 1120d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm9,%xmm1 1121d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm4 1122d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,56,0,218 1123d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm4,%xmm8 1124d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm8 1125d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm4 1126d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm1 1127d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 1128d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1129d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm3,%xmm5 1130d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1131d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm9 1132d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm8 1133d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $5,%xmm0 1134d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm8 1135d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,218,0 1136d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $1,%xmm0 1137d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm0 1138d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $57,%xmm0 1139d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm8 1140d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm0 1141d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm8 1142d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm9,%xmm0 1143d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm5,%xmm4 1144d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm1 1145d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm4 1146d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1147d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm9 1148d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 1149d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,234,17 1150d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm9,%xmm1 1151d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm9 1152d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $5,%xmm0 1153d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm9,%xmm0 1154d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leaq 32(%rdx),%rdx 1155d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 1156d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,231,0 1157d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 1158d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1159d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subq $32,%rcx 1160d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ja L$mod_loop 1161d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1162d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$even_tail: 1163d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 1164d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm4,%xmm8 1165d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm4 1166d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 1167d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1168d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,198,0 1169d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,206,17 1170d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,231,16 1171d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1172d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 1173d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm1 1174d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm8 1175d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm8 1176d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm4 1177d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm4,%xmm8 1178d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm8 1179d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm4 1180d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm1 1181d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 1182d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1183d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 1184d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 1185d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $5,%xmm0 1186d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 1187d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $1,%xmm0 1188d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 1189d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $57,%xmm0 1190d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 1191d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm0 1192d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 1193d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 1194d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 1195d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1196d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1197d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 1198d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 1199d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm1 1200d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 1201d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $5,%xmm0 1202d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 1203d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 1204d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 1205d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testq %rcx,%rcx 1206d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L$done 1207d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1208d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$odd_tail: 1209d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%rdx),%xmm8 1210d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,69,15,56,0,194 1211d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm8,%xmm0 1212d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 1213d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $78,%xmm0,%xmm3 1214d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 1215d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,194,0 1216d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,202,17 1217d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,68,223,0 1218d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 1219d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm3 1220d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1221d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm3,%xmm4 1222d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 1223d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm4 1224d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 1225d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 1226d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1227d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 1228d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 1229d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $5,%xmm0 1230d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 1231d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $1,%xmm0 1232d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 1233d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psllq $57,%xmm0 1234d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 1235d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm0 1236d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrldq $8,%xmm3 1237d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 1238d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm1 1239d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1240d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1241d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 1242d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 1243d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm1 1244d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 1245d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $5,%xmm0 1246d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 1247d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrlq $1,%xmm0 1248d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 1249d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$done: 1250d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,65,15,56,0,194 1251d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,(%rdi) 1252d9e397b599b13d642138480a28c14db7a136bf0Adam Langley .byte 0xf3,0xc3 1253d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1254d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _gcm_init_avx 1255d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _gcm_init_avx 1256d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1257d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 5 1258d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_gcm_init_avx: 1259d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L$_init_clmul 1260d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1261d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _gcm_gmult_avx 1262d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _gcm_gmult_avx 1263d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1264d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 5 1265d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_gcm_gmult_avx: 1266d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L$_gmult_clmul 1267d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1268d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _gcm_ghash_avx 1269d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _gcm_ghash_avx 1270d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1271d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 5 1272d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_gcm_ghash_avx: 1273d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L$_ghash_clmul 1274d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1275d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 6 1276d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$bswap_mask: 1277d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 1278d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$0x1c2_polynomial: 1279d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 1280d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$7_mask: 1281d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 7,0,7,0 1282d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$7_mask_poly: 1283d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 7,0,450,0 1284d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 6 1285d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1286d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$rem_4bit: 1287d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 0,0,0,471859200,0,943718400,0,610271232 1288d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 0,1887436800,0,1822425088,0,1220542464,0,1423966208 1289d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 0,3774873600,0,4246732800,0,3644850176,0,3311403008 1290d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 0,2441084928,0,2376073216,0,2847932416,0,3051356160 1291d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1292d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL$rem_8bit: 1293d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E 1294d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E 1295d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E 1296d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E 1297d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E 1298d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E 1299d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E 1300d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E 1301d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE 1302d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE 1303d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE 1304d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE 1305d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E 1306d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E 1307d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE 1308d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE 1309d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E 1310d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E 1311d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E 1312d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E 1313d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E 1314d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E 1315d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E 1316d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E 1317d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE 1318d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE 1319d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE 1320d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE 1321d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E 1322d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E 1323d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE 1324d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE 1325d9e397b599b13d642138480a28c14db7a136bf0Adam Langley 1326d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 1327d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.p2align 6 1328d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif 1329