binius_field/arch/x86_64/
packed_aes_128.rs1use cfg_if::cfg_if;
4
5use super::{m128::M128, packed_macros::*};
6use crate::{
7 arch::portable::{packed::PackedPrimitiveType, packed_macros::*},
8 arithmetic_traits::{
9 impl_invert_with, impl_mul_alpha_with, impl_mul_with, impl_square_with,
10 impl_transformation_with_strategy,
11 },
12};
13
14define_packed_binary_fields!(
15 underlier: M128,
16 packed_fields: [
17 packed_field {
18 name: PackedAESBinaryField16x8b,
19 scalar: AESTowerField8b,
20 alpha_idx: _,
21 mul: (if gfni GfniStrategy else PairwiseTableStrategy),
22 square: (if gfni ReuseMultiplyStrategy else PairwiseTableStrategy),
23 invert: (if gfni GfniStrategy else PairwiseTableStrategy),
24 mul_alpha: (if gfni ReuseMultiplyStrategy else PairwiseTableStrategy),
25 transform: (if gfni GfniStrategy else SimdStrategy),
26 },
27 packed_field {
28 name: PackedAESBinaryField8x16b,
29 scalar: AESTowerField16b,
30 alpha_idx: _,
31 mul: (SimdStrategy),
32 square: (SimdStrategy),
33 invert: (SimdStrategy),
34 mul_alpha: (SimdStrategy),
35 transform: (if gfni 2 else SimdStrategy),
36 },
37 packed_field {
38 name: PackedAESBinaryField4x32b,
39 scalar: AESTowerField32b,
40 alpha_idx: _,
41 mul: (SimdStrategy),
42 square: (SimdStrategy),
43 invert: (SimdStrategy),
44 mul_alpha: (SimdStrategy),
45 transform: (if gfni 4 else SimdStrategy),
46 },
47 packed_field {
48 name: PackedAESBinaryField2x64b,
49 scalar: AESTowerField64b,
50 alpha_idx: _,
51 mul: (SimdStrategy),
52 square: (SimdStrategy),
53 invert: (SimdStrategy),
54 mul_alpha: (SimdStrategy),
55 transform: (if gfni 8 else SimdStrategy),
56 },
57 packed_field {
58 name: PackedAESBinaryField1x128b,
59 scalar: AESTowerField128b,
60 alpha_idx: _,
61 mul: (SimdStrategy),
62 square: (SimdStrategy),
63 invert: (SimdStrategy),
64 mul_alpha: (SimdStrategy),
65 transform: (if gfni 16 else SimdStrategy),
66 },
67 ]
68);