8 .type gcm_init_v8,%function
11 vld1.64 {q9},[r1] @ load H
16 vext.8 q8,q10,q8,#8 @ t0=0xc2....01
19 vshr.s32 q9,q9,#31 @ broadcast carry bit
24 vorr q3,q3,q11 @ H<<<=1
25 veor q3,q3,q8 @ twisted H
29 .size gcm_init_v8,.-gcm_init_v8
32 .type gcm_gmult_v8,%function
35 vld1.64 {q9},[r0] @ load Xi
37 vld1.64 {q12},[r1] @ load twisted H
46 veor q13,q13,q12 @ Karatsuba pre-processing
49 .size gcm_gmult_v8,.-gcm_gmult_v8
52 .type gcm_ghash_v8,%function
55 vld1.64 {q0},[r0] @ load [rotated] Xi
59 vld1.64 {q12},[r1] @ load twisted H
63 vld1.64 {q9},[r2],r12 @ load [rotated] inp
69 veor q13,q13,q12 @ Karatsuba pre-processing
76 veor q3,q3,q0 @ inp^=Xi
77 veor q9,q9,q10 @ q9 is rotated inp^Xi
80 .inst 0xf2a80e86 @ pmull q0,q12,q3 @ H.lo·Xi.lo
81 veor q9,q9,q3 @ Karatsuba pre-processing
82 .inst 0xf2a94e87 @ pmull2 q2,q12,q3 @ H.hi·Xi.hi
84 .inst 0xf2aa2ea2 @ pmull q1,q13,q9 @ (H.lo+H.hi)·(Xi.lo+Xi.hi)
87 vext.8 q9,q0,q2,#8 @ Karatsuba post-processing
90 vld1.64 {q9},[r2],r12 @ load [rotated] inp
92 .inst 0xf2e04e26 @ pmull q10,q0,q11 @ 1st phase
94 vmov d4,d3 @ Xh|Xm - 256-bit result
95 vmov d3,d0 @ Xm is rotated Xl
102 vext.8 q10,q0,q0,#8 @ 2nd phase
103 .inst 0xf2a00e26 @ pmull q0,q0,q11
112 vst1.64 {q0},[r0] @ write out Xi
115 .size gcm_ghash_v8,.-gcm_ghash_v8
116 .asciz "GHASH for ARMv8, CRYPTOGAMS by <appro@openssl.org>"