binius_field/arch/portable/
packed_aes_64.rs1use cfg_if::cfg_if;
4
5use super::{
6 packed::PackedPrimitiveType,
7 packed_arithmetic::{alphas, impl_tower_constants},
8 packed_macros::impl_broadcast,
9};
10use crate::{
11 AESTowerField8b,
12 arch::portable::packed_macros::{portable_macros::*, *},
13 arithmetic_traits::{
14 impl_invert_with, impl_mul_alpha_with, impl_mul_with, impl_square_with,
15 impl_transformation_with_strategy,
16 },
17};
18
19define_packed_binary_fields!(
20 underlier: u64,
21 packed_fields: [
22 packed_field {
23 name: PackedAESBinaryField8x8b,
24 scalar: AESTowerField8b,
25 alpha_idx: _,
26 mul: (if gfni_x86 PackedAESBinaryField16x8b else PairwiseTableStrategy),
27 square: (if gfni_x86 PackedAESBinaryField16x8b else PairwiseTableStrategy),
28 invert: (if gfni_x86 PackedAESBinaryField16x8b else PairwiseTableStrategy),
29 mul_alpha: (PairwiseTableStrategy),
30 transform: (PackedStrategy),
31 },
32 packed_field {
33 name: PackedAESBinaryField4x16b,
34 scalar: AESTowerField16b,
35 alpha_idx: 4,
36 mul: (if gfni_x86 PackedAESBinaryField8x16b else PairwiseRecursiveStrategy),
37 square: (if gfni_x86 PackedAESBinaryField8x16b else PairwiseRecursiveStrategy),
38 invert: (if gfni_x86 PackedAESBinaryField8x16b else PairwiseRecursiveStrategy),
39 mul_alpha: (PackedStrategy),
40 transform: (PackedStrategy),
41 },
42 packed_field {
43 name: PackedAESBinaryField2x32b,
44 scalar: AESTowerField32b,
45 alpha_idx: 5,
46 mul: (if gfni_x86 PackedAESBinaryField4x32b else PairwiseRecursiveStrategy),
47 square: (if gfni_x86 PackedAESBinaryField4x32b else PairwiseRecursiveStrategy),
48 invert: (if gfni_x86 PackedAESBinaryField4x32b else PairwiseRecursiveStrategy),
49 mul_alpha: (PackedStrategy),
50 transform: (PackedStrategy),
51 },
52 packed_field {
53 name: PackedAESBinaryField1x64b,
54 scalar: AESTowerField64b,
55 alpha_idx: _,
56 mul: (if gfni_x86 PackedAESBinaryField2x64b else PairwiseRecursiveStrategy),
57 square: (if gfni_x86 PackedAESBinaryField2x64b else PairwiseRecursiveStrategy),
58 invert: (if gfni_x86 PackedAESBinaryField2x64b else PairwiseRecursiveStrategy),
59 mul_alpha: (PairwiseRecursiveStrategy),
60 transform: (PairwiseStrategy),
61 },
62 ]
63);
64
65impl_tower_constants!(AESTowerField8b, u64, 0x00d300d300d300d3);