binius_field/arch/portable/
packed_aes_64.rs

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