binius_field/arch/x86_64/
packed_aes_128.rs

1// Copyright 2024-2025 Irreducible Inc.
2
3use cfg_if::cfg_if;
4
5use super::{m128::M128, packed_macros::*};
6use crate::{
7	arch::portable::{packed::PackedPrimitiveType, packed_macros::*},
8	arithmetic_traits::{impl_invert_with, impl_mul_alpha_with, impl_mul_with, impl_square_with},
9};
10
11define_packed_binary_fields!(
12	underlier: M128,
13	packed_fields: [
14		packed_field {
15			name: PackedAESBinaryField16x8b,
16			scalar: AESTowerField8b,
17			alpha_idx: _,
18			mul:       (if gfni GfniStrategy else PairwiseTableStrategy),
19			square:    (if gfni ReuseMultiplyStrategy else PairwiseTableStrategy),
20			invert:    (if gfni GfniStrategy else PairwiseTableStrategy),
21			mul_alpha: (if gfni ReuseMultiplyStrategy else PairwiseTableStrategy),
22			transform: (if gfni GfniStrategy else SimdStrategy),
23		},
24	]
25);