binius_field/arch/portable/
packed_aes_16.rs

1// Copyright 2024-2025 Irreducible Inc.
2
3use super::{
4	packed::PackedPrimitiveType, packed_arithmetic::impl_tower_constants,
5	packed_macros::impl_broadcast,
6};
7use crate::{
8	AESTowerField8b,
9	arch::portable::packed_macros::{portable_macros::*, *},
10	arithmetic_traits::{
11		impl_invert_with, impl_mul_alpha_with, impl_mul_with, impl_square_with,
12		impl_transformation_with_strategy,
13	},
14};
15
16define_packed_binary_fields!(
17	underlier: u16,
18	packed_fields: [
19		packed_field {
20			name: PackedAESBinaryField2x8b,
21			scalar: AESTowerField8b,
22			alpha_idx: _,
23			mul: (PairwiseTableStrategy),
24			square: (PairwiseTableStrategy),
25			invert: (PairwiseTableStrategy),
26			mul_alpha: (PairwiseTableStrategy),
27			transform: (PackedStrategy),
28		},
29		packed_field {
30			name: PackedAESBinaryField1x16b,
31			scalar: AESTowerField16b,
32			alpha_idx: _,
33			mul: (PairwiseRecursiveStrategy),
34			square: (PairwiseRecursiveStrategy),
35			invert: (PairwiseRecursiveStrategy),
36			mul_alpha: (PackedStrategy),
37			transform: (PairwiseStrategy),
38		},
39	]
40);
41
42impl_tower_constants!(AESTowerField8b, u16, 0x00d3);