binius_field/arch/portable/
packed_aes_128.rs

1// Copyright 2024-2025 Irreducible Inc.
2
3use super::{
4	packed::PackedPrimitiveType,
5	packed_arithmetic::{alphas, impl_tower_constants},
6	packed_macros::impl_broadcast,
7};
8use crate::{
9	aes_field::AESTowerField8b,
10	arch::portable::packed_macros::{portable_macros::*, *},
11	arithmetic_traits::{
12		impl_invert_with, impl_mul_alpha_with, impl_mul_with, impl_square_with,
13		impl_transformation_with_strategy,
14	},
15};
16
17define_packed_binary_fields!(
18	underlier: u128,
19	packed_fields: [
20		packed_field {
21			name: PackedAESBinaryField16x8b,
22			scalar: AESTowerField8b,
23			alpha_idx: _,
24			mul: (PairwiseTableStrategy),
25			square: (PairwiseTableStrategy),
26			invert: (PairwiseTableStrategy),
27			mul_alpha: (PairwiseTableStrategy),
28			transform: (PackedStrategy),
29		},
30		packed_field {
31			name: PackedAESBinaryField8x16b,
32			scalar: AESTowerField16b,
33			alpha_idx: 4,
34			mul: (PairwiseRecursiveStrategy),
35			square: (PairwiseRecursiveStrategy),
36			invert: (PairwiseRecursiveStrategy),
37			mul_alpha: (PackedStrategy),
38			transform: (PackedStrategy),
39		},
40		packed_field {
41			name: PackedAESBinaryField4x32b,
42			scalar: AESTowerField32b,
43			alpha_idx: 5,
44			mul: (PairwiseRecursiveStrategy),
45			square: (PackedStrategy),
46			invert: (PairwiseRecursiveStrategy),
47			mul_alpha: (PackedStrategy),
48			transform: (PackedStrategy),
49		},
50		packed_field {
51			name: PackedAESBinaryField2x64b,
52			scalar: AESTowerField64b,
53			alpha_idx: 6,
54			mul: (PairwiseRecursiveStrategy),
55			square: (PackedStrategy),
56			invert: (PairwiseRecursiveStrategy),
57			mul_alpha: (PairwiseRecursiveStrategy),
58			transform: (PairwiseStrategy),
59		},
60		packed_field {
61			name: PackedAESBinaryField1x128b,
62			scalar: AESTowerField128b,
63			alpha_idx: _,
64			mul: (PairwiseRecursiveStrategy),
65			square: (PairwiseRecursiveStrategy),
66			invert: (PairwiseRecursiveStrategy),
67			mul_alpha: (PairwiseRecursiveStrategy),
68			transform: (PairwiseStrategy),
69		},
70	]
71);
72
73impl_tower_constants!(AESTowerField8b, u128, 0x00d300d300d300d300d300d300d300d3);