1 | /** |
2 | * This code is released under the |
3 | * Apache License Version 2.0 http://www.apache.org/licenses/. |
4 | * |
5 | * (c) Daniel Lemire, http://fastpforlib.me/en/ |
6 | */ |
7 | #pragma once |
8 | #include <cinttypes> |
9 | #include <string> |
10 | |
11 | namespace duckdb_fastpforlib { |
12 | namespace internal { |
13 | |
14 | // Unpacks 8 uint8_t values |
15 | void __fastunpack0(const uint8_t *__restrict in, uint8_t *__restrict out); |
16 | void __fastunpack1(const uint8_t *__restrict in, uint8_t *__restrict out); |
17 | void __fastunpack2(const uint8_t *__restrict in, uint8_t *__restrict out); |
18 | void __fastunpack3(const uint8_t *__restrict in, uint8_t *__restrict out); |
19 | void __fastunpack4(const uint8_t *__restrict in, uint8_t *__restrict out); |
20 | void __fastunpack5(const uint8_t *__restrict in, uint8_t *__restrict out); |
21 | void __fastunpack6(const uint8_t *__restrict in, uint8_t *__restrict out); |
22 | void __fastunpack7(const uint8_t *__restrict in, uint8_t *__restrict out); |
23 | void __fastunpack8(const uint8_t *__restrict in, uint8_t *__restrict out); |
24 | |
25 | // Unpacks 16 uint16_t values |
26 | void __fastunpack0(const uint16_t *__restrict in, uint16_t *__restrict out); |
27 | void __fastunpack1(const uint16_t *__restrict in, uint16_t *__restrict out); |
28 | void __fastunpack2(const uint16_t *__restrict in, uint16_t *__restrict out); |
29 | void __fastunpack3(const uint16_t *__restrict in, uint16_t *__restrict out); |
30 | void __fastunpack4(const uint16_t *__restrict in, uint16_t *__restrict out); |
31 | void __fastunpack5(const uint16_t *__restrict in, uint16_t *__restrict out); |
32 | void __fastunpack6(const uint16_t *__restrict in, uint16_t *__restrict out); |
33 | void __fastunpack7(const uint16_t *__restrict in, uint16_t *__restrict out); |
34 | void __fastunpack8(const uint16_t *__restrict in, uint16_t *__restrict out); |
35 | void __fastunpack9(const uint16_t *__restrict in, uint16_t *__restrict out); |
36 | void __fastunpack10(const uint16_t *__restrict in, uint16_t *__restrict out); |
37 | void __fastunpack11(const uint16_t *__restrict in, uint16_t *__restrict out); |
38 | void __fastunpack12(const uint16_t *__restrict in, uint16_t *__restrict out); |
39 | void __fastunpack13(const uint16_t *__restrict in, uint16_t *__restrict out); |
40 | void __fastunpack14(const uint16_t *__restrict in, uint16_t *__restrict out); |
41 | void __fastunpack15(const uint16_t *__restrict in, uint16_t *__restrict out); |
42 | void __fastunpack16(const uint16_t *__restrict in, uint16_t *__restrict out); |
43 | |
44 | // Unpacks 32 uint32_t values |
45 | void __fastunpack0(const uint32_t *__restrict in, uint32_t *__restrict out); |
46 | void __fastunpack1(const uint32_t *__restrict in, uint32_t *__restrict out); |
47 | void __fastunpack2(const uint32_t *__restrict in, uint32_t *__restrict out); |
48 | void __fastunpack3(const uint32_t *__restrict in, uint32_t *__restrict out); |
49 | void __fastunpack4(const uint32_t *__restrict in, uint32_t *__restrict out); |
50 | void __fastunpack5(const uint32_t *__restrict in, uint32_t *__restrict out); |
51 | void __fastunpack6(const uint32_t *__restrict in, uint32_t *__restrict out); |
52 | void __fastunpack7(const uint32_t *__restrict in, uint32_t *__restrict out); |
53 | void __fastunpack8(const uint32_t *__restrict in, uint32_t *__restrict out); |
54 | void __fastunpack9(const uint32_t *__restrict in, uint32_t *__restrict out); |
55 | void __fastunpack10(const uint32_t *__restrict in, uint32_t *__restrict out); |
56 | void __fastunpack11(const uint32_t *__restrict in, uint32_t *__restrict out); |
57 | void __fastunpack12(const uint32_t *__restrict in, uint32_t *__restrict out); |
58 | void __fastunpack13(const uint32_t *__restrict in, uint32_t *__restrict out); |
59 | void __fastunpack14(const uint32_t *__restrict in, uint32_t *__restrict out); |
60 | void __fastunpack15(const uint32_t *__restrict in, uint32_t *__restrict out); |
61 | void __fastunpack16(const uint32_t *__restrict in, uint32_t *__restrict out); |
62 | void __fastunpack17(const uint32_t *__restrict in, uint32_t *__restrict out); |
63 | void __fastunpack18(const uint32_t *__restrict in, uint32_t *__restrict out); |
64 | void __fastunpack19(const uint32_t *__restrict in, uint32_t *__restrict out); |
65 | void __fastunpack20(const uint32_t *__restrict in, uint32_t *__restrict out); |
66 | void __fastunpack21(const uint32_t *__restrict in, uint32_t *__restrict out); |
67 | void __fastunpack22(const uint32_t *__restrict in, uint32_t *__restrict out); |
68 | void __fastunpack23(const uint32_t *__restrict in, uint32_t *__restrict out); |
69 | void __fastunpack24(const uint32_t *__restrict in, uint32_t *__restrict out); |
70 | void __fastunpack25(const uint32_t *__restrict in, uint32_t *__restrict out); |
71 | void __fastunpack26(const uint32_t *__restrict in, uint32_t *__restrict out); |
72 | void __fastunpack27(const uint32_t *__restrict in, uint32_t *__restrict out); |
73 | void __fastunpack28(const uint32_t *__restrict in, uint32_t *__restrict out); |
74 | void __fastunpack29(const uint32_t *__restrict in, uint32_t *__restrict out); |
75 | void __fastunpack30(const uint32_t *__restrict in, uint32_t *__restrict out); |
76 | void __fastunpack31(const uint32_t *__restrict in, uint32_t *__restrict out); |
77 | void __fastunpack32(const uint32_t *__restrict in, uint32_t *__restrict out); |
78 | |
79 | // Unpacks 32 uint64_t values |
80 | void __fastunpack0(const uint32_t *__restrict in, uint64_t *__restrict out); |
81 | void __fastunpack1(const uint32_t *__restrict in, uint64_t *__restrict out); |
82 | void __fastunpack2(const uint32_t *__restrict in, uint64_t *__restrict out); |
83 | void __fastunpack3(const uint32_t *__restrict in, uint64_t *__restrict out); |
84 | void __fastunpack4(const uint32_t *__restrict in, uint64_t *__restrict out); |
85 | void __fastunpack5(const uint32_t *__restrict in, uint64_t *__restrict out); |
86 | void __fastunpack6(const uint32_t *__restrict in, uint64_t *__restrict out); |
87 | void __fastunpack7(const uint32_t *__restrict in, uint64_t *__restrict out); |
88 | void __fastunpack8(const uint32_t *__restrict in, uint64_t *__restrict out); |
89 | void __fastunpack9(const uint32_t *__restrict in, uint64_t *__restrict out); |
90 | void __fastunpack10(const uint32_t *__restrict in, uint64_t *__restrict out); |
91 | void __fastunpack11(const uint32_t *__restrict in, uint64_t *__restrict out); |
92 | void __fastunpack12(const uint32_t *__restrict in, uint64_t *__restrict out); |
93 | void __fastunpack13(const uint32_t *__restrict in, uint64_t *__restrict out); |
94 | void __fastunpack14(const uint32_t *__restrict in, uint64_t *__restrict out); |
95 | void __fastunpack15(const uint32_t *__restrict in, uint64_t *__restrict out); |
96 | void __fastunpack16(const uint32_t *__restrict in, uint64_t *__restrict out); |
97 | void __fastunpack17(const uint32_t *__restrict in, uint64_t *__restrict out); |
98 | void __fastunpack18(const uint32_t *__restrict in, uint64_t *__restrict out); |
99 | void __fastunpack19(const uint32_t *__restrict in, uint64_t *__restrict out); |
100 | void __fastunpack20(const uint32_t *__restrict in, uint64_t *__restrict out); |
101 | void __fastunpack21(const uint32_t *__restrict in, uint64_t *__restrict out); |
102 | void __fastunpack22(const uint32_t *__restrict in, uint64_t *__restrict out); |
103 | void __fastunpack23(const uint32_t *__restrict in, uint64_t *__restrict out); |
104 | void __fastunpack24(const uint32_t *__restrict in, uint64_t *__restrict out); |
105 | void __fastunpack25(const uint32_t *__restrict in, uint64_t *__restrict out); |
106 | void __fastunpack26(const uint32_t *__restrict in, uint64_t *__restrict out); |
107 | void __fastunpack27(const uint32_t *__restrict in, uint64_t *__restrict out); |
108 | void __fastunpack28(const uint32_t *__restrict in, uint64_t *__restrict out); |
109 | void __fastunpack29(const uint32_t *__restrict in, uint64_t *__restrict out); |
110 | void __fastunpack30(const uint32_t *__restrict in, uint64_t *__restrict out); |
111 | void __fastunpack31(const uint32_t *__restrict in, uint64_t *__restrict out); |
112 | void __fastunpack32(const uint32_t *__restrict in, uint64_t *__restrict out); |
113 | void __fastunpack33(const uint32_t *__restrict in, uint64_t *__restrict out); |
114 | void __fastunpack34(const uint32_t *__restrict in, uint64_t *__restrict out); |
115 | void __fastunpack35(const uint32_t *__restrict in, uint64_t *__restrict out); |
116 | void __fastunpack36(const uint32_t *__restrict in, uint64_t *__restrict out); |
117 | void __fastunpack37(const uint32_t *__restrict in, uint64_t *__restrict out); |
118 | void __fastunpack38(const uint32_t *__restrict in, uint64_t *__restrict out); |
119 | void __fastunpack39(const uint32_t *__restrict in, uint64_t *__restrict out); |
120 | void __fastunpack40(const uint32_t *__restrict in, uint64_t *__restrict out); |
121 | void __fastunpack41(const uint32_t *__restrict in, uint64_t *__restrict out); |
122 | void __fastunpack42(const uint32_t *__restrict in, uint64_t *__restrict out); |
123 | void __fastunpack43(const uint32_t *__restrict in, uint64_t *__restrict out); |
124 | void __fastunpack44(const uint32_t *__restrict in, uint64_t *__restrict out); |
125 | void __fastunpack45(const uint32_t *__restrict in, uint64_t *__restrict out); |
126 | void __fastunpack46(const uint32_t *__restrict in, uint64_t *__restrict out); |
127 | void __fastunpack47(const uint32_t *__restrict in, uint64_t *__restrict out); |
128 | void __fastunpack48(const uint32_t *__restrict in, uint64_t *__restrict out); |
129 | void __fastunpack49(const uint32_t *__restrict in, uint64_t *__restrict out); |
130 | void __fastunpack50(const uint32_t *__restrict in, uint64_t *__restrict out); |
131 | void __fastunpack51(const uint32_t *__restrict in, uint64_t *__restrict out); |
132 | void __fastunpack52(const uint32_t *__restrict in, uint64_t *__restrict out); |
133 | void __fastunpack53(const uint32_t *__restrict in, uint64_t *__restrict out); |
134 | void __fastunpack54(const uint32_t *__restrict in, uint64_t *__restrict out); |
135 | void __fastunpack55(const uint32_t *__restrict in, uint64_t *__restrict out); |
136 | void __fastunpack56(const uint32_t *__restrict in, uint64_t *__restrict out); |
137 | void __fastunpack57(const uint32_t *__restrict in, uint64_t *__restrict out); |
138 | void __fastunpack58(const uint32_t *__restrict in, uint64_t *__restrict out); |
139 | void __fastunpack59(const uint32_t *__restrict in, uint64_t *__restrict out); |
140 | void __fastunpack60(const uint32_t *__restrict in, uint64_t *__restrict out); |
141 | void __fastunpack61(const uint32_t *__restrict in, uint64_t *__restrict out); |
142 | void __fastunpack62(const uint32_t *__restrict in, uint64_t *__restrict out); |
143 | void __fastunpack63(const uint32_t *__restrict in, uint64_t *__restrict out); |
144 | void __fastunpack64(const uint32_t *__restrict in, uint64_t *__restrict out); |
145 | |
146 | // Packs 8 int8_t values |
147 | void __fastpack0(const uint8_t *__restrict in, uint8_t *__restrict out); |
148 | void __fastpack1(const uint8_t *__restrict in, uint8_t *__restrict out); |
149 | void __fastpack2(const uint8_t *__restrict in, uint8_t *__restrict out); |
150 | void __fastpack3(const uint8_t *__restrict in, uint8_t *__restrict out); |
151 | void __fastpack4(const uint8_t *__restrict in, uint8_t *__restrict out); |
152 | void __fastpack5(const uint8_t *__restrict in, uint8_t *__restrict out); |
153 | void __fastpack6(const uint8_t *__restrict in, uint8_t *__restrict out); |
154 | void __fastpack7(const uint8_t *__restrict in, uint8_t *__restrict out); |
155 | void __fastpack8(const uint8_t *__restrict in, uint8_t *__restrict out); |
156 | |
157 | // Packs 16 int16_t values |
158 | void __fastpack0(const uint16_t *__restrict in, uint16_t *__restrict out); |
159 | void __fastpack1(const uint16_t *__restrict in, uint16_t *__restrict out); |
160 | void __fastpack2(const uint16_t *__restrict in, uint16_t *__restrict out); |
161 | void __fastpack3(const uint16_t *__restrict in, uint16_t *__restrict out); |
162 | void __fastpack4(const uint16_t *__restrict in, uint16_t *__restrict out); |
163 | void __fastpack5(const uint16_t *__restrict in, uint16_t *__restrict out); |
164 | void __fastpack6(const uint16_t *__restrict in, uint16_t *__restrict out); |
165 | void __fastpack7(const uint16_t *__restrict in, uint16_t *__restrict out); |
166 | void __fastpack8(const uint16_t *__restrict in, uint16_t *__restrict out); |
167 | void __fastpack9(const uint16_t *__restrict in, uint16_t *__restrict out); |
168 | void __fastpack10(const uint16_t *__restrict in, uint16_t *__restrict out); |
169 | void __fastpack11(const uint16_t *__restrict in, uint16_t *__restrict out); |
170 | void __fastpack12(const uint16_t *__restrict in, uint16_t *__restrict out); |
171 | void __fastpack13(const uint16_t *__restrict in, uint16_t *__restrict out); |
172 | void __fastpack14(const uint16_t *__restrict in, uint16_t *__restrict out); |
173 | void __fastpack15(const uint16_t *__restrict in, uint16_t *__restrict out); |
174 | void __fastpack16(const uint16_t *__restrict in, uint16_t *__restrict out); |
175 | |
176 | // Packs 32 int32_t values |
177 | void __fastpack0(const uint32_t *__restrict in, uint32_t *__restrict out); |
178 | void __fastpack1(const uint32_t *__restrict in, uint32_t *__restrict out); |
179 | void __fastpack2(const uint32_t *__restrict in, uint32_t *__restrict out); |
180 | void __fastpack3(const uint32_t *__restrict in, uint32_t *__restrict out); |
181 | void __fastpack4(const uint32_t *__restrict in, uint32_t *__restrict out); |
182 | void __fastpack5(const uint32_t *__restrict in, uint32_t *__restrict out); |
183 | void __fastpack6(const uint32_t *__restrict in, uint32_t *__restrict out); |
184 | void __fastpack7(const uint32_t *__restrict in, uint32_t *__restrict out); |
185 | void __fastpack8(const uint32_t *__restrict in, uint32_t *__restrict out); |
186 | void __fastpack9(const uint32_t *__restrict in, uint32_t *__restrict out); |
187 | void __fastpack10(const uint32_t *__restrict in, uint32_t *__restrict out); |
188 | void __fastpack11(const uint32_t *__restrict in, uint32_t *__restrict out); |
189 | void __fastpack12(const uint32_t *__restrict in, uint32_t *__restrict out); |
190 | void __fastpack13(const uint32_t *__restrict in, uint32_t *__restrict out); |
191 | void __fastpack14(const uint32_t *__restrict in, uint32_t *__restrict out); |
192 | void __fastpack15(const uint32_t *__restrict in, uint32_t *__restrict out); |
193 | void __fastpack16(const uint32_t *__restrict in, uint32_t *__restrict out); |
194 | void __fastpack17(const uint32_t *__restrict in, uint32_t *__restrict out); |
195 | void __fastpack18(const uint32_t *__restrict in, uint32_t *__restrict out); |
196 | void __fastpack19(const uint32_t *__restrict in, uint32_t *__restrict out); |
197 | void __fastpack20(const uint32_t *__restrict in, uint32_t *__restrict out); |
198 | void __fastpack21(const uint32_t *__restrict in, uint32_t *__restrict out); |
199 | void __fastpack22(const uint32_t *__restrict in, uint32_t *__restrict out); |
200 | void __fastpack23(const uint32_t *__restrict in, uint32_t *__restrict out); |
201 | void __fastpack24(const uint32_t *__restrict in, uint32_t *__restrict out); |
202 | void __fastpack25(const uint32_t *__restrict in, uint32_t *__restrict out); |
203 | void __fastpack26(const uint32_t *__restrict in, uint32_t *__restrict out); |
204 | void __fastpack27(const uint32_t *__restrict in, uint32_t *__restrict out); |
205 | void __fastpack28(const uint32_t *__restrict in, uint32_t *__restrict out); |
206 | void __fastpack29(const uint32_t *__restrict in, uint32_t *__restrict out); |
207 | void __fastpack30(const uint32_t *__restrict in, uint32_t *__restrict out); |
208 | void __fastpack31(const uint32_t *__restrict in, uint32_t *__restrict out); |
209 | void __fastpack32(const uint32_t *__restrict in, uint32_t *__restrict out); |
210 | |
211 | // Packs 32 int64_t values |
212 | void __fastpack0(const uint64_t *__restrict in, uint32_t *__restrict out); |
213 | void __fastpack1(const uint64_t *__restrict in, uint32_t *__restrict out); |
214 | void __fastpack2(const uint64_t *__restrict in, uint32_t *__restrict out); |
215 | void __fastpack3(const uint64_t *__restrict in, uint32_t *__restrict out); |
216 | void __fastpack4(const uint64_t *__restrict in, uint32_t *__restrict out); |
217 | void __fastpack5(const uint64_t *__restrict in, uint32_t *__restrict out); |
218 | void __fastpack6(const uint64_t *__restrict in, uint32_t *__restrict out); |
219 | void __fastpack7(const uint64_t *__restrict in, uint32_t *__restrict out); |
220 | void __fastpack8(const uint64_t *__restrict in, uint32_t *__restrict out); |
221 | void __fastpack9(const uint64_t *__restrict in, uint32_t *__restrict out); |
222 | void __fastpack10(const uint64_t *__restrict in, uint32_t *__restrict out); |
223 | void __fastpack11(const uint64_t *__restrict in, uint32_t *__restrict out); |
224 | void __fastpack12(const uint64_t *__restrict in, uint32_t *__restrict out); |
225 | void __fastpack13(const uint64_t *__restrict in, uint32_t *__restrict out); |
226 | void __fastpack14(const uint64_t *__restrict in, uint32_t *__restrict out); |
227 | void __fastpack15(const uint64_t *__restrict in, uint32_t *__restrict out); |
228 | void __fastpack16(const uint64_t *__restrict in, uint32_t *__restrict out); |
229 | void __fastpack17(const uint64_t *__restrict in, uint32_t *__restrict out); |
230 | void __fastpack18(const uint64_t *__restrict in, uint32_t *__restrict out); |
231 | void __fastpack19(const uint64_t *__restrict in, uint32_t *__restrict out); |
232 | void __fastpack20(const uint64_t *__restrict in, uint32_t *__restrict out); |
233 | void __fastpack21(const uint64_t *__restrict in, uint32_t *__restrict out); |
234 | void __fastpack22(const uint64_t *__restrict in, uint32_t *__restrict out); |
235 | void __fastpack23(const uint64_t *__restrict in, uint32_t *__restrict out); |
236 | void __fastpack24(const uint64_t *__restrict in, uint32_t *__restrict out); |
237 | void __fastpack25(const uint64_t *__restrict in, uint32_t *__restrict out); |
238 | void __fastpack26(const uint64_t *__restrict in, uint32_t *__restrict out); |
239 | void __fastpack27(const uint64_t *__restrict in, uint32_t *__restrict out); |
240 | void __fastpack28(const uint64_t *__restrict in, uint32_t *__restrict out); |
241 | void __fastpack29(const uint64_t *__restrict in, uint32_t *__restrict out); |
242 | void __fastpack30(const uint64_t *__restrict in, uint32_t *__restrict out); |
243 | void __fastpack31(const uint64_t *__restrict in, uint32_t *__restrict out); |
244 | void __fastpack32(const uint64_t *__restrict in, uint32_t *__restrict out); |
245 | void __fastpack33(const uint64_t *__restrict in, uint32_t *__restrict out); |
246 | void __fastpack34(const uint64_t *__restrict in, uint32_t *__restrict out); |
247 | void __fastpack35(const uint64_t *__restrict in, uint32_t *__restrict out); |
248 | void __fastpack36(const uint64_t *__restrict in, uint32_t *__restrict out); |
249 | void __fastpack37(const uint64_t *__restrict in, uint32_t *__restrict out); |
250 | void __fastpack38(const uint64_t *__restrict in, uint32_t *__restrict out); |
251 | void __fastpack39(const uint64_t *__restrict in, uint32_t *__restrict out); |
252 | void __fastpack40(const uint64_t *__restrict in, uint32_t *__restrict out); |
253 | void __fastpack41(const uint64_t *__restrict in, uint32_t *__restrict out); |
254 | void __fastpack42(const uint64_t *__restrict in, uint32_t *__restrict out); |
255 | void __fastpack43(const uint64_t *__restrict in, uint32_t *__restrict out); |
256 | void __fastpack44(const uint64_t *__restrict in, uint32_t *__restrict out); |
257 | void __fastpack45(const uint64_t *__restrict in, uint32_t *__restrict out); |
258 | void __fastpack46(const uint64_t *__restrict in, uint32_t *__restrict out); |
259 | void __fastpack47(const uint64_t *__restrict in, uint32_t *__restrict out); |
260 | void __fastpack48(const uint64_t *__restrict in, uint32_t *__restrict out); |
261 | void __fastpack49(const uint64_t *__restrict in, uint32_t *__restrict out); |
262 | void __fastpack50(const uint64_t *__restrict in, uint32_t *__restrict out); |
263 | void __fastpack51(const uint64_t *__restrict in, uint32_t *__restrict out); |
264 | void __fastpack52(const uint64_t *__restrict in, uint32_t *__restrict out); |
265 | void __fastpack53(const uint64_t *__restrict in, uint32_t *__restrict out); |
266 | void __fastpack54(const uint64_t *__restrict in, uint32_t *__restrict out); |
267 | void __fastpack55(const uint64_t *__restrict in, uint32_t *__restrict out); |
268 | void __fastpack56(const uint64_t *__restrict in, uint32_t *__restrict out); |
269 | void __fastpack57(const uint64_t *__restrict in, uint32_t *__restrict out); |
270 | void __fastpack58(const uint64_t *__restrict in, uint32_t *__restrict out); |
271 | void __fastpack59(const uint64_t *__restrict in, uint32_t *__restrict out); |
272 | void __fastpack60(const uint64_t *__restrict in, uint32_t *__restrict out); |
273 | void __fastpack61(const uint64_t *__restrict in, uint32_t *__restrict out); |
274 | void __fastpack62(const uint64_t *__restrict in, uint32_t *__restrict out); |
275 | void __fastpack63(const uint64_t *__restrict in, uint32_t *__restrict out); |
276 | void __fastpack64(const uint64_t *__restrict in, uint32_t *__restrict out); |
277 | } // namespace internal |
278 | } // namespace duckdb_fastpforlib |
279 | |