uint8x16_t
static inline uint8x16_t
storeroundkey(void *rkp, uint8x16_t rk)
bytes2nybbles(uint8x16_t *restrict lo, uint8x16_t *restrict hi, uint8x16_t x)
static uint8x16_t
aes_schedule_transform(uint8x16_t x, const uint8x16_t t[static 2])
uint8x16_t lo, hi;
subbytes(uint8x16_t *io, uint8x16_t *jo, uint8x16_t x, uint8x16_t inv_,
uint8x16_t inva_)
uint8x16_t k, i, ak, j;
static uint8x16_t
aes_schedule_low_round(uint8x16_t rk, uint8x16_t prk)
uint8x16_t io, jo;
static uint8x16_t
aes_schedule_round(uint8x16_t rk, uint8x16_t prk, uint8x16_t *rcon_rot)
static uint8x16_t
aes_schedule_mangle_enc(uint8x16_t x, uint8x16_t sr_i)
uint8x16_t y = vdupq_n_u8(0);
static uint8x16_t
aes_schedule_mangle_last_enc(uint8x16_t x, uint8x16_t sr_i)
static uint8x16_t
aes_schedule_mangle_dec(uint8x16_t x, uint8x16_t sr_i)
uint8x16_t y = vdupq_n_u8(0);
static uint8x16_t
aes_schedule_mangle_last_dec(uint8x16_t x)
static uint8x16_t
aes_schedule_192_smear(uint8x16_t prkhi, uint8x16_t prk)
static uint8x16_t
aes_schedule_192_smearhi(uint8x16_t rk)
uint8x16_t mrk; /* mangled round key */
uint8x16_t rk; /* round key */
uint8x16_t prk; /* previous round key */
uint8x16_t rcon_rot = rcon;
uint8x16_t prkhi; /* high half of previous round key */
uint8x16_t pprk; /* previous previous round key */
uint8x16_t mrk; /* mangled round key */
uint8x16_t ork; /* original round key */
uint8x16_t rk; /* round key */
uint8x16_t prk; /* previous round key */
uint8x16_t rcon_rot = rcon;
uint8x16_t prkhi; /* high half of previous round key */
uint8x16_t pprk; /* previous previous round key */
uint8x16_t
aes_neon_enc1(const struct aesenc *enc, uint8x16_t x, unsigned nrounds)
uint8x16_t inv_ = *(const volatile uint8x16_t *)&inv;
uint8x16_t inva_ = *(const volatile uint8x16_t *)&inva;
uint8x16_t sb1_0 = ((const volatile uint8x16_t *)sb1)[0];
uint8x16_t sb1_1 = ((const volatile uint8x16_t *)sb1)[1];
uint8x16_t sb2_0 = ((const volatile uint8x16_t *)sb2)[0];
uint8x16_t sb2_1 = ((const volatile uint8x16_t *)sb2)[1];
uint8x16_t io, jo;
uint8x16_t A, A2, A2_B, A2_B_D;
uint8x16_t inv_ = *(const volatile uint8x16_t *)&inv;
uint8x16_t inva_ = *(const volatile uint8x16_t *)&inva;
uint8x16_t sb1_0 = ((const volatile uint8x16_t *)sb1)[0];
uint8x16_t sb1_1 = ((const volatile uint8x16_t *)sb1)[1];
uint8x16_t sb2_0 = ((const volatile uint8x16_t *)sb2)[0];
uint8x16_t sb2_1 = ((const volatile uint8x16_t *)sb2)[1];
uint8x16_t x0 = x.val[0], x1 = x.val[1];
uint8x16_t io0, jo0, io1, jo1;
static const uint8x16_t
uint8x16_t A_0, A2_0, A2_B_0, A2_B_D_0;
uint8x16_t A_1, A2_1, A2_B_1, A2_B_D_1;
uint8x16_t
aes_neon_dec1(const struct aesdec *dec, uint8x16_t x, unsigned nrounds)
uint8x16_t inv_ = *(const volatile uint8x16_t *)&inv;
uint8x16_t inva_ = *(const volatile uint8x16_t *)&inva;
uint8x16_t io, jo, mc;
uint8x16_t inv_ = *(const volatile uint8x16_t *)&inv;
uint8x16_t inva_ = *(const volatile uint8x16_t *)&inva;
uint8x16_t x0 = x.val[0], x1 = x.val[1];
uint8x16_t io0, jo0, io1, jo1, mc;
uint8x16_t aes_neon_enc1(const struct aesenc *, uint8x16_t, unsigned);
uint8x16_t aes_neon_dec1(const struct aesdec *, uint8x16_t, unsigned);
uint8x16_t iv0, cv, b;
static inline uint8x16_t
aes_neon_xts_update(uint8x16_t t8)
uint8x16_t t, b;
uint8x16_t t1;
uint8x16_t t, b;
uint8x16_t t1;
uint8x16_t auth;
uint8x16_t auth, ptxt, ctr_be;
uint8x16_t auth, ctr_be, ptxt, pad;
static inline uint8x16_t
storeblock(void *out, uint8x16_t block)
uint8x16_t block;
uint8x16_t block;
uint8x16_t cv;
static __inline uint8x16_t
return (uint8x16_t) {
static __inline uint8x16_t
vextq_u8(uint8x16_t __lo, uint8x16_t __hi, uint8_t __i)
(uint8x16_t) {
(uint8x16_t) {
return (uint8x16_t)__builtin_neon_vextv16qi((int8x16_t)__lo,
(uint8x16_t)__builtin_neon_vextq_v((int8x16_t)(__lo), \
uint8x16_t __tlo = (__lo); \
uint8x16_t __thi = (__hi); \
uint8x16_t __lo_r = __builtin_shufflevector(__tlo, __tlo, \
uint8x16_t __hi_r = __builtin_shufflevector(__thi, __thi, \
uint8x16_t __r = __builtin_neon_vextq_v((int8x16_t)__lo_r, \
static __inline uint8x16_t
return (uint8x16_t)__builtin_aarch64_ld1v16qi(__p);
return (uint8x16_t)__builtin_neon_vld1v16qi(__p);
uint8x16_t __v = (uint8x16_t)__builtin_neon_vld1q_v(__p8, 48);
static __inline uint8x16_t
vqtbl1q_u8(uint8x16_t __tab, uint8x16_t __idx)
uint8x16_t __res;
return (uint8x16_t)__out64;
uint8x16_t __r;
__r = (uint8x16_t)__out64;
vreinterpretq_s32_u8(uint8x16_t __v)
vreinterpretq_u32_u8(uint8x16_t __v)
vreinterpretq_u64_u8(uint8x16_t __v)
static __inline uint8x16_t
return (uint8x16_t)__v;
static __inline uint8x16_t
return (uint8x16_t)__v;
static __inline uint8x16_t
return (uint8x16_t)__v;
static __inline uint8x16_t
vrev32q_u8(uint8x16_t __v)
(uint8x16_t) { 3,2,1,0, 7,6,5,4, 11,10,9,8, 15,14,13,12 });
typedef struct { uint8x16_t val[2]; } uint8x16x2_t;
static __inline uint8x16_t
vshrq_n_u8(uint8x16_t __v, uint8_t __bits)
return (uint8x16_t)__builtin_aarch64_lshrv16qi((int8x16_t)__v, __bits);
return (uint8x16_t)__builtin_neon_vshru_nv16qi((int8x16_t)__v, __bits);
(uint8x16_t)__builtin_neon_vshrq_n_v((int8x16_t)(__v), (__bits), 48)
typedef struct { uint8x16_t val[2]; } uint8x16x2_t;
vst1q_u8(uint8_t *__p8, uint8x16_t __v)
typedef struct { uint8x16_t val[2]; } uint8x16x2_t;
static const uint8x16_t rol8_tab = VQ_N_U8(
uint8x16_t y8, x8 = vreinterpretq_u8_u32(x);