@@ -72,31 +72,49 @@ inline BasicTable generate_and_rotate_table(BasicTableId id, const size_t table_
72
72
73
73
inline MultiTable get_uint32_xor_table (const MultiTableId id = UINT32_XOR)
74
74
{
75
- const size_t num_entries = (32 + 5 ) / 6 ;
76
- const uint64_t base = 1 << 6 ;
75
+ const size_t TABLE_BIT_SIZE = 6 ;
76
+ const size_t num_entries = 32 / TABLE_BIT_SIZE;
77
+ const uint64_t base = 1 << TABLE_BIT_SIZE;
77
78
MultiTable table (base, base, base, num_entries);
78
79
79
80
table.id = id;
80
81
for (size_t i = 0 ; i < num_entries; ++i) {
81
82
table.slice_sizes .emplace_back (base);
82
- table.basic_table_ids .emplace_back (UINT_XOR_ROTATE0 );
83
+ table.basic_table_ids .emplace_back (UINT_XOR_SLICE_6_ROTATE_0 );
83
84
table.get_table_values .emplace_back (&get_xor_rotate_values_from_key<6 , 0 >);
84
85
}
86
+
87
+ // 32 = 5 * 6 + 2
88
+ // all remaining bits
89
+ const size_t LAST_TABLE_BIT_SIZE = 32 - TABLE_BIT_SIZE * num_entries;
90
+ const size_t LAST_SLICE_SIZE = 1 << LAST_TABLE_BIT_SIZE;
91
+ table.slice_sizes .emplace_back (LAST_SLICE_SIZE);
92
+ table.basic_table_ids .emplace_back (UINT_XOR_SLICE_2_ROTATE_0);
93
+ table.get_table_values .emplace_back (&get_xor_rotate_values_from_key<LAST_TABLE_BIT_SIZE, 0 >);
85
94
return table;
86
95
}
87
96
88
97
inline MultiTable get_uint32_and_table (const MultiTableId id = UINT32_AND)
89
98
{
90
- const size_t num_entries = (32 + 5 ) / 6 ;
91
- const uint64_t base = 1 << 6 ;
99
+ const size_t TABLE_BIT_SIZE = 6 ;
100
+ const size_t num_entries = 32 / TABLE_BIT_SIZE;
101
+ const uint64_t base = 1 << TABLE_BIT_SIZE;
92
102
MultiTable table (base, base, base, num_entries);
93
103
94
104
table.id = id;
95
105
for (size_t i = 0 ; i < num_entries; ++i) {
96
106
table.slice_sizes .emplace_back (base);
97
- table.basic_table_ids .emplace_back (UINT_AND_ROTATE0 );
98
- table.get_table_values .emplace_back (&get_and_rotate_values_from_key<6 , 0 >);
107
+ table.basic_table_ids .emplace_back (UINT_AND_SLICE_6_ROTATE_0 );
108
+ table.get_table_values .emplace_back (&get_and_rotate_values_from_key<TABLE_BIT_SIZE , 0 >);
99
109
}
110
+ // 32 = 5 * 6 + 2
111
+ // all remaining bits
112
+ const size_t LAST_TABLE_BIT_SIZE = 32 - TABLE_BIT_SIZE * num_entries;
113
+ const size_t LAST_SLICE_SIZE = 1 << LAST_TABLE_BIT_SIZE;
114
+ table.slice_sizes .emplace_back (LAST_SLICE_SIZE);
115
+ table.basic_table_ids .emplace_back (UINT_AND_SLICE_2_ROTATE_0);
116
+ table.get_table_values .emplace_back (&get_and_rotate_values_from_key<LAST_TABLE_BIT_SIZE, 0 >);
117
+
100
118
return table;
101
119
}
102
120
0 commit comments