binius_field/arch/portable/
packed_8.rs

1// Copyright 2024-2025 Irreducible Inc.
2
3use super::{
4	packed::PackedPrimitiveType,
5	packed_arithmetic::{alphas, impl_tower_constants},
6};
7use crate::{
8	arch::portable::packed_macros::{portable_macros::*, *},
9	arithmetic_traits::{
10		impl_invert_with, impl_mul_alpha_with, impl_mul_with, impl_square_with,
11		impl_transformation_with_strategy,
12	},
13};
14
15define_packed_binary_fields!(
16	underlier: u8,
17	packed_fields: [
18		packed_field {
19			name: PackedBinaryField8x1b,
20			scalar: BinaryField1b,
21			alpha_idx: 0,
22			mul: (None),
23			square: (None),
24			invert: (None),
25			mul_alpha: (None),
26			transform: (PackedStrategy),
27		},
28		packed_field {
29			name: PackedBinaryField4x2b,
30			scalar: BinaryField2b,
31			alpha_idx: 1,
32			mul: (PackedStrategy),
33			square: (PackedStrategy),
34			invert: (PairwiseRecursiveStrategy),
35			mul_alpha: (PackedStrategy),
36			transform: (PackedStrategy),
37		},
38		packed_field {
39			name: PackedBinaryField2x4b,
40			scalar: BinaryField4b,
41			alpha_idx: 2,
42			mul: (PackedStrategy),
43			square: (PackedStrategy),
44			invert: (PairwiseRecursiveStrategy),
45			mul_alpha: (PackedStrategy),
46			transform: (PackedStrategy),
47		},
48		packed_field {
49			name: PackedBinaryField1x8b,
50			scalar: BinaryField8b,
51			alpha_idx: _,
52			mul: (PairwiseTableStrategy),
53			square: (PairwiseTableStrategy),
54			invert: (PairwiseTableStrategy),
55			mul_alpha: (PairwiseTableStrategy),
56			transform: (PairwiseStrategy),
57		}
58	]
59);