Path: blob/main/sys/crypto/openssl/amd64/ghash-x86_64.S
39482 views
/* Do not modify. This file is auto-generated from ghash-x86_64.pl. */1.text234.globl gcm_gmult_4bit5.type gcm_gmult_4bit,@function6.align 167gcm_gmult_4bit:8.cfi_startproc9.byte 243,15,30,25010pushq %rbx11.cfi_adjust_cfa_offset 812.cfi_offset %rbx,-1613pushq %rbp14.cfi_adjust_cfa_offset 815.cfi_offset %rbp,-2416pushq %r1217.cfi_adjust_cfa_offset 818.cfi_offset %r12,-3219pushq %r1320.cfi_adjust_cfa_offset 821.cfi_offset %r13,-4022pushq %r1423.cfi_adjust_cfa_offset 824.cfi_offset %r14,-4825pushq %r1526.cfi_adjust_cfa_offset 827.cfi_offset %r15,-5628subq $280,%rsp29.cfi_adjust_cfa_offset 28030.Lgmult_prologue:3132movzbq 15(%rdi),%r833leaq .Lrem_4bit(%rip),%r1134xorq %rax,%rax35xorq %rbx,%rbx36movb %r8b,%al37movb %r8b,%bl38shlb $4,%al39movq $14,%rcx40movq 8(%rsi,%rax,1),%r841movq (%rsi,%rax,1),%r942andb $0xf0,%bl43movq %r8,%rdx44jmp .Loop14546.align 1647.Loop1:48shrq $4,%r849andq $0xf,%rdx50movq %r9,%r1051movb (%rdi,%rcx,1),%al52shrq $4,%r953xorq 8(%rsi,%rbx,1),%r854shlq $60,%r1055xorq (%rsi,%rbx,1),%r956movb %al,%bl57xorq (%r11,%rdx,8),%r958movq %r8,%rdx59shlb $4,%al60xorq %r10,%r861decq %rcx62js .Lbreak16364shrq $4,%r865andq $0xf,%rdx66movq %r9,%r1067shrq $4,%r968xorq 8(%rsi,%rax,1),%r869shlq $60,%r1070xorq (%rsi,%rax,1),%r971andb $0xf0,%bl72xorq (%r11,%rdx,8),%r973movq %r8,%rdx74xorq %r10,%r875jmp .Loop17677.align 1678.Lbreak1:79shrq $4,%r880andq $0xf,%rdx81movq %r9,%r1082shrq $4,%r983xorq 8(%rsi,%rax,1),%r884shlq $60,%r1085xorq (%rsi,%rax,1),%r986andb $0xf0,%bl87xorq (%r11,%rdx,8),%r988movq %r8,%rdx89xorq %r10,%r89091shrq $4,%r892andq $0xf,%rdx93movq %r9,%r1094shrq $4,%r995xorq 8(%rsi,%rbx,1),%r896shlq $60,%r1097xorq (%rsi,%rbx,1),%r998xorq %r10,%r899xorq (%r11,%rdx,8),%r9100101bswapq %r8102bswapq %r9103movq %r8,8(%rdi)104movq %r9,(%rdi)105106leaq 280+48(%rsp),%rsi107.cfi_def_cfa %rsi,8108movq -8(%rsi),%rbx109.cfi_restore %rbx110leaq (%rsi),%rsp111.cfi_def_cfa_register %rsp112.Lgmult_epilogue:113.byte 0xf3,0xc3114.cfi_endproc115.size gcm_gmult_4bit,.-gcm_gmult_4bit116.globl gcm_ghash_4bit117.type gcm_ghash_4bit,@function118.align 16119gcm_ghash_4bit:120.cfi_startproc121.byte 243,15,30,250122pushq %rbx123.cfi_adjust_cfa_offset 8124.cfi_offset %rbx,-16125pushq %rbp126.cfi_adjust_cfa_offset 8127.cfi_offset %rbp,-24128pushq %r12129.cfi_adjust_cfa_offset 8130.cfi_offset %r12,-32131pushq %r13132.cfi_adjust_cfa_offset 8133.cfi_offset %r13,-40134pushq %r14135.cfi_adjust_cfa_offset 8136.cfi_offset %r14,-48137pushq %r15138.cfi_adjust_cfa_offset 8139.cfi_offset %r15,-56140subq $280,%rsp141.cfi_adjust_cfa_offset 280142.Lghash_prologue:143movq %rdx,%r14144movq %rcx,%r15145subq $-128,%rsi146leaq 16+128(%rsp),%rbp147xorl %edx,%edx148movq 0+0-128(%rsi),%r8149movq 0+8-128(%rsi),%rax150movb %al,%dl151shrq $4,%rax152movq %r8,%r10153shrq $4,%r8154movq 16+0-128(%rsi),%r9155shlb $4,%dl156movq 16+8-128(%rsi),%rbx157shlq $60,%r10158movb %dl,0(%rsp)159orq %r10,%rax160movb %bl,%dl161shrq $4,%rbx162movq %r9,%r10163shrq $4,%r9164movq %r8,0(%rbp)165movq 32+0-128(%rsi),%r8166shlb $4,%dl167movq %rax,0-128(%rbp)168movq 32+8-128(%rsi),%rax169shlq $60,%r10170movb %dl,1(%rsp)171orq %r10,%rbx172movb %al,%dl173shrq $4,%rax174movq %r8,%r10175shrq $4,%r8176movq %r9,8(%rbp)177movq 48+0-128(%rsi),%r9178shlb $4,%dl179movq %rbx,8-128(%rbp)180movq 48+8-128(%rsi),%rbx181shlq $60,%r10182movb %dl,2(%rsp)183orq %r10,%rax184movb %bl,%dl185shrq $4,%rbx186movq %r9,%r10187shrq $4,%r9188movq %r8,16(%rbp)189movq 64+0-128(%rsi),%r8190shlb $4,%dl191movq %rax,16-128(%rbp)192movq 64+8-128(%rsi),%rax193shlq $60,%r10194movb %dl,3(%rsp)195orq %r10,%rbx196movb %al,%dl197shrq $4,%rax198movq %r8,%r10199shrq $4,%r8200movq %r9,24(%rbp)201movq 80+0-128(%rsi),%r9202shlb $4,%dl203movq %rbx,24-128(%rbp)204movq 80+8-128(%rsi),%rbx205shlq $60,%r10206movb %dl,4(%rsp)207orq %r10,%rax208movb %bl,%dl209shrq $4,%rbx210movq %r9,%r10211shrq $4,%r9212movq %r8,32(%rbp)213movq 96+0-128(%rsi),%r8214shlb $4,%dl215movq %rax,32-128(%rbp)216movq 96+8-128(%rsi),%rax217shlq $60,%r10218movb %dl,5(%rsp)219orq %r10,%rbx220movb %al,%dl221shrq $4,%rax222movq %r8,%r10223shrq $4,%r8224movq %r9,40(%rbp)225movq 112+0-128(%rsi),%r9226shlb $4,%dl227movq %rbx,40-128(%rbp)228movq 112+8-128(%rsi),%rbx229shlq $60,%r10230movb %dl,6(%rsp)231orq %r10,%rax232movb %bl,%dl233shrq $4,%rbx234movq %r9,%r10235shrq $4,%r9236movq %r8,48(%rbp)237movq 128+0-128(%rsi),%r8238shlb $4,%dl239movq %rax,48-128(%rbp)240movq 128+8-128(%rsi),%rax241shlq $60,%r10242movb %dl,7(%rsp)243orq %r10,%rbx244movb %al,%dl245shrq $4,%rax246movq %r8,%r10247shrq $4,%r8248movq %r9,56(%rbp)249movq 144+0-128(%rsi),%r9250shlb $4,%dl251movq %rbx,56-128(%rbp)252movq 144+8-128(%rsi),%rbx253shlq $60,%r10254movb %dl,8(%rsp)255orq %r10,%rax256movb %bl,%dl257shrq $4,%rbx258movq %r9,%r10259shrq $4,%r9260movq %r8,64(%rbp)261movq 160+0-128(%rsi),%r8262shlb $4,%dl263movq %rax,64-128(%rbp)264movq 160+8-128(%rsi),%rax265shlq $60,%r10266movb %dl,9(%rsp)267orq %r10,%rbx268movb %al,%dl269shrq $4,%rax270movq %r8,%r10271shrq $4,%r8272movq %r9,72(%rbp)273movq 176+0-128(%rsi),%r9274shlb $4,%dl275movq %rbx,72-128(%rbp)276movq 176+8-128(%rsi),%rbx277shlq $60,%r10278movb %dl,10(%rsp)279orq %r10,%rax280movb %bl,%dl281shrq $4,%rbx282movq %r9,%r10283shrq $4,%r9284movq %r8,80(%rbp)285movq 192+0-128(%rsi),%r8286shlb $4,%dl287movq %rax,80-128(%rbp)288movq 192+8-128(%rsi),%rax289shlq $60,%r10290movb %dl,11(%rsp)291orq %r10,%rbx292movb %al,%dl293shrq $4,%rax294movq %r8,%r10295shrq $4,%r8296movq %r9,88(%rbp)297movq 208+0-128(%rsi),%r9298shlb $4,%dl299movq %rbx,88-128(%rbp)300movq 208+8-128(%rsi),%rbx301shlq $60,%r10302movb %dl,12(%rsp)303orq %r10,%rax304movb %bl,%dl305shrq $4,%rbx306movq %r9,%r10307shrq $4,%r9308movq %r8,96(%rbp)309movq 224+0-128(%rsi),%r8310shlb $4,%dl311movq %rax,96-128(%rbp)312movq 224+8-128(%rsi),%rax313shlq $60,%r10314movb %dl,13(%rsp)315orq %r10,%rbx316movb %al,%dl317shrq $4,%rax318movq %r8,%r10319shrq $4,%r8320movq %r9,104(%rbp)321movq 240+0-128(%rsi),%r9322shlb $4,%dl323movq %rbx,104-128(%rbp)324movq 240+8-128(%rsi),%rbx325shlq $60,%r10326movb %dl,14(%rsp)327orq %r10,%rax328movb %bl,%dl329shrq $4,%rbx330movq %r9,%r10331shrq $4,%r9332movq %r8,112(%rbp)333shlb $4,%dl334movq %rax,112-128(%rbp)335shlq $60,%r10336movb %dl,15(%rsp)337orq %r10,%rbx338movq %r9,120(%rbp)339movq %rbx,120-128(%rbp)340addq $-128,%rsi341movq 8(%rdi),%r8342movq 0(%rdi),%r9343addq %r14,%r15344leaq .Lrem_8bit(%rip),%r11345jmp .Louter_loop346.align 16347.Louter_loop:348xorq (%r14),%r9349movq 8(%r14),%rdx350leaq 16(%r14),%r14351xorq %r8,%rdx352movq %r9,(%rdi)353movq %rdx,8(%rdi)354shrq $32,%rdx355xorq %rax,%rax356roll $8,%edx357movb %dl,%al358movzbl %dl,%ebx359shlb $4,%al360shrl $4,%ebx361roll $8,%edx362movq 8(%rsi,%rax,1),%r8363movq (%rsi,%rax,1),%r9364movb %dl,%al365movzbl %dl,%ecx366shlb $4,%al367movzbq (%rsp,%rbx,1),%r12368shrl $4,%ecx369xorq %r8,%r12370movq %r9,%r10371shrq $8,%r8372movzbq %r12b,%r12373shrq $8,%r9374xorq -128(%rbp,%rbx,8),%r8375shlq $56,%r10376xorq (%rbp,%rbx,8),%r9377roll $8,%edx378xorq 8(%rsi,%rax,1),%r8379xorq (%rsi,%rax,1),%r9380movb %dl,%al381xorq %r10,%r8382movzwq (%r11,%r12,2),%r12383movzbl %dl,%ebx384shlb $4,%al385movzbq (%rsp,%rcx,1),%r13386shrl $4,%ebx387shlq $48,%r12388xorq %r8,%r13389movq %r9,%r10390xorq %r12,%r9391shrq $8,%r8392movzbq %r13b,%r13393shrq $8,%r9394xorq -128(%rbp,%rcx,8),%r8395shlq $56,%r10396xorq (%rbp,%rcx,8),%r9397roll $8,%edx398xorq 8(%rsi,%rax,1),%r8399xorq (%rsi,%rax,1),%r9400movb %dl,%al401xorq %r10,%r8402movzwq (%r11,%r13,2),%r13403movzbl %dl,%ecx404shlb $4,%al405movzbq (%rsp,%rbx,1),%r12406shrl $4,%ecx407shlq $48,%r13408xorq %r8,%r12409movq %r9,%r10410xorq %r13,%r9411shrq $8,%r8412movzbq %r12b,%r12413movl 8(%rdi),%edx414shrq $8,%r9415xorq -128(%rbp,%rbx,8),%r8416shlq $56,%r10417xorq (%rbp,%rbx,8),%r9418roll $8,%edx419xorq 8(%rsi,%rax,1),%r8420xorq (%rsi,%rax,1),%r9421movb %dl,%al422xorq %r10,%r8423movzwq (%r11,%r12,2),%r12424movzbl %dl,%ebx425shlb $4,%al426movzbq (%rsp,%rcx,1),%r13427shrl $4,%ebx428shlq $48,%r12429xorq %r8,%r13430movq %r9,%r10431xorq %r12,%r9432shrq $8,%r8433movzbq %r13b,%r13434shrq $8,%r9435xorq -128(%rbp,%rcx,8),%r8436shlq $56,%r10437xorq (%rbp,%rcx,8),%r9438roll $8,%edx439xorq 8(%rsi,%rax,1),%r8440xorq (%rsi,%rax,1),%r9441movb %dl,%al442xorq %r10,%r8443movzwq (%r11,%r13,2),%r13444movzbl %dl,%ecx445shlb $4,%al446movzbq (%rsp,%rbx,1),%r12447shrl $4,%ecx448shlq $48,%r13449xorq %r8,%r12450movq %r9,%r10451xorq %r13,%r9452shrq $8,%r8453movzbq %r12b,%r12454shrq $8,%r9455xorq -128(%rbp,%rbx,8),%r8456shlq $56,%r10457xorq (%rbp,%rbx,8),%r9458roll $8,%edx459xorq 8(%rsi,%rax,1),%r8460xorq (%rsi,%rax,1),%r9461movb %dl,%al462xorq %r10,%r8463movzwq (%r11,%r12,2),%r12464movzbl %dl,%ebx465shlb $4,%al466movzbq (%rsp,%rcx,1),%r13467shrl $4,%ebx468shlq $48,%r12469xorq %r8,%r13470movq %r9,%r10471xorq %r12,%r9472shrq $8,%r8473movzbq %r13b,%r13474shrq $8,%r9475xorq -128(%rbp,%rcx,8),%r8476shlq $56,%r10477xorq (%rbp,%rcx,8),%r9478roll $8,%edx479xorq 8(%rsi,%rax,1),%r8480xorq (%rsi,%rax,1),%r9481movb %dl,%al482xorq %r10,%r8483movzwq (%r11,%r13,2),%r13484movzbl %dl,%ecx485shlb $4,%al486movzbq (%rsp,%rbx,1),%r12487shrl $4,%ecx488shlq $48,%r13489xorq %r8,%r12490movq %r9,%r10491xorq %r13,%r9492shrq $8,%r8493movzbq %r12b,%r12494movl 4(%rdi),%edx495shrq $8,%r9496xorq -128(%rbp,%rbx,8),%r8497shlq $56,%r10498xorq (%rbp,%rbx,8),%r9499roll $8,%edx500xorq 8(%rsi,%rax,1),%r8501xorq (%rsi,%rax,1),%r9502movb %dl,%al503xorq %r10,%r8504movzwq (%r11,%r12,2),%r12505movzbl %dl,%ebx506shlb $4,%al507movzbq (%rsp,%rcx,1),%r13508shrl $4,%ebx509shlq $48,%r12510xorq %r8,%r13511movq %r9,%r10512xorq %r12,%r9513shrq $8,%r8514movzbq %r13b,%r13515shrq $8,%r9516xorq -128(%rbp,%rcx,8),%r8517shlq $56,%r10518xorq (%rbp,%rcx,8),%r9519roll $8,%edx520xorq 8(%rsi,%rax,1),%r8521xorq (%rsi,%rax,1),%r9522movb %dl,%al523xorq %r10,%r8524movzwq (%r11,%r13,2),%r13525movzbl %dl,%ecx526shlb $4,%al527movzbq (%rsp,%rbx,1),%r12528shrl $4,%ecx529shlq $48,%r13530xorq %r8,%r12531movq %r9,%r10532xorq %r13,%r9533shrq $8,%r8534movzbq %r12b,%r12535shrq $8,%r9536xorq -128(%rbp,%rbx,8),%r8537shlq $56,%r10538xorq (%rbp,%rbx,8),%r9539roll $8,%edx540xorq 8(%rsi,%rax,1),%r8541xorq (%rsi,%rax,1),%r9542movb %dl,%al543xorq %r10,%r8544movzwq (%r11,%r12,2),%r12545movzbl %dl,%ebx546shlb $4,%al547movzbq (%rsp,%rcx,1),%r13548shrl $4,%ebx549shlq $48,%r12550xorq %r8,%r13551movq %r9,%r10552xorq %r12,%r9553shrq $8,%r8554movzbq %r13b,%r13555shrq $8,%r9556xorq -128(%rbp,%rcx,8),%r8557shlq $56,%r10558xorq (%rbp,%rcx,8),%r9559roll $8,%edx560xorq 8(%rsi,%rax,1),%r8561xorq (%rsi,%rax,1),%r9562movb %dl,%al563xorq %r10,%r8564movzwq (%r11,%r13,2),%r13565movzbl %dl,%ecx566shlb $4,%al567movzbq (%rsp,%rbx,1),%r12568shrl $4,%ecx569shlq $48,%r13570xorq %r8,%r12571movq %r9,%r10572xorq %r13,%r9573shrq $8,%r8574movzbq %r12b,%r12575movl 0(%rdi),%edx576shrq $8,%r9577xorq -128(%rbp,%rbx,8),%r8578shlq $56,%r10579xorq (%rbp,%rbx,8),%r9580roll $8,%edx581xorq 8(%rsi,%rax,1),%r8582xorq (%rsi,%rax,1),%r9583movb %dl,%al584xorq %r10,%r8585movzwq (%r11,%r12,2),%r12586movzbl %dl,%ebx587shlb $4,%al588movzbq (%rsp,%rcx,1),%r13589shrl $4,%ebx590shlq $48,%r12591xorq %r8,%r13592movq %r9,%r10593xorq %r12,%r9594shrq $8,%r8595movzbq %r13b,%r13596shrq $8,%r9597xorq -128(%rbp,%rcx,8),%r8598shlq $56,%r10599xorq (%rbp,%rcx,8),%r9600roll $8,%edx601xorq 8(%rsi,%rax,1),%r8602xorq (%rsi,%rax,1),%r9603movb %dl,%al604xorq %r10,%r8605movzwq (%r11,%r13,2),%r13606movzbl %dl,%ecx607shlb $4,%al608movzbq (%rsp,%rbx,1),%r12609shrl $4,%ecx610shlq $48,%r13611xorq %r8,%r12612movq %r9,%r10613xorq %r13,%r9614shrq $8,%r8615movzbq %r12b,%r12616shrq $8,%r9617xorq -128(%rbp,%rbx,8),%r8618shlq $56,%r10619xorq (%rbp,%rbx,8),%r9620roll $8,%edx621xorq 8(%rsi,%rax,1),%r8622xorq (%rsi,%rax,1),%r9623movb %dl,%al624xorq %r10,%r8625movzwq (%r11,%r12,2),%r12626movzbl %dl,%ebx627shlb $4,%al628movzbq (%rsp,%rcx,1),%r13629shrl $4,%ebx630shlq $48,%r12631xorq %r8,%r13632movq %r9,%r10633xorq %r12,%r9634shrq $8,%r8635movzbq %r13b,%r13636shrq $8,%r9637xorq -128(%rbp,%rcx,8),%r8638shlq $56,%r10639xorq (%rbp,%rcx,8),%r9640roll $8,%edx641xorq 8(%rsi,%rax,1),%r8642xorq (%rsi,%rax,1),%r9643movb %dl,%al644xorq %r10,%r8645movzwq (%r11,%r13,2),%r13646movzbl %dl,%ecx647shlb $4,%al648movzbq (%rsp,%rbx,1),%r12649andl $240,%ecx650shlq $48,%r13651xorq %r8,%r12652movq %r9,%r10653xorq %r13,%r9654shrq $8,%r8655movzbq %r12b,%r12656movl -4(%rdi),%edx657shrq $8,%r9658xorq -128(%rbp,%rbx,8),%r8659shlq $56,%r10660xorq (%rbp,%rbx,8),%r9661movzwq (%r11,%r12,2),%r12662xorq 8(%rsi,%rax,1),%r8663xorq (%rsi,%rax,1),%r9664shlq $48,%r12665xorq %r10,%r8666xorq %r12,%r9667movzbq %r8b,%r13668shrq $4,%r8669movq %r9,%r10670shlb $4,%r13b671shrq $4,%r9672xorq 8(%rsi,%rcx,1),%r8673movzwq (%r11,%r13,2),%r13674shlq $60,%r10675xorq (%rsi,%rcx,1),%r9676xorq %r10,%r8677shlq $48,%r13678bswapq %r8679xorq %r13,%r9680bswapq %r9681cmpq %r15,%r14682jb .Louter_loop683movq %r8,8(%rdi)684movq %r9,(%rdi)685686leaq 280+48(%rsp),%rsi687.cfi_def_cfa %rsi,8688movq -48(%rsi),%r15689.cfi_restore %r15690movq -40(%rsi),%r14691.cfi_restore %r14692movq -32(%rsi),%r13693.cfi_restore %r13694movq -24(%rsi),%r12695.cfi_restore %r12696movq -16(%rsi),%rbp697.cfi_restore %rbp698movq -8(%rsi),%rbx699.cfi_restore %rbx700leaq 0(%rsi),%rsp701.cfi_def_cfa_register %rsp702.Lghash_epilogue:703.byte 0xf3,0xc3704.cfi_endproc705.size gcm_ghash_4bit,.-gcm_ghash_4bit706.globl gcm_init_clmul707.type gcm_init_clmul,@function708.align 16709gcm_init_clmul:710.cfi_startproc711.byte 243,15,30,250712.L_init_clmul:713movdqu (%rsi),%xmm2714pshufd $78,%xmm2,%xmm2715716717pshufd $255,%xmm2,%xmm4718movdqa %xmm2,%xmm3719psllq $1,%xmm2720pxor %xmm5,%xmm5721psrlq $63,%xmm3722pcmpgtd %xmm4,%xmm5723pslldq $8,%xmm3724por %xmm3,%xmm2725726727pand .L0x1c2_polynomial(%rip),%xmm5728pxor %xmm5,%xmm2729730731pshufd $78,%xmm2,%xmm6732movdqa %xmm2,%xmm0733pxor %xmm2,%xmm6734movdqa %xmm0,%xmm1735pshufd $78,%xmm0,%xmm3736pxor %xmm0,%xmm3737.byte 102,15,58,68,194,0738.byte 102,15,58,68,202,17739.byte 102,15,58,68,222,0740pxor %xmm0,%xmm3741pxor %xmm1,%xmm3742743movdqa %xmm3,%xmm4744psrldq $8,%xmm3745pslldq $8,%xmm4746pxor %xmm3,%xmm1747pxor %xmm4,%xmm0748749movdqa %xmm0,%xmm4750movdqa %xmm0,%xmm3751psllq $5,%xmm0752pxor %xmm0,%xmm3753psllq $1,%xmm0754pxor %xmm3,%xmm0755psllq $57,%xmm0756movdqa %xmm0,%xmm3757pslldq $8,%xmm0758psrldq $8,%xmm3759pxor %xmm4,%xmm0760pxor %xmm3,%xmm1761762763movdqa %xmm0,%xmm4764psrlq $1,%xmm0765pxor %xmm4,%xmm1766pxor %xmm0,%xmm4767psrlq $5,%xmm0768pxor %xmm4,%xmm0769psrlq $1,%xmm0770pxor %xmm1,%xmm0771pshufd $78,%xmm2,%xmm3772pshufd $78,%xmm0,%xmm4773pxor %xmm2,%xmm3774movdqu %xmm2,0(%rdi)775pxor %xmm0,%xmm4776movdqu %xmm0,16(%rdi)777.byte 102,15,58,15,227,8778movdqu %xmm4,32(%rdi)779movdqa %xmm0,%xmm1780pshufd $78,%xmm0,%xmm3781pxor %xmm0,%xmm3782.byte 102,15,58,68,194,0783.byte 102,15,58,68,202,17784.byte 102,15,58,68,222,0785pxor %xmm0,%xmm3786pxor %xmm1,%xmm3787788movdqa %xmm3,%xmm4789psrldq $8,%xmm3790pslldq $8,%xmm4791pxor %xmm3,%xmm1792pxor %xmm4,%xmm0793794movdqa %xmm0,%xmm4795movdqa %xmm0,%xmm3796psllq $5,%xmm0797pxor %xmm0,%xmm3798psllq $1,%xmm0799pxor %xmm3,%xmm0800psllq $57,%xmm0801movdqa %xmm0,%xmm3802pslldq $8,%xmm0803psrldq $8,%xmm3804pxor %xmm4,%xmm0805pxor %xmm3,%xmm1806807808movdqa %xmm0,%xmm4809psrlq $1,%xmm0810pxor %xmm4,%xmm1811pxor %xmm0,%xmm4812psrlq $5,%xmm0813pxor %xmm4,%xmm0814psrlq $1,%xmm0815pxor %xmm1,%xmm0816movdqa %xmm0,%xmm5817movdqa %xmm0,%xmm1818pshufd $78,%xmm0,%xmm3819pxor %xmm0,%xmm3820.byte 102,15,58,68,194,0821.byte 102,15,58,68,202,17822.byte 102,15,58,68,222,0823pxor %xmm0,%xmm3824pxor %xmm1,%xmm3825826movdqa %xmm3,%xmm4827psrldq $8,%xmm3828pslldq $8,%xmm4829pxor %xmm3,%xmm1830pxor %xmm4,%xmm0831832movdqa %xmm0,%xmm4833movdqa %xmm0,%xmm3834psllq $5,%xmm0835pxor %xmm0,%xmm3836psllq $1,%xmm0837pxor %xmm3,%xmm0838psllq $57,%xmm0839movdqa %xmm0,%xmm3840pslldq $8,%xmm0841psrldq $8,%xmm3842pxor %xmm4,%xmm0843pxor %xmm3,%xmm1844845846movdqa %xmm0,%xmm4847psrlq $1,%xmm0848pxor %xmm4,%xmm1849pxor %xmm0,%xmm4850psrlq $5,%xmm0851pxor %xmm4,%xmm0852psrlq $1,%xmm0853pxor %xmm1,%xmm0854pshufd $78,%xmm5,%xmm3855pshufd $78,%xmm0,%xmm4856pxor %xmm5,%xmm3857movdqu %xmm5,48(%rdi)858pxor %xmm0,%xmm4859movdqu %xmm0,64(%rdi)860.byte 102,15,58,15,227,8861movdqu %xmm4,80(%rdi)862.byte 0xf3,0xc3863.cfi_endproc864.size gcm_init_clmul,.-gcm_init_clmul865.globl gcm_gmult_clmul866.type gcm_gmult_clmul,@function867.align 16868gcm_gmult_clmul:869.cfi_startproc870.byte 243,15,30,250871.L_gmult_clmul:872movdqu (%rdi),%xmm0873movdqa .Lbswap_mask(%rip),%xmm5874movdqu (%rsi),%xmm2875movdqu 32(%rsi),%xmm4876.byte 102,15,56,0,197877movdqa %xmm0,%xmm1878pshufd $78,%xmm0,%xmm3879pxor %xmm0,%xmm3880.byte 102,15,58,68,194,0881.byte 102,15,58,68,202,17882.byte 102,15,58,68,220,0883pxor %xmm0,%xmm3884pxor %xmm1,%xmm3885886movdqa %xmm3,%xmm4887psrldq $8,%xmm3888pslldq $8,%xmm4889pxor %xmm3,%xmm1890pxor %xmm4,%xmm0891892movdqa %xmm0,%xmm4893movdqa %xmm0,%xmm3894psllq $5,%xmm0895pxor %xmm0,%xmm3896psllq $1,%xmm0897pxor %xmm3,%xmm0898psllq $57,%xmm0899movdqa %xmm0,%xmm3900pslldq $8,%xmm0901psrldq $8,%xmm3902pxor %xmm4,%xmm0903pxor %xmm3,%xmm1904905906movdqa %xmm0,%xmm4907psrlq $1,%xmm0908pxor %xmm4,%xmm1909pxor %xmm0,%xmm4910psrlq $5,%xmm0911pxor %xmm4,%xmm0912psrlq $1,%xmm0913pxor %xmm1,%xmm0914.byte 102,15,56,0,197915movdqu %xmm0,(%rdi)916.byte 0xf3,0xc3917.cfi_endproc918.size gcm_gmult_clmul,.-gcm_gmult_clmul919.globl gcm_ghash_clmul920.type gcm_ghash_clmul,@function921.align 32922gcm_ghash_clmul:923.cfi_startproc924.byte 243,15,30,250925.L_ghash_clmul:926movdqa .Lbswap_mask(%rip),%xmm10927928movdqu (%rdi),%xmm0929movdqu (%rsi),%xmm2930movdqu 32(%rsi),%xmm7931.byte 102,65,15,56,0,194932933subq $0x10,%rcx934jz .Lodd_tail935936movdqu 16(%rsi),%xmm6937movl OPENSSL_ia32cap_P+4(%rip),%eax938cmpq $0x30,%rcx939jb .Lskip4x940941andl $71303168,%eax942cmpl $4194304,%eax943je .Lskip4x944945subq $0x30,%rcx946movq $0xA040608020C0E000,%rax947movdqu 48(%rsi),%xmm14948movdqu 64(%rsi),%xmm15949950951952953movdqu 48(%rdx),%xmm3954movdqu 32(%rdx),%xmm11955.byte 102,65,15,56,0,218956.byte 102,69,15,56,0,218957movdqa %xmm3,%xmm5958pshufd $78,%xmm3,%xmm4959pxor %xmm3,%xmm4960.byte 102,15,58,68,218,0961.byte 102,15,58,68,234,17962.byte 102,15,58,68,231,0963964movdqa %xmm11,%xmm13965pshufd $78,%xmm11,%xmm12966pxor %xmm11,%xmm12967.byte 102,68,15,58,68,222,0968.byte 102,68,15,58,68,238,17969.byte 102,68,15,58,68,231,16970xorps %xmm11,%xmm3971xorps %xmm13,%xmm5972movups 80(%rsi),%xmm7973xorps %xmm12,%xmm4974975movdqu 16(%rdx),%xmm11976movdqu 0(%rdx),%xmm8977.byte 102,69,15,56,0,218978.byte 102,69,15,56,0,194979movdqa %xmm11,%xmm13980pshufd $78,%xmm11,%xmm12981pxor %xmm8,%xmm0982pxor %xmm11,%xmm12983.byte 102,69,15,58,68,222,0984movdqa %xmm0,%xmm1985pshufd $78,%xmm0,%xmm8986pxor %xmm0,%xmm8987.byte 102,69,15,58,68,238,17988.byte 102,68,15,58,68,231,0989xorps %xmm11,%xmm3990xorps %xmm13,%xmm5991992leaq 64(%rdx),%rdx993subq $0x40,%rcx994jc .Ltail4x995996jmp .Lmod4_loop997.align 32998.Lmod4_loop:999.byte 102,65,15,58,68,199,01000xorps %xmm12,%xmm41001movdqu 48(%rdx),%xmm111002.byte 102,69,15,56,0,2181003.byte 102,65,15,58,68,207,171004xorps %xmm3,%xmm01005movdqu 32(%rdx),%xmm31006movdqa %xmm11,%xmm131007.byte 102,68,15,58,68,199,161008pshufd $78,%xmm11,%xmm121009xorps %xmm5,%xmm11010pxor %xmm11,%xmm121011.byte 102,65,15,56,0,2181012movups 32(%rsi),%xmm71013xorps %xmm4,%xmm81014.byte 102,68,15,58,68,218,01015pshufd $78,%xmm3,%xmm410161017pxor %xmm0,%xmm81018movdqa %xmm3,%xmm51019pxor %xmm1,%xmm81020pxor %xmm3,%xmm41021movdqa %xmm8,%xmm91022.byte 102,68,15,58,68,234,171023pslldq $8,%xmm81024psrldq $8,%xmm91025pxor %xmm8,%xmm01026movdqa .L7_mask(%rip),%xmm81027pxor %xmm9,%xmm11028.byte 102,76,15,110,20010291030pand %xmm0,%xmm81031.byte 102,69,15,56,0,2001032pxor %xmm0,%xmm91033.byte 102,68,15,58,68,231,01034psllq $57,%xmm91035movdqa %xmm9,%xmm81036pslldq $8,%xmm91037.byte 102,15,58,68,222,01038psrldq $8,%xmm81039pxor %xmm9,%xmm01040pxor %xmm8,%xmm11041movdqu 0(%rdx),%xmm810421043movdqa %xmm0,%xmm91044psrlq $1,%xmm01045.byte 102,15,58,68,238,171046xorps %xmm11,%xmm31047movdqu 16(%rdx),%xmm111048.byte 102,69,15,56,0,2181049.byte 102,15,58,68,231,161050xorps %xmm13,%xmm51051movups 80(%rsi),%xmm71052.byte 102,69,15,56,0,1941053pxor %xmm9,%xmm11054pxor %xmm0,%xmm91055psrlq $5,%xmm010561057movdqa %xmm11,%xmm131058pxor %xmm12,%xmm41059pshufd $78,%xmm11,%xmm121060pxor %xmm9,%xmm01061pxor %xmm8,%xmm11062pxor %xmm11,%xmm121063.byte 102,69,15,58,68,222,01064psrlq $1,%xmm01065pxor %xmm1,%xmm01066movdqa %xmm0,%xmm11067.byte 102,69,15,58,68,238,171068xorps %xmm11,%xmm31069pshufd $78,%xmm0,%xmm81070pxor %xmm0,%xmm810711072.byte 102,68,15,58,68,231,01073xorps %xmm13,%xmm510741075leaq 64(%rdx),%rdx1076subq $0x40,%rcx1077jnc .Lmod4_loop10781079.Ltail4x:1080.byte 102,65,15,58,68,199,01081.byte 102,65,15,58,68,207,171082.byte 102,68,15,58,68,199,161083xorps %xmm12,%xmm41084xorps %xmm3,%xmm01085xorps %xmm5,%xmm11086pxor %xmm0,%xmm11087pxor %xmm4,%xmm810881089pxor %xmm1,%xmm81090pxor %xmm0,%xmm110911092movdqa %xmm8,%xmm91093psrldq $8,%xmm81094pslldq $8,%xmm91095pxor %xmm8,%xmm11096pxor %xmm9,%xmm010971098movdqa %xmm0,%xmm41099movdqa %xmm0,%xmm31100psllq $5,%xmm01101pxor %xmm0,%xmm31102psllq $1,%xmm01103pxor %xmm3,%xmm01104psllq $57,%xmm01105movdqa %xmm0,%xmm31106pslldq $8,%xmm01107psrldq $8,%xmm31108pxor %xmm4,%xmm01109pxor %xmm3,%xmm1111011111112movdqa %xmm0,%xmm41113psrlq $1,%xmm01114pxor %xmm4,%xmm11115pxor %xmm0,%xmm41116psrlq $5,%xmm01117pxor %xmm4,%xmm01118psrlq $1,%xmm01119pxor %xmm1,%xmm01120addq $0x40,%rcx1121jz .Ldone1122movdqu 32(%rsi),%xmm71123subq $0x10,%rcx1124jz .Lodd_tail1125.Lskip4x:112611271128112911301131movdqu (%rdx),%xmm81132movdqu 16(%rdx),%xmm31133.byte 102,69,15,56,0,1941134.byte 102,65,15,56,0,2181135pxor %xmm8,%xmm011361137movdqa %xmm3,%xmm51138pshufd $78,%xmm3,%xmm41139pxor %xmm3,%xmm41140.byte 102,15,58,68,218,01141.byte 102,15,58,68,234,171142.byte 102,15,58,68,231,011431144leaq 32(%rdx),%rdx1145nop1146subq $0x20,%rcx1147jbe .Leven_tail1148nop1149jmp .Lmod_loop11501151.align 321152.Lmod_loop:1153movdqa %xmm0,%xmm11154movdqa %xmm4,%xmm81155pshufd $78,%xmm0,%xmm41156pxor %xmm0,%xmm411571158.byte 102,15,58,68,198,01159.byte 102,15,58,68,206,171160.byte 102,15,58,68,231,1611611162pxor %xmm3,%xmm01163pxor %xmm5,%xmm11164movdqu (%rdx),%xmm91165pxor %xmm0,%xmm81166.byte 102,69,15,56,0,2021167movdqu 16(%rdx),%xmm311681169pxor %xmm1,%xmm81170pxor %xmm9,%xmm11171pxor %xmm8,%xmm41172.byte 102,65,15,56,0,2181173movdqa %xmm4,%xmm81174psrldq $8,%xmm81175pslldq $8,%xmm41176pxor %xmm8,%xmm11177pxor %xmm4,%xmm011781179movdqa %xmm3,%xmm511801181movdqa %xmm0,%xmm91182movdqa %xmm0,%xmm81183psllq $5,%xmm01184pxor %xmm0,%xmm81185.byte 102,15,58,68,218,01186psllq $1,%xmm01187pxor %xmm8,%xmm01188psllq $57,%xmm01189movdqa %xmm0,%xmm81190pslldq $8,%xmm01191psrldq $8,%xmm81192pxor %xmm9,%xmm01193pshufd $78,%xmm5,%xmm41194pxor %xmm8,%xmm11195pxor %xmm5,%xmm411961197movdqa %xmm0,%xmm91198psrlq $1,%xmm01199.byte 102,15,58,68,234,171200pxor %xmm9,%xmm11201pxor %xmm0,%xmm91202psrlq $5,%xmm01203pxor %xmm9,%xmm01204leaq 32(%rdx),%rdx1205psrlq $1,%xmm01206.byte 102,15,58,68,231,01207pxor %xmm1,%xmm012081209subq $0x20,%rcx1210ja .Lmod_loop12111212.Leven_tail:1213movdqa %xmm0,%xmm11214movdqa %xmm4,%xmm81215pshufd $78,%xmm0,%xmm41216pxor %xmm0,%xmm412171218.byte 102,15,58,68,198,01219.byte 102,15,58,68,206,171220.byte 102,15,58,68,231,1612211222pxor %xmm3,%xmm01223pxor %xmm5,%xmm11224pxor %xmm0,%xmm81225pxor %xmm1,%xmm81226pxor %xmm8,%xmm41227movdqa %xmm4,%xmm81228psrldq $8,%xmm81229pslldq $8,%xmm41230pxor %xmm8,%xmm11231pxor %xmm4,%xmm012321233movdqa %xmm0,%xmm41234movdqa %xmm0,%xmm31235psllq $5,%xmm01236pxor %xmm0,%xmm31237psllq $1,%xmm01238pxor %xmm3,%xmm01239psllq $57,%xmm01240movdqa %xmm0,%xmm31241pslldq $8,%xmm01242psrldq $8,%xmm31243pxor %xmm4,%xmm01244pxor %xmm3,%xmm1124512461247movdqa %xmm0,%xmm41248psrlq $1,%xmm01249pxor %xmm4,%xmm11250pxor %xmm0,%xmm41251psrlq $5,%xmm01252pxor %xmm4,%xmm01253psrlq $1,%xmm01254pxor %xmm1,%xmm01255testq %rcx,%rcx1256jnz .Ldone12571258.Lodd_tail:1259movdqu (%rdx),%xmm81260.byte 102,69,15,56,0,1941261pxor %xmm8,%xmm01262movdqa %xmm0,%xmm11263pshufd $78,%xmm0,%xmm31264pxor %xmm0,%xmm31265.byte 102,15,58,68,194,01266.byte 102,15,58,68,202,171267.byte 102,15,58,68,223,01268pxor %xmm0,%xmm31269pxor %xmm1,%xmm312701271movdqa %xmm3,%xmm41272psrldq $8,%xmm31273pslldq $8,%xmm41274pxor %xmm3,%xmm11275pxor %xmm4,%xmm012761277movdqa %xmm0,%xmm41278movdqa %xmm0,%xmm31279psllq $5,%xmm01280pxor %xmm0,%xmm31281psllq $1,%xmm01282pxor %xmm3,%xmm01283psllq $57,%xmm01284movdqa %xmm0,%xmm31285pslldq $8,%xmm01286psrldq $8,%xmm31287pxor %xmm4,%xmm01288pxor %xmm3,%xmm1128912901291movdqa %xmm0,%xmm41292psrlq $1,%xmm01293pxor %xmm4,%xmm11294pxor %xmm0,%xmm41295psrlq $5,%xmm01296pxor %xmm4,%xmm01297psrlq $1,%xmm01298pxor %xmm1,%xmm01299.Ldone:1300.byte 102,65,15,56,0,1941301movdqu %xmm0,(%rdi)1302.byte 0xf3,0xc31303.cfi_endproc1304.size gcm_ghash_clmul,.-gcm_ghash_clmul1305.globl gcm_init_avx1306.type gcm_init_avx,@function1307.align 321308gcm_init_avx:1309.cfi_startproc1310.byte 243,15,30,2501311vzeroupper13121313vmovdqu (%rsi),%xmm21314vpshufd $78,%xmm2,%xmm2131513161317vpshufd $255,%xmm2,%xmm41318vpsrlq $63,%xmm2,%xmm31319vpsllq $1,%xmm2,%xmm21320vpxor %xmm5,%xmm5,%xmm51321vpcmpgtd %xmm4,%xmm5,%xmm51322vpslldq $8,%xmm3,%xmm31323vpor %xmm3,%xmm2,%xmm2132413251326vpand .L0x1c2_polynomial(%rip),%xmm5,%xmm51327vpxor %xmm5,%xmm2,%xmm213281329vpunpckhqdq %xmm2,%xmm2,%xmm61330vmovdqa %xmm2,%xmm01331vpxor %xmm2,%xmm6,%xmm61332movq $4,%r101333jmp .Linit_start_avx1334.align 321335.Linit_loop_avx:1336vpalignr $8,%xmm3,%xmm4,%xmm51337vmovdqu %xmm5,-16(%rdi)1338vpunpckhqdq %xmm0,%xmm0,%xmm31339vpxor %xmm0,%xmm3,%xmm31340vpclmulqdq $0x11,%xmm2,%xmm0,%xmm11341vpclmulqdq $0x00,%xmm2,%xmm0,%xmm01342vpclmulqdq $0x00,%xmm6,%xmm3,%xmm31343vpxor %xmm0,%xmm1,%xmm41344vpxor %xmm4,%xmm3,%xmm313451346vpslldq $8,%xmm3,%xmm41347vpsrldq $8,%xmm3,%xmm31348vpxor %xmm4,%xmm0,%xmm01349vpxor %xmm3,%xmm1,%xmm11350vpsllq $57,%xmm0,%xmm31351vpsllq $62,%xmm0,%xmm41352vpxor %xmm3,%xmm4,%xmm41353vpsllq $63,%xmm0,%xmm31354vpxor %xmm3,%xmm4,%xmm41355vpslldq $8,%xmm4,%xmm31356vpsrldq $8,%xmm4,%xmm41357vpxor %xmm3,%xmm0,%xmm01358vpxor %xmm4,%xmm1,%xmm113591360vpsrlq $1,%xmm0,%xmm41361vpxor %xmm0,%xmm1,%xmm11362vpxor %xmm4,%xmm0,%xmm01363vpsrlq $5,%xmm4,%xmm41364vpxor %xmm4,%xmm0,%xmm01365vpsrlq $1,%xmm0,%xmm01366vpxor %xmm1,%xmm0,%xmm01367.Linit_start_avx:1368vmovdqa %xmm0,%xmm51369vpunpckhqdq %xmm0,%xmm0,%xmm31370vpxor %xmm0,%xmm3,%xmm31371vpclmulqdq $0x11,%xmm2,%xmm0,%xmm11372vpclmulqdq $0x00,%xmm2,%xmm0,%xmm01373vpclmulqdq $0x00,%xmm6,%xmm3,%xmm31374vpxor %xmm0,%xmm1,%xmm41375vpxor %xmm4,%xmm3,%xmm313761377vpslldq $8,%xmm3,%xmm41378vpsrldq $8,%xmm3,%xmm31379vpxor %xmm4,%xmm0,%xmm01380vpxor %xmm3,%xmm1,%xmm11381vpsllq $57,%xmm0,%xmm31382vpsllq $62,%xmm0,%xmm41383vpxor %xmm3,%xmm4,%xmm41384vpsllq $63,%xmm0,%xmm31385vpxor %xmm3,%xmm4,%xmm41386vpslldq $8,%xmm4,%xmm31387vpsrldq $8,%xmm4,%xmm41388vpxor %xmm3,%xmm0,%xmm01389vpxor %xmm4,%xmm1,%xmm113901391vpsrlq $1,%xmm0,%xmm41392vpxor %xmm0,%xmm1,%xmm11393vpxor %xmm4,%xmm0,%xmm01394vpsrlq $5,%xmm4,%xmm41395vpxor %xmm4,%xmm0,%xmm01396vpsrlq $1,%xmm0,%xmm01397vpxor %xmm1,%xmm0,%xmm01398vpshufd $78,%xmm5,%xmm31399vpshufd $78,%xmm0,%xmm41400vpxor %xmm5,%xmm3,%xmm31401vmovdqu %xmm5,0(%rdi)1402vpxor %xmm0,%xmm4,%xmm41403vmovdqu %xmm0,16(%rdi)1404leaq 48(%rdi),%rdi1405subq $1,%r101406jnz .Linit_loop_avx14071408vpalignr $8,%xmm4,%xmm3,%xmm51409vmovdqu %xmm5,-16(%rdi)14101411vzeroupper1412.byte 0xf3,0xc31413.cfi_endproc1414.size gcm_init_avx,.-gcm_init_avx1415.globl gcm_gmult_avx1416.type gcm_gmult_avx,@function1417.align 321418gcm_gmult_avx:1419.cfi_startproc1420.byte 243,15,30,2501421jmp .L_gmult_clmul1422.cfi_endproc1423.size gcm_gmult_avx,.-gcm_gmult_avx1424.globl gcm_ghash_avx1425.type gcm_ghash_avx,@function1426.align 321427gcm_ghash_avx:1428.cfi_startproc1429.byte 243,15,30,2501430vzeroupper14311432vmovdqu (%rdi),%xmm101433leaq .L0x1c2_polynomial(%rip),%r101434leaq 64(%rsi),%rsi1435vmovdqu .Lbswap_mask(%rip),%xmm131436vpshufb %xmm13,%xmm10,%xmm101437cmpq $0x80,%rcx1438jb .Lshort_avx1439subq $0x80,%rcx14401441vmovdqu 112(%rdx),%xmm141442vmovdqu 0-64(%rsi),%xmm61443vpshufb %xmm13,%xmm14,%xmm141444vmovdqu 32-64(%rsi),%xmm714451446vpunpckhqdq %xmm14,%xmm14,%xmm91447vmovdqu 96(%rdx),%xmm151448vpclmulqdq $0x00,%xmm6,%xmm14,%xmm01449vpxor %xmm14,%xmm9,%xmm91450vpshufb %xmm13,%xmm15,%xmm151451vpclmulqdq $0x11,%xmm6,%xmm14,%xmm11452vmovdqu 16-64(%rsi),%xmm61453vpunpckhqdq %xmm15,%xmm15,%xmm81454vmovdqu 80(%rdx),%xmm141455vpclmulqdq $0x00,%xmm7,%xmm9,%xmm21456vpxor %xmm15,%xmm8,%xmm814571458vpshufb %xmm13,%xmm14,%xmm141459vpclmulqdq $0x00,%xmm6,%xmm15,%xmm31460vpunpckhqdq %xmm14,%xmm14,%xmm91461vpclmulqdq $0x11,%xmm6,%xmm15,%xmm41462vmovdqu 48-64(%rsi),%xmm61463vpxor %xmm14,%xmm9,%xmm91464vmovdqu 64(%rdx),%xmm151465vpclmulqdq $0x10,%xmm7,%xmm8,%xmm51466vmovdqu 80-64(%rsi),%xmm714671468vpshufb %xmm13,%xmm15,%xmm151469vpxor %xmm0,%xmm3,%xmm31470vpclmulqdq $0x00,%xmm6,%xmm14,%xmm01471vpxor %xmm1,%xmm4,%xmm41472vpunpckhqdq %xmm15,%xmm15,%xmm81473vpclmulqdq $0x11,%xmm6,%xmm14,%xmm11474vmovdqu 64-64(%rsi),%xmm61475vpxor %xmm2,%xmm5,%xmm51476vpclmulqdq $0x00,%xmm7,%xmm9,%xmm21477vpxor %xmm15,%xmm8,%xmm814781479vmovdqu 48(%rdx),%xmm141480vpxor %xmm3,%xmm0,%xmm01481vpclmulqdq $0x00,%xmm6,%xmm15,%xmm31482vpxor %xmm4,%xmm1,%xmm11483vpshufb %xmm13,%xmm14,%xmm141484vpclmulqdq $0x11,%xmm6,%xmm15,%xmm41485vmovdqu 96-64(%rsi),%xmm61486vpxor %xmm5,%xmm2,%xmm21487vpunpckhqdq %xmm14,%xmm14,%xmm91488vpclmulqdq $0x10,%xmm7,%xmm8,%xmm51489vmovdqu 128-64(%rsi),%xmm71490vpxor %xmm14,%xmm9,%xmm914911492vmovdqu 32(%rdx),%xmm151493vpxor %xmm0,%xmm3,%xmm31494vpclmulqdq $0x00,%xmm6,%xmm14,%xmm01495vpxor %xmm1,%xmm4,%xmm41496vpshufb %xmm13,%xmm15,%xmm151497vpclmulqdq $0x11,%xmm6,%xmm14,%xmm11498vmovdqu 112-64(%rsi),%xmm61499vpxor %xmm2,%xmm5,%xmm51500vpunpckhqdq %xmm15,%xmm15,%xmm81501vpclmulqdq $0x00,%xmm7,%xmm9,%xmm21502vpxor %xmm15,%xmm8,%xmm815031504vmovdqu 16(%rdx),%xmm141505vpxor %xmm3,%xmm0,%xmm01506vpclmulqdq $0x00,%xmm6,%xmm15,%xmm31507vpxor %xmm4,%xmm1,%xmm11508vpshufb %xmm13,%xmm14,%xmm141509vpclmulqdq $0x11,%xmm6,%xmm15,%xmm41510vmovdqu 144-64(%rsi),%xmm61511vpxor %xmm5,%xmm2,%xmm21512vpunpckhqdq %xmm14,%xmm14,%xmm91513vpclmulqdq $0x10,%xmm7,%xmm8,%xmm51514vmovdqu 176-64(%rsi),%xmm71515vpxor %xmm14,%xmm9,%xmm915161517vmovdqu (%rdx),%xmm151518vpxor %xmm0,%xmm3,%xmm31519vpclmulqdq $0x00,%xmm6,%xmm14,%xmm01520vpxor %xmm1,%xmm4,%xmm41521vpshufb %xmm13,%xmm15,%xmm151522vpclmulqdq $0x11,%xmm6,%xmm14,%xmm11523vmovdqu 160-64(%rsi),%xmm61524vpxor %xmm2,%xmm5,%xmm51525vpclmulqdq $0x10,%xmm7,%xmm9,%xmm215261527leaq 128(%rdx),%rdx1528cmpq $0x80,%rcx1529jb .Ltail_avx15301531vpxor %xmm10,%xmm15,%xmm151532subq $0x80,%rcx1533jmp .Loop8x_avx15341535.align 321536.Loop8x_avx:1537vpunpckhqdq %xmm15,%xmm15,%xmm81538vmovdqu 112(%rdx),%xmm141539vpxor %xmm0,%xmm3,%xmm31540vpxor %xmm15,%xmm8,%xmm81541vpclmulqdq $0x00,%xmm6,%xmm15,%xmm101542vpshufb %xmm13,%xmm14,%xmm141543vpxor %xmm1,%xmm4,%xmm41544vpclmulqdq $0x11,%xmm6,%xmm15,%xmm111545vmovdqu 0-64(%rsi),%xmm61546vpunpckhqdq %xmm14,%xmm14,%xmm91547vpxor %xmm2,%xmm5,%xmm51548vpclmulqdq $0x00,%xmm7,%xmm8,%xmm121549vmovdqu 32-64(%rsi),%xmm71550vpxor %xmm14,%xmm9,%xmm915511552vmovdqu 96(%rdx),%xmm151553vpclmulqdq $0x00,%xmm6,%xmm14,%xmm01554vpxor %xmm3,%xmm10,%xmm101555vpshufb %xmm13,%xmm15,%xmm151556vpclmulqdq $0x11,%xmm6,%xmm14,%xmm11557vxorps %xmm4,%xmm11,%xmm111558vmovdqu 16-64(%rsi),%xmm61559vpunpckhqdq %xmm15,%xmm15,%xmm81560vpclmulqdq $0x00,%xmm7,%xmm9,%xmm21561vpxor %xmm5,%xmm12,%xmm121562vxorps %xmm15,%xmm8,%xmm815631564vmovdqu 80(%rdx),%xmm141565vpxor %xmm10,%xmm12,%xmm121566vpclmulqdq $0x00,%xmm6,%xmm15,%xmm31567vpxor %xmm11,%xmm12,%xmm121568vpslldq $8,%xmm12,%xmm91569vpxor %xmm0,%xmm3,%xmm31570vpclmulqdq $0x11,%xmm6,%xmm15,%xmm41571vpsrldq $8,%xmm12,%xmm121572vpxor %xmm9,%xmm10,%xmm101573vmovdqu 48-64(%rsi),%xmm61574vpshufb %xmm13,%xmm14,%xmm141575vxorps %xmm12,%xmm11,%xmm111576vpxor %xmm1,%xmm4,%xmm41577vpunpckhqdq %xmm14,%xmm14,%xmm91578vpclmulqdq $0x10,%xmm7,%xmm8,%xmm51579vmovdqu 80-64(%rsi),%xmm71580vpxor %xmm14,%xmm9,%xmm91581vpxor %xmm2,%xmm5,%xmm515821583vmovdqu 64(%rdx),%xmm151584vpalignr $8,%xmm10,%xmm10,%xmm121585vpclmulqdq $0x00,%xmm6,%xmm14,%xmm01586vpshufb %xmm13,%xmm15,%xmm151587vpxor %xmm3,%xmm0,%xmm01588vpclmulqdq $0x11,%xmm6,%xmm14,%xmm11589vmovdqu 64-64(%rsi),%xmm61590vpunpckhqdq %xmm15,%xmm15,%xmm81591vpxor %xmm4,%xmm1,%xmm11592vpclmulqdq $0x00,%xmm7,%xmm9,%xmm21593vxorps %xmm15,%xmm8,%xmm81594vpxor %xmm5,%xmm2,%xmm215951596vmovdqu 48(%rdx),%xmm141597vpclmulqdq $0x10,(%r10),%xmm10,%xmm101598vpclmulqdq $0x00,%xmm6,%xmm15,%xmm31599vpshufb %xmm13,%xmm14,%xmm141600vpxor %xmm0,%xmm3,%xmm31601vpclmulqdq $0x11,%xmm6,%xmm15,%xmm41602vmovdqu 96-64(%rsi),%xmm61603vpunpckhqdq %xmm14,%xmm14,%xmm91604vpxor %xmm1,%xmm4,%xmm41605vpclmulqdq $0x10,%xmm7,%xmm8,%xmm51606vmovdqu 128-64(%rsi),%xmm71607vpxor %xmm14,%xmm9,%xmm91608vpxor %xmm2,%xmm5,%xmm516091610vmovdqu 32(%rdx),%xmm151611vpclmulqdq $0x00,%xmm6,%xmm14,%xmm01612vpshufb %xmm13,%xmm15,%xmm151613vpxor %xmm3,%xmm0,%xmm01614vpclmulqdq $0x11,%xmm6,%xmm14,%xmm11615vmovdqu 112-64(%rsi),%xmm61616vpunpckhqdq %xmm15,%xmm15,%xmm81617vpxor %xmm4,%xmm1,%xmm11618vpclmulqdq $0x00,%xmm7,%xmm9,%xmm21619vpxor %xmm15,%xmm8,%xmm81620vpxor %xmm5,%xmm2,%xmm21621vxorps %xmm12,%xmm10,%xmm1016221623vmovdqu 16(%rdx),%xmm141624vpalignr $8,%xmm10,%xmm10,%xmm121625vpclmulqdq $0x00,%xmm6,%xmm15,%xmm31626vpshufb %xmm13,%xmm14,%xmm141627vpxor %xmm0,%xmm3,%xmm31628vpclmulqdq $0x11,%xmm6,%xmm15,%xmm41629vmovdqu 144-64(%rsi),%xmm61630vpclmulqdq $0x10,(%r10),%xmm10,%xmm101631vxorps %xmm11,%xmm12,%xmm121632vpunpckhqdq %xmm14,%xmm14,%xmm91633vpxor %xmm1,%xmm4,%xmm41634vpclmulqdq $0x10,%xmm7,%xmm8,%xmm51635vmovdqu 176-64(%rsi),%xmm71636vpxor %xmm14,%xmm9,%xmm91637vpxor %xmm2,%xmm5,%xmm516381639vmovdqu (%rdx),%xmm151640vpclmulqdq $0x00,%xmm6,%xmm14,%xmm01641vpshufb %xmm13,%xmm15,%xmm151642vpclmulqdq $0x11,%xmm6,%xmm14,%xmm11643vmovdqu 160-64(%rsi),%xmm61644vpxor %xmm12,%xmm15,%xmm151645vpclmulqdq $0x10,%xmm7,%xmm9,%xmm21646vpxor %xmm10,%xmm15,%xmm1516471648leaq 128(%rdx),%rdx1649subq $0x80,%rcx1650jnc .Loop8x_avx16511652addq $0x80,%rcx1653jmp .Ltail_no_xor_avx16541655.align 321656.Lshort_avx:1657vmovdqu -16(%rdx,%rcx,1),%xmm141658leaq (%rdx,%rcx,1),%rdx1659vmovdqu 0-64(%rsi),%xmm61660vmovdqu 32-64(%rsi),%xmm71661vpshufb %xmm13,%xmm14,%xmm1516621663vmovdqa %xmm0,%xmm31664vmovdqa %xmm1,%xmm41665vmovdqa %xmm2,%xmm51666subq $0x10,%rcx1667jz .Ltail_avx16681669vpunpckhqdq %xmm15,%xmm15,%xmm81670vpxor %xmm0,%xmm3,%xmm31671vpclmulqdq $0x00,%xmm6,%xmm15,%xmm01672vpxor %xmm15,%xmm8,%xmm81673vmovdqu -32(%rdx),%xmm141674vpxor %xmm1,%xmm4,%xmm41675vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11676vmovdqu 16-64(%rsi),%xmm61677vpshufb %xmm13,%xmm14,%xmm151678vpxor %xmm2,%xmm5,%xmm51679vpclmulqdq $0x00,%xmm7,%xmm8,%xmm21680vpsrldq $8,%xmm7,%xmm71681subq $0x10,%rcx1682jz .Ltail_avx16831684vpunpckhqdq %xmm15,%xmm15,%xmm81685vpxor %xmm0,%xmm3,%xmm31686vpclmulqdq $0x00,%xmm6,%xmm15,%xmm01687vpxor %xmm15,%xmm8,%xmm81688vmovdqu -48(%rdx),%xmm141689vpxor %xmm1,%xmm4,%xmm41690vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11691vmovdqu 48-64(%rsi),%xmm61692vpshufb %xmm13,%xmm14,%xmm151693vpxor %xmm2,%xmm5,%xmm51694vpclmulqdq $0x00,%xmm7,%xmm8,%xmm21695vmovdqu 80-64(%rsi),%xmm71696subq $0x10,%rcx1697jz .Ltail_avx16981699vpunpckhqdq %xmm15,%xmm15,%xmm81700vpxor %xmm0,%xmm3,%xmm31701vpclmulqdq $0x00,%xmm6,%xmm15,%xmm01702vpxor %xmm15,%xmm8,%xmm81703vmovdqu -64(%rdx),%xmm141704vpxor %xmm1,%xmm4,%xmm41705vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11706vmovdqu 64-64(%rsi),%xmm61707vpshufb %xmm13,%xmm14,%xmm151708vpxor %xmm2,%xmm5,%xmm51709vpclmulqdq $0x00,%xmm7,%xmm8,%xmm21710vpsrldq $8,%xmm7,%xmm71711subq $0x10,%rcx1712jz .Ltail_avx17131714vpunpckhqdq %xmm15,%xmm15,%xmm81715vpxor %xmm0,%xmm3,%xmm31716vpclmulqdq $0x00,%xmm6,%xmm15,%xmm01717vpxor %xmm15,%xmm8,%xmm81718vmovdqu -80(%rdx),%xmm141719vpxor %xmm1,%xmm4,%xmm41720vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11721vmovdqu 96-64(%rsi),%xmm61722vpshufb %xmm13,%xmm14,%xmm151723vpxor %xmm2,%xmm5,%xmm51724vpclmulqdq $0x00,%xmm7,%xmm8,%xmm21725vmovdqu 128-64(%rsi),%xmm71726subq $0x10,%rcx1727jz .Ltail_avx17281729vpunpckhqdq %xmm15,%xmm15,%xmm81730vpxor %xmm0,%xmm3,%xmm31731vpclmulqdq $0x00,%xmm6,%xmm15,%xmm01732vpxor %xmm15,%xmm8,%xmm81733vmovdqu -96(%rdx),%xmm141734vpxor %xmm1,%xmm4,%xmm41735vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11736vmovdqu 112-64(%rsi),%xmm61737vpshufb %xmm13,%xmm14,%xmm151738vpxor %xmm2,%xmm5,%xmm51739vpclmulqdq $0x00,%xmm7,%xmm8,%xmm21740vpsrldq $8,%xmm7,%xmm71741subq $0x10,%rcx1742jz .Ltail_avx17431744vpunpckhqdq %xmm15,%xmm15,%xmm81745vpxor %xmm0,%xmm3,%xmm31746vpclmulqdq $0x00,%xmm6,%xmm15,%xmm01747vpxor %xmm15,%xmm8,%xmm81748vmovdqu -112(%rdx),%xmm141749vpxor %xmm1,%xmm4,%xmm41750vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11751vmovdqu 144-64(%rsi),%xmm61752vpshufb %xmm13,%xmm14,%xmm151753vpxor %xmm2,%xmm5,%xmm51754vpclmulqdq $0x00,%xmm7,%xmm8,%xmm21755vmovq 184-64(%rsi),%xmm71756subq $0x10,%rcx1757jmp .Ltail_avx17581759.align 321760.Ltail_avx:1761vpxor %xmm10,%xmm15,%xmm151762.Ltail_no_xor_avx:1763vpunpckhqdq %xmm15,%xmm15,%xmm81764vpxor %xmm0,%xmm3,%xmm31765vpclmulqdq $0x00,%xmm6,%xmm15,%xmm01766vpxor %xmm15,%xmm8,%xmm81767vpxor %xmm1,%xmm4,%xmm41768vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11769vpxor %xmm2,%xmm5,%xmm51770vpclmulqdq $0x00,%xmm7,%xmm8,%xmm217711772vmovdqu (%r10),%xmm1217731774vpxor %xmm0,%xmm3,%xmm101775vpxor %xmm1,%xmm4,%xmm111776vpxor %xmm2,%xmm5,%xmm517771778vpxor %xmm10,%xmm5,%xmm51779vpxor %xmm11,%xmm5,%xmm51780vpslldq $8,%xmm5,%xmm91781vpsrldq $8,%xmm5,%xmm51782vpxor %xmm9,%xmm10,%xmm101783vpxor %xmm5,%xmm11,%xmm1117841785vpclmulqdq $0x10,%xmm12,%xmm10,%xmm91786vpalignr $8,%xmm10,%xmm10,%xmm101787vpxor %xmm9,%xmm10,%xmm1017881789vpclmulqdq $0x10,%xmm12,%xmm10,%xmm91790vpalignr $8,%xmm10,%xmm10,%xmm101791vpxor %xmm11,%xmm10,%xmm101792vpxor %xmm9,%xmm10,%xmm1017931794cmpq $0,%rcx1795jne .Lshort_avx17961797vpshufb %xmm13,%xmm10,%xmm101798vmovdqu %xmm10,(%rdi)1799vzeroupper1800.byte 0xf3,0xc31801.cfi_endproc1802.size gcm_ghash_avx,.-gcm_ghash_avx1803.section .rodata1804.align 641805.Lbswap_mask:1806.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,01807.L0x1c2_polynomial:1808.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc21809.L7_mask:1810.long 7,0,7,01811.L7_mask_poly:1812.long 7,0,450,01813.align 641814.type .Lrem_4bit,@object1815.Lrem_4bit:1816.long 0,0,0,471859200,0,943718400,0,6102712321817.long 0,1887436800,0,1822425088,0,1220542464,0,14239662081818.long 0,3774873600,0,4246732800,0,3644850176,0,33114030081819.long 0,2441084928,0,2376073216,0,2847932416,0,30513561601820.type .Lrem_8bit,@object1821.Lrem_8bit:1822.value 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E1823.value 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E1824.value 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E1825.value 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E1826.value 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E1827.value 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E1828.value 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E1829.value 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E1830.value 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE1831.value 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE1832.value 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE1833.value 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE1834.value 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E1835.value 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E1836.value 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE1837.value 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE1838.value 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E1839.value 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E1840.value 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E1841.value 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E1842.value 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E1843.value 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E1844.value 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E1845.value 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E1846.value 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE1847.value 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE1848.value 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE1849.value 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE1850.value 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E1851.value 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E1852.value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE1853.value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE18541855.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,01856.align 641857.previous1858.section ".note.gnu.property", "a"1859.p2align 31860.long 1f - 0f1861.long 4f - 1f1862.long 518630:1864# "GNU" encoded with .byte, since .asciz isn't supported1865# on Solaris.1866.byte 0x471867.byte 0x4e1868.byte 0x551869.byte 018701:1871.p2align 31872.long 0xc00000021873.long 3f - 2f18742:1875.long 318763:1877.p2align 318784:187918801881