binius_field/arch/portable/
packed_32.rs1use cfg_if::cfg_if;
4
5use super::{
6 packed::PackedPrimitiveType,
7 packed_arithmetic::{alphas, impl_tower_constants},
8};
9use crate::{
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: u32,
19 packed_fields: [
20 packed_field {
21 name: PackedBinaryField32x1b,
22 scalar: BinaryField1b,
23 alpha_idx: 0,
24 mul: (None),
25 square: (None),
26 invert: (None),
27 mul_alpha: (None),
28 transform: (PackedStrategy),
29 },
30 packed_field {
31 name: PackedBinaryField16x2b,
32 scalar: BinaryField2b,
33 alpha_idx: 1,
34 mul: (PackedStrategy),
35 square: (PackedStrategy),
36 invert: (PairwiseRecursiveStrategy),
37 mul_alpha: (PackedStrategy),
38 transform: (PackedStrategy),
39 },
40 packed_field {
41 name: PackedBinaryField8x4b,
42 scalar: BinaryField4b,
43 alpha_idx: 2,
44 mul: (PackedStrategy),
45 square: (PackedStrategy),
46 invert: (PairwiseRecursiveStrategy),
47 mul_alpha: (PackedStrategy),
48 transform: (PackedStrategy),
49 },
50 packed_field {
51 name: PackedBinaryField4x8b,
52 scalar: BinaryField8b,
53 alpha_idx: 3,
54 mul: (if gfni_x86 PackedBinaryField16x8b else PairwiseTableStrategy),
55 square: (if gfni_x86 PackedBinaryField16x8b else PackedStrategy),
56 invert: (if gfni_x86 PackedBinaryField16x8b else PairwiseStrategy),
57 mul_alpha: (PackedStrategy),
58 transform: (PackedStrategy),
59 },
60 packed_field {
61 name: PackedBinaryField2x16b,
62 scalar: BinaryField16b,
63 alpha_idx: 4,
64 mul: (if gfni_x86 PackedBinaryField8x16b else HybridRecursiveStrategy),
65 square: (if gfni_x86 PackedBinaryField8x16b else PackedStrategy),
66 invert: (if gfni_x86 PackedBinaryField8x16b else PackedStrategy),
67 mul_alpha: (PackedStrategy),
68 transform: (PackedStrategy),
69 },
70 packed_field {
71 name: PackedBinaryField1x32b,
72 scalar: BinaryField32b,
73 alpha_idx: _,
74 mul: (if gfni_x86 PackedBinaryField4x32b else HybridRecursiveStrategy),
75 square: (if gfni_x86 PackedBinaryField4x32b else PairwiseRecursiveStrategy),
76 invert: (if gfni_x86 PackedBinaryField4x32b else PackedStrategy),
77 mul_alpha: (PairwiseRecursiveStrategy),
78 transform: (PairwiseStrategy),
79 },
80 ]
81);