Skip to content

Commit 3692d39

Browse files
committed
WIP: const-ify shuffle arguments
1 parent 6c4f4e1 commit 3692d39

File tree

3 files changed

+31
-17
lines changed

3 files changed

+31
-17
lines changed

crates/core_arch/src/simd_llvm.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,17 @@ extern "platform-intrinsic" {
7979
//pub fn simd_fpow
8080
pub fn simd_fma<T>(a: T, b: T, c: T) -> T;
8181
}
82+
83+
pub macro simd_shuffle2($x:expr, $y:expr, $idx:expr $(,)?) {
84+
{
85+
const IDX: [u32; 2] = $idx;
86+
simd_shuffle2($x, $y, IDX)
87+
}
88+
}
89+
90+
pub macro simd_shuffle32($x:expr, $y:expr, $idx:expr $(,)?) {
91+
{
92+
const IDX: [u32; 32] = $idx;
93+
simd_shuffle32($x, $y, IDX)
94+
}
95+
}

crates/core_arch/src/x86/avx.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2597,7 +2597,7 @@ pub unsafe fn _mm256_castpd256_pd128(a: __m256d) -> __m128d {
25972597
#[stable(feature = "simd_x86", since = "1.27.0")]
25982598
pub unsafe fn _mm256_castsi256_si128(a: __m256i) -> __m128i {
25992599
let a = a.as_i64x4();
2600-
let dst: i64x2 = simd_shuffle2(a, a, [0, 1]);
2600+
let dst: i64x2 = simd_shuffle2!(a, a, [0, 1]);
26012601
transmute(dst)
26022602
}
26032603

crates/core_arch/src/x86/avx2.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -175,127 +175,127 @@ pub unsafe fn _mm256_alignr_epi8<const IMM8: i32>(a: __m256i, b: __m256i) -> __m
175175
let b = b.as_i8x32();
176176

177177
let r: i8x32 = match IMM8 % 16 {
178-
0 => simd_shuffle32(
178+
0 => simd_shuffle32!(
179179
b,
180180
a,
181181
[
182182
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
183183
23, 24, 25, 26, 27, 28, 29, 30, 31,
184184
],
185185
),
186-
1 => simd_shuffle32(
186+
1 => simd_shuffle32!(
187187
b,
188188
a,
189189
[
190190
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 17, 18, 19, 20, 21, 22, 23,
191191
24, 25, 26, 27, 28, 29, 30, 31, 48,
192192
],
193193
),
194-
2 => simd_shuffle32(
194+
2 => simd_shuffle32!(
195195
b,
196196
a,
197197
[
198198
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 33, 18, 19, 20, 21, 22, 23, 24,
199199
25, 26, 27, 28, 29, 30, 31, 48, 49,
200200
],
201201
),
202-
3 => simd_shuffle32(
202+
3 => simd_shuffle32!(
203203
b,
204204
a,
205205
[
206206
3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 33, 34, 19, 20, 21, 22, 23, 24,
207207
25, 26, 27, 28, 29, 30, 31, 48, 49, 50,
208208
],
209209
),
210-
4 => simd_shuffle32(
210+
4 => simd_shuffle32!(
211211
b,
212212
a,
213213
[
214214
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 33, 34, 35, 20, 21, 22, 23, 24, 25,
215215
26, 27, 28, 29, 30, 31, 48, 49, 50, 51,
216216
],
217217
),
218-
5 => simd_shuffle32(
218+
5 => simd_shuffle32!(
219219
b,
220220
a,
221221
[
222222
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 33, 34, 35, 36, 21, 22, 23, 24, 25, 26,
223223
27, 28, 29, 30, 31, 48, 49, 50, 51, 52,
224224
],
225225
),
226-
6 => simd_shuffle32(
226+
6 => simd_shuffle32!(
227227
b,
228228
a,
229229
[
230230
6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 33, 34, 35, 36, 37, 22, 23, 24, 25, 26, 27,
231231
28, 29, 30, 31, 48, 49, 50, 51, 52, 53,
232232
],
233233
),
234-
7 => simd_shuffle32(
234+
7 => simd_shuffle32!(
235235
b,
236236
a,
237237
[
238238
7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 33, 34, 35, 36, 37, 38, 23, 24, 25, 26, 27,
239239
28, 29, 30, 31, 48, 49, 50, 51, 52, 53, 54,
240240
],
241241
),
242-
8 => simd_shuffle32(
242+
8 => simd_shuffle32!(
243243
b,
244244
a,
245245
[
246246
8, 9, 10, 11, 12, 13, 14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 24, 25, 26, 27, 28,
247247
29, 30, 31, 48, 49, 50, 51, 52, 53, 54, 55,
248248
],
249249
),
250-
9 => simd_shuffle32(
250+
9 => simd_shuffle32!(
251251
b,
252252
a,
253253
[
254254
9, 10, 11, 12, 13, 14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 40, 25, 26, 27, 28, 29,
255255
30, 31, 48, 49, 50, 51, 52, 53, 54, 55, 56,
256256
],
257257
),
258-
10 => simd_shuffle32(
258+
10 => simd_shuffle32!(
259259
b,
260260
a,
261261
[
262262
10, 11, 12, 13, 14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 26, 27, 28, 29, 30,
263263
31, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
264264
],
265265
),
266-
11 => simd_shuffle32(
266+
11 => simd_shuffle32!(
267267
b,
268268
a,
269269
[
270270
11, 12, 13, 14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 27, 28, 29, 30, 31,
271271
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
272272
],
273273
),
274-
12 => simd_shuffle32(
274+
12 => simd_shuffle32!(
275275
b,
276276
a,
277277
[
278278
12, 13, 14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 28, 29, 30, 31, 48,
279279
49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
280280
],
281281
),
282-
13 => simd_shuffle32(
282+
13 => simd_shuffle32!(
283283
b,
284284
a,
285285
[
286286
13, 14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 29, 30, 31, 48, 49,
287287
50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
288288
],
289289
),
290-
14 => simd_shuffle32(
290+
14 => simd_shuffle32!(
291291
b,
292292
a,
293293
[
294294
14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 30, 31, 48, 49, 50,
295295
51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
296296
],
297297
),
298-
15 => simd_shuffle32(
298+
15 => simd_shuffle32!(
299299
b,
300300
a,
301301
[

0 commit comments

Comments
 (0)