Path: blob/main/sys/crypto/openssl/aarch64/sha1-armv8.S
39507 views
/* Do not modify. This file is auto-generated from sha1-armv8.pl. */1#include "arm_arch.h"2#ifndef __KERNEL__34.hidden OPENSSL_armcap_P5#endif67.text89.globl sha1_block_data_order10.type sha1_block_data_order,%function11.align 612sha1_block_data_order:13AARCH64_VALID_CALL_TARGET14adrp x16,OPENSSL_armcap_P15ldr w16,[x16,#:lo12:OPENSSL_armcap_P]16tst w16,#ARMV8_SHA117b.ne .Lv8_entry1819// Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later.20stp x29,x30,[sp,#-96]!21add x29,sp,#022stp x19,x20,[sp,#16]23stp x21,x22,[sp,#32]24stp x23,x24,[sp,#48]25stp x25,x26,[sp,#64]26stp x27,x28,[sp,#80]2728ldp w20,w21,[x0]29ldp w22,w23,[x0,#8]30ldr w24,[x0,#16]3132.Loop:33ldr x3,[x1],#6434movz w28,#0x799935sub x2,x2,#136movk w28,#0x5a82,lsl#1637#ifdef __AARCH64EB__38ror x3,x3,#3239#else40rev32 x3,x341#endif42add w24,w24,w28 // warm it up43add w24,w24,w344lsr x4,x3,#3245ldur x5,[x1,#-56]46bic w25,w23,w2147and w26,w22,w2148ror w27,w20,#2749add w23,w23,w28 // future e+=K50orr w25,w25,w2651add w24,w24,w27 // e+=rot(a,5)52ror w21,w21,#253add w23,w23,w4 // future e+=X[i]54add w24,w24,w25 // e+=F(b,c,d)55#ifdef __AARCH64EB__56ror x5,x5,#3257#else58rev32 x5,x559#endif60bic w25,w22,w2061and w26,w21,w2062ror w27,w24,#2763add w22,w22,w28 // future e+=K64orr w25,w25,w2665add w23,w23,w27 // e+=rot(a,5)66ror w20,w20,#267add w22,w22,w5 // future e+=X[i]68add w23,w23,w25 // e+=F(b,c,d)69lsr x6,x5,#3270ldur x7,[x1,#-48]71bic w25,w21,w2472and w26,w20,w2473ror w27,w23,#2774add w21,w21,w28 // future e+=K75orr w25,w25,w2676add w22,w22,w27 // e+=rot(a,5)77ror w24,w24,#278add w21,w21,w6 // future e+=X[i]79add w22,w22,w25 // e+=F(b,c,d)80#ifdef __AARCH64EB__81ror x7,x7,#3282#else83rev32 x7,x784#endif85bic w25,w20,w2386and w26,w24,w2387ror w27,w22,#2788add w20,w20,w28 // future e+=K89orr w25,w25,w2690add w21,w21,w27 // e+=rot(a,5)91ror w23,w23,#292add w20,w20,w7 // future e+=X[i]93add w21,w21,w25 // e+=F(b,c,d)94lsr x8,x7,#3295ldur x9,[x1,#-40]96bic w25,w24,w2297and w26,w23,w2298ror w27,w21,#2799add w24,w24,w28 // future e+=K100orr w25,w25,w26101add w20,w20,w27 // e+=rot(a,5)102ror w22,w22,#2103add w24,w24,w8 // future e+=X[i]104add w20,w20,w25 // e+=F(b,c,d)105#ifdef __AARCH64EB__106ror x9,x9,#32107#else108rev32 x9,x9109#endif110bic w25,w23,w21111and w26,w22,w21112ror w27,w20,#27113add w23,w23,w28 // future e+=K114orr w25,w25,w26115add w24,w24,w27 // e+=rot(a,5)116ror w21,w21,#2117add w23,w23,w9 // future e+=X[i]118add w24,w24,w25 // e+=F(b,c,d)119lsr x10,x9,#32120ldur x11,[x1,#-32]121bic w25,w22,w20122and w26,w21,w20123ror w27,w24,#27124add w22,w22,w28 // future e+=K125orr w25,w25,w26126add w23,w23,w27 // e+=rot(a,5)127ror w20,w20,#2128add w22,w22,w10 // future e+=X[i]129add w23,w23,w25 // e+=F(b,c,d)130#ifdef __AARCH64EB__131ror x11,x11,#32132#else133rev32 x11,x11134#endif135bic w25,w21,w24136and w26,w20,w24137ror w27,w23,#27138add w21,w21,w28 // future e+=K139orr w25,w25,w26140add w22,w22,w27 // e+=rot(a,5)141ror w24,w24,#2142add w21,w21,w11 // future e+=X[i]143add w22,w22,w25 // e+=F(b,c,d)144lsr x12,x11,#32145ldur x13,[x1,#-24]146bic w25,w20,w23147and w26,w24,w23148ror w27,w22,#27149add w20,w20,w28 // future e+=K150orr w25,w25,w26151add w21,w21,w27 // e+=rot(a,5)152ror w23,w23,#2153add w20,w20,w12 // future e+=X[i]154add w21,w21,w25 // e+=F(b,c,d)155#ifdef __AARCH64EB__156ror x13,x13,#32157#else158rev32 x13,x13159#endif160bic w25,w24,w22161and w26,w23,w22162ror w27,w21,#27163add w24,w24,w28 // future e+=K164orr w25,w25,w26165add w20,w20,w27 // e+=rot(a,5)166ror w22,w22,#2167add w24,w24,w13 // future e+=X[i]168add w20,w20,w25 // e+=F(b,c,d)169lsr x14,x13,#32170ldur x15,[x1,#-16]171bic w25,w23,w21172and w26,w22,w21173ror w27,w20,#27174add w23,w23,w28 // future e+=K175orr w25,w25,w26176add w24,w24,w27 // e+=rot(a,5)177ror w21,w21,#2178add w23,w23,w14 // future e+=X[i]179add w24,w24,w25 // e+=F(b,c,d)180#ifdef __AARCH64EB__181ror x15,x15,#32182#else183rev32 x15,x15184#endif185bic w25,w22,w20186and w26,w21,w20187ror w27,w24,#27188add w22,w22,w28 // future e+=K189orr w25,w25,w26190add w23,w23,w27 // e+=rot(a,5)191ror w20,w20,#2192add w22,w22,w15 // future e+=X[i]193add w23,w23,w25 // e+=F(b,c,d)194lsr x16,x15,#32195ldur x17,[x1,#-8]196bic w25,w21,w24197and w26,w20,w24198ror w27,w23,#27199add w21,w21,w28 // future e+=K200orr w25,w25,w26201add w22,w22,w27 // e+=rot(a,5)202ror w24,w24,#2203add w21,w21,w16 // future e+=X[i]204add w22,w22,w25 // e+=F(b,c,d)205#ifdef __AARCH64EB__206ror x17,x17,#32207#else208rev32 x17,x17209#endif210bic w25,w20,w23211and w26,w24,w23212ror w27,w22,#27213add w20,w20,w28 // future e+=K214orr w25,w25,w26215add w21,w21,w27 // e+=rot(a,5)216ror w23,w23,#2217add w20,w20,w17 // future e+=X[i]218add w21,w21,w25 // e+=F(b,c,d)219lsr x19,x17,#32220eor w3,w3,w5221bic w25,w24,w22222and w26,w23,w22223ror w27,w21,#27224eor w3,w3,w11225add w24,w24,w28 // future e+=K226orr w25,w25,w26227add w20,w20,w27 // e+=rot(a,5)228eor w3,w3,w16229ror w22,w22,#2230add w24,w24,w19 // future e+=X[i]231add w20,w20,w25 // e+=F(b,c,d)232ror w3,w3,#31233eor w4,w4,w6234bic w25,w23,w21235and w26,w22,w21236ror w27,w20,#27237eor w4,w4,w12238add w23,w23,w28 // future e+=K239orr w25,w25,w26240add w24,w24,w27 // e+=rot(a,5)241eor w4,w4,w17242ror w21,w21,#2243add w23,w23,w3 // future e+=X[i]244add w24,w24,w25 // e+=F(b,c,d)245ror w4,w4,#31246eor w5,w5,w7247bic w25,w22,w20248and w26,w21,w20249ror w27,w24,#27250eor w5,w5,w13251add w22,w22,w28 // future e+=K252orr w25,w25,w26253add w23,w23,w27 // e+=rot(a,5)254eor w5,w5,w19255ror w20,w20,#2256add w22,w22,w4 // future e+=X[i]257add w23,w23,w25 // e+=F(b,c,d)258ror w5,w5,#31259eor w6,w6,w8260bic w25,w21,w24261and w26,w20,w24262ror w27,w23,#27263eor w6,w6,w14264add w21,w21,w28 // future e+=K265orr w25,w25,w26266add w22,w22,w27 // e+=rot(a,5)267eor w6,w6,w3268ror w24,w24,#2269add w21,w21,w5 // future e+=X[i]270add w22,w22,w25 // e+=F(b,c,d)271ror w6,w6,#31272eor w7,w7,w9273bic w25,w20,w23274and w26,w24,w23275ror w27,w22,#27276eor w7,w7,w15277add w20,w20,w28 // future e+=K278orr w25,w25,w26279add w21,w21,w27 // e+=rot(a,5)280eor w7,w7,w4281ror w23,w23,#2282add w20,w20,w6 // future e+=X[i]283add w21,w21,w25 // e+=F(b,c,d)284ror w7,w7,#31285movz w28,#0xeba1286movk w28,#0x6ed9,lsl#16287eor w8,w8,w10288bic w25,w24,w22289and w26,w23,w22290ror w27,w21,#27291eor w8,w8,w16292add w24,w24,w28 // future e+=K293orr w25,w25,w26294add w20,w20,w27 // e+=rot(a,5)295eor w8,w8,w5296ror w22,w22,#2297add w24,w24,w7 // future e+=X[i]298add w20,w20,w25 // e+=F(b,c,d)299ror w8,w8,#31300eor w9,w9,w11301eor w25,w23,w21302ror w27,w20,#27303add w23,w23,w28 // future e+=K304eor w9,w9,w17305eor w25,w25,w22306add w24,w24,w27 // e+=rot(a,5)307ror w21,w21,#2308eor w9,w9,w6309add w23,w23,w8 // future e+=X[i]310add w24,w24,w25 // e+=F(b,c,d)311ror w9,w9,#31312eor w10,w10,w12313eor w25,w22,w20314ror w27,w24,#27315add w22,w22,w28 // future e+=K316eor w10,w10,w19317eor w25,w25,w21318add w23,w23,w27 // e+=rot(a,5)319ror w20,w20,#2320eor w10,w10,w7321add w22,w22,w9 // future e+=X[i]322add w23,w23,w25 // e+=F(b,c,d)323ror w10,w10,#31324eor w11,w11,w13325eor w25,w21,w24326ror w27,w23,#27327add w21,w21,w28 // future e+=K328eor w11,w11,w3329eor w25,w25,w20330add w22,w22,w27 // e+=rot(a,5)331ror w24,w24,#2332eor w11,w11,w8333add w21,w21,w10 // future e+=X[i]334add w22,w22,w25 // e+=F(b,c,d)335ror w11,w11,#31336eor w12,w12,w14337eor w25,w20,w23338ror w27,w22,#27339add w20,w20,w28 // future e+=K340eor w12,w12,w4341eor w25,w25,w24342add w21,w21,w27 // e+=rot(a,5)343ror w23,w23,#2344eor w12,w12,w9345add w20,w20,w11 // future e+=X[i]346add w21,w21,w25 // e+=F(b,c,d)347ror w12,w12,#31348eor w13,w13,w15349eor w25,w24,w22350ror w27,w21,#27351add w24,w24,w28 // future e+=K352eor w13,w13,w5353eor w25,w25,w23354add w20,w20,w27 // e+=rot(a,5)355ror w22,w22,#2356eor w13,w13,w10357add w24,w24,w12 // future e+=X[i]358add w20,w20,w25 // e+=F(b,c,d)359ror w13,w13,#31360eor w14,w14,w16361eor w25,w23,w21362ror w27,w20,#27363add w23,w23,w28 // future e+=K364eor w14,w14,w6365eor w25,w25,w22366add w24,w24,w27 // e+=rot(a,5)367ror w21,w21,#2368eor w14,w14,w11369add w23,w23,w13 // future e+=X[i]370add w24,w24,w25 // e+=F(b,c,d)371ror w14,w14,#31372eor w15,w15,w17373eor w25,w22,w20374ror w27,w24,#27375add w22,w22,w28 // future e+=K376eor w15,w15,w7377eor w25,w25,w21378add w23,w23,w27 // e+=rot(a,5)379ror w20,w20,#2380eor w15,w15,w12381add w22,w22,w14 // future e+=X[i]382add w23,w23,w25 // e+=F(b,c,d)383ror w15,w15,#31384eor w16,w16,w19385eor w25,w21,w24386ror w27,w23,#27387add w21,w21,w28 // future e+=K388eor w16,w16,w8389eor w25,w25,w20390add w22,w22,w27 // e+=rot(a,5)391ror w24,w24,#2392eor w16,w16,w13393add w21,w21,w15 // future e+=X[i]394add w22,w22,w25 // e+=F(b,c,d)395ror w16,w16,#31396eor w17,w17,w3397eor w25,w20,w23398ror w27,w22,#27399add w20,w20,w28 // future e+=K400eor w17,w17,w9401eor w25,w25,w24402add w21,w21,w27 // e+=rot(a,5)403ror w23,w23,#2404eor w17,w17,w14405add w20,w20,w16 // future e+=X[i]406add w21,w21,w25 // e+=F(b,c,d)407ror w17,w17,#31408eor w19,w19,w4409eor w25,w24,w22410ror w27,w21,#27411add w24,w24,w28 // future e+=K412eor w19,w19,w10413eor w25,w25,w23414add w20,w20,w27 // e+=rot(a,5)415ror w22,w22,#2416eor w19,w19,w15417add w24,w24,w17 // future e+=X[i]418add w20,w20,w25 // e+=F(b,c,d)419ror w19,w19,#31420eor w3,w3,w5421eor w25,w23,w21422ror w27,w20,#27423add w23,w23,w28 // future e+=K424eor w3,w3,w11425eor w25,w25,w22426add w24,w24,w27 // e+=rot(a,5)427ror w21,w21,#2428eor w3,w3,w16429add w23,w23,w19 // future e+=X[i]430add w24,w24,w25 // e+=F(b,c,d)431ror w3,w3,#31432eor w4,w4,w6433eor w25,w22,w20434ror w27,w24,#27435add w22,w22,w28 // future e+=K436eor w4,w4,w12437eor w25,w25,w21438add w23,w23,w27 // e+=rot(a,5)439ror w20,w20,#2440eor w4,w4,w17441add w22,w22,w3 // future e+=X[i]442add w23,w23,w25 // e+=F(b,c,d)443ror w4,w4,#31444eor w5,w5,w7445eor w25,w21,w24446ror w27,w23,#27447add w21,w21,w28 // future e+=K448eor w5,w5,w13449eor w25,w25,w20450add w22,w22,w27 // e+=rot(a,5)451ror w24,w24,#2452eor w5,w5,w19453add w21,w21,w4 // future e+=X[i]454add w22,w22,w25 // e+=F(b,c,d)455ror w5,w5,#31456eor w6,w6,w8457eor w25,w20,w23458ror w27,w22,#27459add w20,w20,w28 // future e+=K460eor w6,w6,w14461eor w25,w25,w24462add w21,w21,w27 // e+=rot(a,5)463ror w23,w23,#2464eor w6,w6,w3465add w20,w20,w5 // future e+=X[i]466add w21,w21,w25 // e+=F(b,c,d)467ror w6,w6,#31468eor w7,w7,w9469eor w25,w24,w22470ror w27,w21,#27471add w24,w24,w28 // future e+=K472eor w7,w7,w15473eor w25,w25,w23474add w20,w20,w27 // e+=rot(a,5)475ror w22,w22,#2476eor w7,w7,w4477add w24,w24,w6 // future e+=X[i]478add w20,w20,w25 // e+=F(b,c,d)479ror w7,w7,#31480eor w8,w8,w10481eor w25,w23,w21482ror w27,w20,#27483add w23,w23,w28 // future e+=K484eor w8,w8,w16485eor w25,w25,w22486add w24,w24,w27 // e+=rot(a,5)487ror w21,w21,#2488eor w8,w8,w5489add w23,w23,w7 // future e+=X[i]490add w24,w24,w25 // e+=F(b,c,d)491ror w8,w8,#31492eor w9,w9,w11493eor w25,w22,w20494ror w27,w24,#27495add w22,w22,w28 // future e+=K496eor w9,w9,w17497eor w25,w25,w21498add w23,w23,w27 // e+=rot(a,5)499ror w20,w20,#2500eor w9,w9,w6501add w22,w22,w8 // future e+=X[i]502add w23,w23,w25 // e+=F(b,c,d)503ror w9,w9,#31504eor w10,w10,w12505eor w25,w21,w24506ror w27,w23,#27507add w21,w21,w28 // future e+=K508eor w10,w10,w19509eor w25,w25,w20510add w22,w22,w27 // e+=rot(a,5)511ror w24,w24,#2512eor w10,w10,w7513add w21,w21,w9 // future e+=X[i]514add w22,w22,w25 // e+=F(b,c,d)515ror w10,w10,#31516eor w11,w11,w13517eor w25,w20,w23518ror w27,w22,#27519add w20,w20,w28 // future e+=K520eor w11,w11,w3521eor w25,w25,w24522add w21,w21,w27 // e+=rot(a,5)523ror w23,w23,#2524eor w11,w11,w8525add w20,w20,w10 // future e+=X[i]526add w21,w21,w25 // e+=F(b,c,d)527ror w11,w11,#31528movz w28,#0xbcdc529movk w28,#0x8f1b,lsl#16530eor w12,w12,w14531eor w25,w24,w22532ror w27,w21,#27533add w24,w24,w28 // future e+=K534eor w12,w12,w4535eor w25,w25,w23536add w20,w20,w27 // e+=rot(a,5)537ror w22,w22,#2538eor w12,w12,w9539add w24,w24,w11 // future e+=X[i]540add w20,w20,w25 // e+=F(b,c,d)541ror w12,w12,#31542orr w25,w21,w22543and w26,w21,w22544eor w13,w13,w15545ror w27,w20,#27546and w25,w25,w23547add w23,w23,w28 // future e+=K548eor w13,w13,w5549add w24,w24,w27 // e+=rot(a,5)550orr w25,w25,w26551ror w21,w21,#2552eor w13,w13,w10553add w23,w23,w12 // future e+=X[i]554add w24,w24,w25 // e+=F(b,c,d)555ror w13,w13,#31556orr w25,w20,w21557and w26,w20,w21558eor w14,w14,w16559ror w27,w24,#27560and w25,w25,w22561add w22,w22,w28 // future e+=K562eor w14,w14,w6563add w23,w23,w27 // e+=rot(a,5)564orr w25,w25,w26565ror w20,w20,#2566eor w14,w14,w11567add w22,w22,w13 // future e+=X[i]568add w23,w23,w25 // e+=F(b,c,d)569ror w14,w14,#31570orr w25,w24,w20571and w26,w24,w20572eor w15,w15,w17573ror w27,w23,#27574and w25,w25,w21575add w21,w21,w28 // future e+=K576eor w15,w15,w7577add w22,w22,w27 // e+=rot(a,5)578orr w25,w25,w26579ror w24,w24,#2580eor w15,w15,w12581add w21,w21,w14 // future e+=X[i]582add w22,w22,w25 // e+=F(b,c,d)583ror w15,w15,#31584orr w25,w23,w24585and w26,w23,w24586eor w16,w16,w19587ror w27,w22,#27588and w25,w25,w20589add w20,w20,w28 // future e+=K590eor w16,w16,w8591add w21,w21,w27 // e+=rot(a,5)592orr w25,w25,w26593ror w23,w23,#2594eor w16,w16,w13595add w20,w20,w15 // future e+=X[i]596add w21,w21,w25 // e+=F(b,c,d)597ror w16,w16,#31598orr w25,w22,w23599and w26,w22,w23600eor w17,w17,w3601ror w27,w21,#27602and w25,w25,w24603add w24,w24,w28 // future e+=K604eor w17,w17,w9605add w20,w20,w27 // e+=rot(a,5)606orr w25,w25,w26607ror w22,w22,#2608eor w17,w17,w14609add w24,w24,w16 // future e+=X[i]610add w20,w20,w25 // e+=F(b,c,d)611ror w17,w17,#31612orr w25,w21,w22613and w26,w21,w22614eor w19,w19,w4615ror w27,w20,#27616and w25,w25,w23617add w23,w23,w28 // future e+=K618eor w19,w19,w10619add w24,w24,w27 // e+=rot(a,5)620orr w25,w25,w26621ror w21,w21,#2622eor w19,w19,w15623add w23,w23,w17 // future e+=X[i]624add w24,w24,w25 // e+=F(b,c,d)625ror w19,w19,#31626orr w25,w20,w21627and w26,w20,w21628eor w3,w3,w5629ror w27,w24,#27630and w25,w25,w22631add w22,w22,w28 // future e+=K632eor w3,w3,w11633add w23,w23,w27 // e+=rot(a,5)634orr w25,w25,w26635ror w20,w20,#2636eor w3,w3,w16637add w22,w22,w19 // future e+=X[i]638add w23,w23,w25 // e+=F(b,c,d)639ror w3,w3,#31640orr w25,w24,w20641and w26,w24,w20642eor w4,w4,w6643ror w27,w23,#27644and w25,w25,w21645add w21,w21,w28 // future e+=K646eor w4,w4,w12647add w22,w22,w27 // e+=rot(a,5)648orr w25,w25,w26649ror w24,w24,#2650eor w4,w4,w17651add w21,w21,w3 // future e+=X[i]652add w22,w22,w25 // e+=F(b,c,d)653ror w4,w4,#31654orr w25,w23,w24655and w26,w23,w24656eor w5,w5,w7657ror w27,w22,#27658and w25,w25,w20659add w20,w20,w28 // future e+=K660eor w5,w5,w13661add w21,w21,w27 // e+=rot(a,5)662orr w25,w25,w26663ror w23,w23,#2664eor w5,w5,w19665add w20,w20,w4 // future e+=X[i]666add w21,w21,w25 // e+=F(b,c,d)667ror w5,w5,#31668orr w25,w22,w23669and w26,w22,w23670eor w6,w6,w8671ror w27,w21,#27672and w25,w25,w24673add w24,w24,w28 // future e+=K674eor w6,w6,w14675add w20,w20,w27 // e+=rot(a,5)676orr w25,w25,w26677ror w22,w22,#2678eor w6,w6,w3679add w24,w24,w5 // future e+=X[i]680add w20,w20,w25 // e+=F(b,c,d)681ror w6,w6,#31682orr w25,w21,w22683and w26,w21,w22684eor w7,w7,w9685ror w27,w20,#27686and w25,w25,w23687add w23,w23,w28 // future e+=K688eor w7,w7,w15689add w24,w24,w27 // e+=rot(a,5)690orr w25,w25,w26691ror w21,w21,#2692eor w7,w7,w4693add w23,w23,w6 // future e+=X[i]694add w24,w24,w25 // e+=F(b,c,d)695ror w7,w7,#31696orr w25,w20,w21697and w26,w20,w21698eor w8,w8,w10699ror w27,w24,#27700and w25,w25,w22701add w22,w22,w28 // future e+=K702eor w8,w8,w16703add w23,w23,w27 // e+=rot(a,5)704orr w25,w25,w26705ror w20,w20,#2706eor w8,w8,w5707add w22,w22,w7 // future e+=X[i]708add w23,w23,w25 // e+=F(b,c,d)709ror w8,w8,#31710orr w25,w24,w20711and w26,w24,w20712eor w9,w9,w11713ror w27,w23,#27714and w25,w25,w21715add w21,w21,w28 // future e+=K716eor w9,w9,w17717add w22,w22,w27 // e+=rot(a,5)718orr w25,w25,w26719ror w24,w24,#2720eor w9,w9,w6721add w21,w21,w8 // future e+=X[i]722add w22,w22,w25 // e+=F(b,c,d)723ror w9,w9,#31724orr w25,w23,w24725and w26,w23,w24726eor w10,w10,w12727ror w27,w22,#27728and w25,w25,w20729add w20,w20,w28 // future e+=K730eor w10,w10,w19731add w21,w21,w27 // e+=rot(a,5)732orr w25,w25,w26733ror w23,w23,#2734eor w10,w10,w7735add w20,w20,w9 // future e+=X[i]736add w21,w21,w25 // e+=F(b,c,d)737ror w10,w10,#31738orr w25,w22,w23739and w26,w22,w23740eor w11,w11,w13741ror w27,w21,#27742and w25,w25,w24743add w24,w24,w28 // future e+=K744eor w11,w11,w3745add w20,w20,w27 // e+=rot(a,5)746orr w25,w25,w26747ror w22,w22,#2748eor w11,w11,w8749add w24,w24,w10 // future e+=X[i]750add w20,w20,w25 // e+=F(b,c,d)751ror w11,w11,#31752orr w25,w21,w22753and w26,w21,w22754eor w12,w12,w14755ror w27,w20,#27756and w25,w25,w23757add w23,w23,w28 // future e+=K758eor w12,w12,w4759add w24,w24,w27 // e+=rot(a,5)760orr w25,w25,w26761ror w21,w21,#2762eor w12,w12,w9763add w23,w23,w11 // future e+=X[i]764add w24,w24,w25 // e+=F(b,c,d)765ror w12,w12,#31766orr w25,w20,w21767and w26,w20,w21768eor w13,w13,w15769ror w27,w24,#27770and w25,w25,w22771add w22,w22,w28 // future e+=K772eor w13,w13,w5773add w23,w23,w27 // e+=rot(a,5)774orr w25,w25,w26775ror w20,w20,#2776eor w13,w13,w10777add w22,w22,w12 // future e+=X[i]778add w23,w23,w25 // e+=F(b,c,d)779ror w13,w13,#31780orr w25,w24,w20781and w26,w24,w20782eor w14,w14,w16783ror w27,w23,#27784and w25,w25,w21785add w21,w21,w28 // future e+=K786eor w14,w14,w6787add w22,w22,w27 // e+=rot(a,5)788orr w25,w25,w26789ror w24,w24,#2790eor w14,w14,w11791add w21,w21,w13 // future e+=X[i]792add w22,w22,w25 // e+=F(b,c,d)793ror w14,w14,#31794orr w25,w23,w24795and w26,w23,w24796eor w15,w15,w17797ror w27,w22,#27798and w25,w25,w20799add w20,w20,w28 // future e+=K800eor w15,w15,w7801add w21,w21,w27 // e+=rot(a,5)802orr w25,w25,w26803ror w23,w23,#2804eor w15,w15,w12805add w20,w20,w14 // future e+=X[i]806add w21,w21,w25 // e+=F(b,c,d)807ror w15,w15,#31808movz w28,#0xc1d6809movk w28,#0xca62,lsl#16810orr w25,w22,w23811and w26,w22,w23812eor w16,w16,w19813ror w27,w21,#27814and w25,w25,w24815add w24,w24,w28 // future e+=K816eor w16,w16,w8817add w20,w20,w27 // e+=rot(a,5)818orr w25,w25,w26819ror w22,w22,#2820eor w16,w16,w13821add w24,w24,w15 // future e+=X[i]822add w20,w20,w25 // e+=F(b,c,d)823ror w16,w16,#31824eor w17,w17,w3825eor w25,w23,w21826ror w27,w20,#27827add w23,w23,w28 // future e+=K828eor w17,w17,w9829eor w25,w25,w22830add w24,w24,w27 // e+=rot(a,5)831ror w21,w21,#2832eor w17,w17,w14833add w23,w23,w16 // future e+=X[i]834add w24,w24,w25 // e+=F(b,c,d)835ror w17,w17,#31836eor w19,w19,w4837eor w25,w22,w20838ror w27,w24,#27839add w22,w22,w28 // future e+=K840eor w19,w19,w10841eor w25,w25,w21842add w23,w23,w27 // e+=rot(a,5)843ror w20,w20,#2844eor w19,w19,w15845add w22,w22,w17 // future e+=X[i]846add w23,w23,w25 // e+=F(b,c,d)847ror w19,w19,#31848eor w3,w3,w5849eor w25,w21,w24850ror w27,w23,#27851add w21,w21,w28 // future e+=K852eor w3,w3,w11853eor w25,w25,w20854add w22,w22,w27 // e+=rot(a,5)855ror w24,w24,#2856eor w3,w3,w16857add w21,w21,w19 // future e+=X[i]858add w22,w22,w25 // e+=F(b,c,d)859ror w3,w3,#31860eor w4,w4,w6861eor w25,w20,w23862ror w27,w22,#27863add w20,w20,w28 // future e+=K864eor w4,w4,w12865eor w25,w25,w24866add w21,w21,w27 // e+=rot(a,5)867ror w23,w23,#2868eor w4,w4,w17869add w20,w20,w3 // future e+=X[i]870add w21,w21,w25 // e+=F(b,c,d)871ror w4,w4,#31872eor w5,w5,w7873eor w25,w24,w22874ror w27,w21,#27875add w24,w24,w28 // future e+=K876eor w5,w5,w13877eor w25,w25,w23878add w20,w20,w27 // e+=rot(a,5)879ror w22,w22,#2880eor w5,w5,w19881add w24,w24,w4 // future e+=X[i]882add w20,w20,w25 // e+=F(b,c,d)883ror w5,w5,#31884eor w6,w6,w8885eor w25,w23,w21886ror w27,w20,#27887add w23,w23,w28 // future e+=K888eor w6,w6,w14889eor w25,w25,w22890add w24,w24,w27 // e+=rot(a,5)891ror w21,w21,#2892eor w6,w6,w3893add w23,w23,w5 // future e+=X[i]894add w24,w24,w25 // e+=F(b,c,d)895ror w6,w6,#31896eor w7,w7,w9897eor w25,w22,w20898ror w27,w24,#27899add w22,w22,w28 // future e+=K900eor w7,w7,w15901eor w25,w25,w21902add w23,w23,w27 // e+=rot(a,5)903ror w20,w20,#2904eor w7,w7,w4905add w22,w22,w6 // future e+=X[i]906add w23,w23,w25 // e+=F(b,c,d)907ror w7,w7,#31908eor w8,w8,w10909eor w25,w21,w24910ror w27,w23,#27911add w21,w21,w28 // future e+=K912eor w8,w8,w16913eor w25,w25,w20914add w22,w22,w27 // e+=rot(a,5)915ror w24,w24,#2916eor w8,w8,w5917add w21,w21,w7 // future e+=X[i]918add w22,w22,w25 // e+=F(b,c,d)919ror w8,w8,#31920eor w9,w9,w11921eor w25,w20,w23922ror w27,w22,#27923add w20,w20,w28 // future e+=K924eor w9,w9,w17925eor w25,w25,w24926add w21,w21,w27 // e+=rot(a,5)927ror w23,w23,#2928eor w9,w9,w6929add w20,w20,w8 // future e+=X[i]930add w21,w21,w25 // e+=F(b,c,d)931ror w9,w9,#31932eor w10,w10,w12933eor w25,w24,w22934ror w27,w21,#27935add w24,w24,w28 // future e+=K936eor w10,w10,w19937eor w25,w25,w23938add w20,w20,w27 // e+=rot(a,5)939ror w22,w22,#2940eor w10,w10,w7941add w24,w24,w9 // future e+=X[i]942add w20,w20,w25 // e+=F(b,c,d)943ror w10,w10,#31944eor w11,w11,w13945eor w25,w23,w21946ror w27,w20,#27947add w23,w23,w28 // future e+=K948eor w11,w11,w3949eor w25,w25,w22950add w24,w24,w27 // e+=rot(a,5)951ror w21,w21,#2952eor w11,w11,w8953add w23,w23,w10 // future e+=X[i]954add w24,w24,w25 // e+=F(b,c,d)955ror w11,w11,#31956eor w12,w12,w14957eor w25,w22,w20958ror w27,w24,#27959add w22,w22,w28 // future e+=K960eor w12,w12,w4961eor w25,w25,w21962add w23,w23,w27 // e+=rot(a,5)963ror w20,w20,#2964eor w12,w12,w9965add w22,w22,w11 // future e+=X[i]966add w23,w23,w25 // e+=F(b,c,d)967ror w12,w12,#31968eor w13,w13,w15969eor w25,w21,w24970ror w27,w23,#27971add w21,w21,w28 // future e+=K972eor w13,w13,w5973eor w25,w25,w20974add w22,w22,w27 // e+=rot(a,5)975ror w24,w24,#2976eor w13,w13,w10977add w21,w21,w12 // future e+=X[i]978add w22,w22,w25 // e+=F(b,c,d)979ror w13,w13,#31980eor w14,w14,w16981eor w25,w20,w23982ror w27,w22,#27983add w20,w20,w28 // future e+=K984eor w14,w14,w6985eor w25,w25,w24986add w21,w21,w27 // e+=rot(a,5)987ror w23,w23,#2988eor w14,w14,w11989add w20,w20,w13 // future e+=X[i]990add w21,w21,w25 // e+=F(b,c,d)991ror w14,w14,#31992eor w15,w15,w17993eor w25,w24,w22994ror w27,w21,#27995add w24,w24,w28 // future e+=K996eor w15,w15,w7997eor w25,w25,w23998add w20,w20,w27 // e+=rot(a,5)999ror w22,w22,#21000eor w15,w15,w121001add w24,w24,w14 // future e+=X[i]1002add w20,w20,w25 // e+=F(b,c,d)1003ror w15,w15,#311004eor w16,w16,w191005eor w25,w23,w211006ror w27,w20,#271007add w23,w23,w28 // future e+=K1008eor w16,w16,w81009eor w25,w25,w221010add w24,w24,w27 // e+=rot(a,5)1011ror w21,w21,#21012eor w16,w16,w131013add w23,w23,w15 // future e+=X[i]1014add w24,w24,w25 // e+=F(b,c,d)1015ror w16,w16,#311016eor w17,w17,w31017eor w25,w22,w201018ror w27,w24,#271019add w22,w22,w28 // future e+=K1020eor w17,w17,w91021eor w25,w25,w211022add w23,w23,w27 // e+=rot(a,5)1023ror w20,w20,#21024eor w17,w17,w141025add w22,w22,w16 // future e+=X[i]1026add w23,w23,w25 // e+=F(b,c,d)1027ror w17,w17,#311028eor w19,w19,w41029eor w25,w21,w241030ror w27,w23,#271031add w21,w21,w28 // future e+=K1032eor w19,w19,w101033eor w25,w25,w201034add w22,w22,w27 // e+=rot(a,5)1035ror w24,w24,#21036eor w19,w19,w151037add w21,w21,w17 // future e+=X[i]1038add w22,w22,w25 // e+=F(b,c,d)1039ror w19,w19,#311040ldp w4,w5,[x0]1041eor w25,w20,w231042ror w27,w22,#271043add w20,w20,w28 // future e+=K1044eor w25,w25,w241045add w21,w21,w27 // e+=rot(a,5)1046ror w23,w23,#21047add w20,w20,w19 // future e+=X[i]1048add w21,w21,w25 // e+=F(b,c,d)1049ldp w6,w7,[x0,#8]1050eor w25,w24,w221051ror w27,w21,#271052eor w25,w25,w231053add w20,w20,w27 // e+=rot(a,5)1054ror w22,w22,#21055ldr w8,[x0,#16]1056add w20,w20,w25 // e+=F(b,c,d)1057add w21,w21,w51058add w22,w22,w61059add w20,w20,w41060add w23,w23,w71061add w24,w24,w81062stp w20,w21,[x0]1063stp w22,w23,[x0,#8]1064str w24,[x0,#16]1065cbnz x2,.Loop10661067ldp x19,x20,[sp,#16]1068ldp x21,x22,[sp,#32]1069ldp x23,x24,[sp,#48]1070ldp x25,x26,[sp,#64]1071ldp x27,x28,[sp,#80]1072ldr x29,[sp],#961073ret1074.size sha1_block_data_order,.-sha1_block_data_order1075.type sha1_block_armv8,%function1076.align 61077sha1_block_armv8:1078.Lv8_entry:1079// Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later.1080stp x29,x30,[sp,#-16]!1081add x29,sp,#010821083adrp x4,.Lconst1084add x4,x4,#:lo12:.Lconst1085eor v1.16b,v1.16b,v1.16b1086ld1 {v0.4s},[x0],#161087ld1 {v1.s}[0],[x0]1088sub x0,x0,#161089ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x4]10901091.Loop_hw:1092ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#641093sub x2,x2,#11094rev32 v4.16b,v4.16b1095rev32 v5.16b,v5.16b10961097add v20.4s,v16.4s,v4.4s1098rev32 v6.16b,v6.16b1099orr v22.16b,v0.16b,v0.16b // offload11001101add v21.4s,v16.4s,v5.4s1102rev32 v7.16b,v7.16b1103.inst 0x5e280803 //sha1h v3.16b,v0.16b1104.inst 0x5e140020 //sha1c v0.16b,v1.16b,v20.4s // 01105add v20.4s,v16.4s,v6.4s1106.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b1107.inst 0x5e280802 //sha1h v2.16b,v0.16b // 11108.inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s1109add v21.4s,v16.4s,v7.4s1110.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b1111.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b1112.inst 0x5e280803 //sha1h v3.16b,v0.16b // 21113.inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s1114add v20.4s,v16.4s,v4.4s1115.inst 0x5e281885 //sha1su1 v5.16b,v4.16b1116.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b1117.inst 0x5e280802 //sha1h v2.16b,v0.16b // 31118.inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s1119add v21.4s,v17.4s,v5.4s1120.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b1121.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b1122.inst 0x5e280803 //sha1h v3.16b,v0.16b // 41123.inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s1124add v20.4s,v17.4s,v6.4s1125.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b1126.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b1127.inst 0x5e280802 //sha1h v2.16b,v0.16b // 51128.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s1129add v21.4s,v17.4s,v7.4s1130.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b1131.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b1132.inst 0x5e280803 //sha1h v3.16b,v0.16b // 61133.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s1134add v20.4s,v17.4s,v4.4s1135.inst 0x5e281885 //sha1su1 v5.16b,v4.16b1136.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b1137.inst 0x5e280802 //sha1h v2.16b,v0.16b // 71138.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s1139add v21.4s,v17.4s,v5.4s1140.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b1141.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b1142.inst 0x5e280803 //sha1h v3.16b,v0.16b // 81143.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s1144add v20.4s,v18.4s,v6.4s1145.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b1146.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b1147.inst 0x5e280802 //sha1h v2.16b,v0.16b // 91148.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s1149add v21.4s,v18.4s,v7.4s1150.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b1151.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b1152.inst 0x5e280803 //sha1h v3.16b,v0.16b // 101153.inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s1154add v20.4s,v18.4s,v4.4s1155.inst 0x5e281885 //sha1su1 v5.16b,v4.16b1156.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b1157.inst 0x5e280802 //sha1h v2.16b,v0.16b // 111158.inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s1159add v21.4s,v18.4s,v5.4s1160.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b1161.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b1162.inst 0x5e280803 //sha1h v3.16b,v0.16b // 121163.inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s1164add v20.4s,v18.4s,v6.4s1165.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b1166.inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b1167.inst 0x5e280802 //sha1h v2.16b,v0.16b // 131168.inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s1169add v21.4s,v19.4s,v7.4s1170.inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b1171.inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b1172.inst 0x5e280803 //sha1h v3.16b,v0.16b // 141173.inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s1174add v20.4s,v19.4s,v4.4s1175.inst 0x5e281885 //sha1su1 v5.16b,v4.16b1176.inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b1177.inst 0x5e280802 //sha1h v2.16b,v0.16b // 151178.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s1179add v21.4s,v19.4s,v5.4s1180.inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b1181.inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b1182.inst 0x5e280803 //sha1h v3.16b,v0.16b // 161183.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s1184add v20.4s,v19.4s,v6.4s1185.inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b1186.inst 0x5e280802 //sha1h v2.16b,v0.16b // 171187.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s1188add v21.4s,v19.4s,v7.4s11891190.inst 0x5e280803 //sha1h v3.16b,v0.16b // 181191.inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s11921193.inst 0x5e280802 //sha1h v2.16b,v0.16b // 191194.inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s11951196add v1.4s,v1.4s,v2.4s1197add v0.4s,v0.4s,v22.4s11981199cbnz x2,.Loop_hw12001201st1 {v0.4s},[x0],#161202st1 {v1.s}[0],[x0]12031204ldr x29,[sp],#161205ret1206.size sha1_block_armv8,.-sha1_block_armv812071208.section .rodata12091210.align 61211.Lconst:1212.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 //K_00_191213.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 //K_20_391214.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc //K_40_591215.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 //K_60_791216.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,56,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,01217.align 21218.align 2121912201221