Skip to content

Commit 7d7124a

Browse files
committed
Make avx512vpopcntdq functions const
1 parent b6db22d commit 7d7124a

File tree

1 file changed

+55
-36
lines changed

1 file changed

+55
-36
lines changed

crates/core_arch/src/x86/avx512vpopcntdq.rs

Lines changed: 55 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ use stdarch_test::assert_instr;
2626
#[target_feature(enable = "avx512vpopcntdq")]
2727
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2828
#[cfg_attr(test, assert_instr(vpopcntd))]
29-
pub fn _mm512_popcnt_epi32(a: __m512i) -> __m512i {
29+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30+
pub const fn _mm512_popcnt_epi32(a: __m512i) -> __m512i {
3031
unsafe { transmute(simd_ctpop(a.as_i32x16())) }
3132
}
3233

@@ -40,7 +41,8 @@ pub fn _mm512_popcnt_epi32(a: __m512i) -> __m512i {
4041
#[target_feature(enable = "avx512vpopcntdq")]
4142
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4243
#[cfg_attr(test, assert_instr(vpopcntd))]
43-
pub fn _mm512_maskz_popcnt_epi32(k: __mmask16, a: __m512i) -> __m512i {
44+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
45+
pub const fn _mm512_maskz_popcnt_epi32(k: __mmask16, a: __m512i) -> __m512i {
4446
unsafe {
4547
transmute(simd_select_bitmask(
4648
k,
@@ -60,7 +62,8 @@ pub fn _mm512_maskz_popcnt_epi32(k: __mmask16, a: __m512i) -> __m512i {
6062
#[target_feature(enable = "avx512vpopcntdq")]
6163
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6264
#[cfg_attr(test, assert_instr(vpopcntd))]
63-
pub fn _mm512_mask_popcnt_epi32(src: __m512i, k: __mmask16, a: __m512i) -> __m512i {
65+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
66+
pub const fn _mm512_mask_popcnt_epi32(src: __m512i, k: __mmask16, a: __m512i) -> __m512i {
6467
unsafe {
6568
transmute(simd_select_bitmask(
6669
k,
@@ -77,7 +80,8 @@ pub fn _mm512_mask_popcnt_epi32(src: __m512i, k: __mmask16, a: __m512i) -> __m51
7780
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
7881
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7982
#[cfg_attr(test, assert_instr(vpopcntd))]
80-
pub fn _mm256_popcnt_epi32(a: __m256i) -> __m256i {
83+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
84+
pub const fn _mm256_popcnt_epi32(a: __m256i) -> __m256i {
8185
unsafe { transmute(simd_ctpop(a.as_i32x8())) }
8286
}
8387

@@ -91,7 +95,8 @@ pub fn _mm256_popcnt_epi32(a: __m256i) -> __m256i {
9195
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
9296
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9397
#[cfg_attr(test, assert_instr(vpopcntd))]
94-
pub fn _mm256_maskz_popcnt_epi32(k: __mmask8, a: __m256i) -> __m256i {
98+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
99+
pub const fn _mm256_maskz_popcnt_epi32(k: __mmask8, a: __m256i) -> __m256i {
95100
unsafe {
96101
transmute(simd_select_bitmask(
97102
k,
@@ -111,7 +116,8 @@ pub fn _mm256_maskz_popcnt_epi32(k: __mmask8, a: __m256i) -> __m256i {
111116
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
112117
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
113118
#[cfg_attr(test, assert_instr(vpopcntd))]
114-
pub fn _mm256_mask_popcnt_epi32(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
119+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
120+
pub const fn _mm256_mask_popcnt_epi32(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
115121
unsafe {
116122
transmute(simd_select_bitmask(
117123
k,
@@ -128,7 +134,8 @@ pub fn _mm256_mask_popcnt_epi32(src: __m256i, k: __mmask8, a: __m256i) -> __m256
128134
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
129135
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
130136
#[cfg_attr(test, assert_instr(vpopcntd))]
131-
pub fn _mm_popcnt_epi32(a: __m128i) -> __m128i {
137+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
138+
pub const fn _mm_popcnt_epi32(a: __m128i) -> __m128i {
132139
unsafe { transmute(simd_ctpop(a.as_i32x4())) }
133140
}
134141

@@ -142,7 +149,8 @@ pub fn _mm_popcnt_epi32(a: __m128i) -> __m128i {
142149
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
143150
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
144151
#[cfg_attr(test, assert_instr(vpopcntd))]
145-
pub fn _mm_maskz_popcnt_epi32(k: __mmask8, a: __m128i) -> __m128i {
152+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
153+
pub const fn _mm_maskz_popcnt_epi32(k: __mmask8, a: __m128i) -> __m128i {
146154
unsafe {
147155
transmute(simd_select_bitmask(
148156
k,
@@ -162,7 +170,8 @@ pub fn _mm_maskz_popcnt_epi32(k: __mmask8, a: __m128i) -> __m128i {
162170
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
163171
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
164172
#[cfg_attr(test, assert_instr(vpopcntd))]
165-
pub fn _mm_mask_popcnt_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
173+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
174+
pub const fn _mm_mask_popcnt_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
166175
unsafe {
167176
transmute(simd_select_bitmask(
168177
k,
@@ -179,7 +188,8 @@ pub fn _mm_mask_popcnt_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
179188
#[target_feature(enable = "avx512vpopcntdq")]
180189
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
181190
#[cfg_attr(test, assert_instr(vpopcntq))]
182-
pub fn _mm512_popcnt_epi64(a: __m512i) -> __m512i {
191+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
192+
pub const fn _mm512_popcnt_epi64(a: __m512i) -> __m512i {
183193
unsafe { transmute(simd_ctpop(a.as_i64x8())) }
184194
}
185195

@@ -193,7 +203,8 @@ pub fn _mm512_popcnt_epi64(a: __m512i) -> __m512i {
193203
#[target_feature(enable = "avx512vpopcntdq")]
194204
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
195205
#[cfg_attr(test, assert_instr(vpopcntq))]
196-
pub fn _mm512_maskz_popcnt_epi64(k: __mmask8, a: __m512i) -> __m512i {
206+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
207+
pub const fn _mm512_maskz_popcnt_epi64(k: __mmask8, a: __m512i) -> __m512i {
197208
unsafe {
198209
transmute(simd_select_bitmask(
199210
k,
@@ -213,7 +224,8 @@ pub fn _mm512_maskz_popcnt_epi64(k: __mmask8, a: __m512i) -> __m512i {
213224
#[target_feature(enable = "avx512vpopcntdq")]
214225
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
215226
#[cfg_attr(test, assert_instr(vpopcntq))]
216-
pub fn _mm512_mask_popcnt_epi64(src: __m512i, k: __mmask8, a: __m512i) -> __m512i {
227+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
228+
pub const fn _mm512_mask_popcnt_epi64(src: __m512i, k: __mmask8, a: __m512i) -> __m512i {
217229
unsafe {
218230
transmute(simd_select_bitmask(
219231
k,
@@ -230,7 +242,8 @@ pub fn _mm512_mask_popcnt_epi64(src: __m512i, k: __mmask8, a: __m512i) -> __m512
230242
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
231243
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
232244
#[cfg_attr(test, assert_instr(vpopcntq))]
233-
pub fn _mm256_popcnt_epi64(a: __m256i) -> __m256i {
245+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
246+
pub const fn _mm256_popcnt_epi64(a: __m256i) -> __m256i {
234247
unsafe { transmute(simd_ctpop(a.as_i64x4())) }
235248
}
236249

@@ -244,7 +257,8 @@ pub fn _mm256_popcnt_epi64(a: __m256i) -> __m256i {
244257
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
245258
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
246259
#[cfg_attr(test, assert_instr(vpopcntq))]
247-
pub fn _mm256_maskz_popcnt_epi64(k: __mmask8, a: __m256i) -> __m256i {
260+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
261+
pub const fn _mm256_maskz_popcnt_epi64(k: __mmask8, a: __m256i) -> __m256i {
248262
unsafe {
249263
transmute(simd_select_bitmask(
250264
k,
@@ -264,7 +278,8 @@ pub fn _mm256_maskz_popcnt_epi64(k: __mmask8, a: __m256i) -> __m256i {
264278
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
265279
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
266280
#[cfg_attr(test, assert_instr(vpopcntq))]
267-
pub fn _mm256_mask_popcnt_epi64(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
281+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
282+
pub const fn _mm256_mask_popcnt_epi64(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
268283
unsafe {
269284
transmute(simd_select_bitmask(
270285
k,
@@ -281,7 +296,8 @@ pub fn _mm256_mask_popcnt_epi64(src: __m256i, k: __mmask8, a: __m256i) -> __m256
281296
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
282297
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
283298
#[cfg_attr(test, assert_instr(vpopcntq))]
284-
pub fn _mm_popcnt_epi64(a: __m128i) -> __m128i {
299+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
300+
pub const fn _mm_popcnt_epi64(a: __m128i) -> __m128i {
285301
unsafe { transmute(simd_ctpop(a.as_i64x2())) }
286302
}
287303

@@ -295,7 +311,8 @@ pub fn _mm_popcnt_epi64(a: __m128i) -> __m128i {
295311
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
296312
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
297313
#[cfg_attr(test, assert_instr(vpopcntq))]
298-
pub fn _mm_maskz_popcnt_epi64(k: __mmask8, a: __m128i) -> __m128i {
314+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
315+
pub const fn _mm_maskz_popcnt_epi64(k: __mmask8, a: __m128i) -> __m128i {
299316
unsafe {
300317
transmute(simd_select_bitmask(
301318
k,
@@ -315,7 +332,8 @@ pub fn _mm_maskz_popcnt_epi64(k: __mmask8, a: __m128i) -> __m128i {
315332
#[target_feature(enable = "avx512vpopcntdq,avx512vl")]
316333
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
317334
#[cfg_attr(test, assert_instr(vpopcntq))]
318-
pub fn _mm_mask_popcnt_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
335+
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
336+
pub const fn _mm_mask_popcnt_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
319337
unsafe {
320338
transmute(simd_select_bitmask(
321339
k,
@@ -327,12 +345,13 @@ pub fn _mm_mask_popcnt_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
327345

328346
#[cfg(test)]
329347
mod tests {
348+
use crate::core_arch::assert_eq_const as assert_eq;
330349
use stdarch_test::simd_test;
331350

332351
use crate::core_arch::x86::*;
333352

334353
#[simd_test(enable = "avx512vpopcntdq,avx512f")]
335-
unsafe fn test_mm512_popcnt_epi32() {
354+
const unsafe fn test_mm512_popcnt_epi32() {
336355
let test_data = _mm512_set_epi32(
337356
0,
338357
1,
@@ -358,7 +377,7 @@ mod tests {
358377
}
359378

360379
#[simd_test(enable = "avx512vpopcntdq,avx512f")]
361-
unsafe fn test_mm512_mask_popcnt_epi32() {
380+
const unsafe fn test_mm512_mask_popcnt_epi32() {
362381
let test_data = _mm512_set_epi32(
363382
0,
364383
1,
@@ -401,7 +420,7 @@ mod tests {
401420
}
402421

403422
#[simd_test(enable = "avx512vpopcntdq,avx512f")]
404-
unsafe fn test_mm512_maskz_popcnt_epi32() {
423+
const unsafe fn test_mm512_maskz_popcnt_epi32() {
405424
let test_data = _mm512_set_epi32(
406425
0,
407426
1,
@@ -427,15 +446,15 @@ mod tests {
427446
}
428447

429448
#[simd_test(enable = "avx512vpopcntdq,avx512f,avx512vl")]
430-
unsafe fn test_mm256_popcnt_epi32() {
449+
const unsafe fn test_mm256_popcnt_epi32() {
431450
let test_data = _mm256_set_epi32(0, 1, -1, 2, 7, 0xFF_FE, 0x7F_FF_FF_FF, -100);
432451
let actual_result = _mm256_popcnt_epi32(test_data);
433452
let reference_result = _mm256_set_epi32(0, 1, 32, 1, 3, 15, 31, 28);
434453
assert_eq_m256i(actual_result, reference_result);
435454
}
436455

437456
#[simd_test(enable = "avx512vpopcntdq,avx512f,avx512vl")]
438-
unsafe fn test_mm256_mask_popcnt_epi32() {
457+
const unsafe fn test_mm256_mask_popcnt_epi32() {
439458
let test_data = _mm256_set_epi32(0, 1, -1, 2, 7, 0xFF_FE, 0x7F_FF_FF_FF, -100);
440459
let mask = 0xF0;
441460
let actual_result = _mm256_mask_popcnt_epi32(test_data, mask, test_data);
@@ -444,7 +463,7 @@ mod tests {
444463
}
445464

446465
#[simd_test(enable = "avx512vpopcntdq,avx512f,avx512vl")]
447-
unsafe fn test_mm256_maskz_popcnt_epi32() {
466+
const unsafe fn test_mm256_maskz_popcnt_epi32() {
448467
let test_data = _mm256_set_epi32(0, 1, -1, 2, 7, 0xFF_FE, 0x7F_FF_FF_FF, -100);
449468
let mask = 0xF0;
450469
let actual_result = _mm256_maskz_popcnt_epi32(mask, test_data);
@@ -453,15 +472,15 @@ mod tests {
453472
}
454473

455474
#[simd_test(enable = "avx512vpopcntdq,avx512f,avx512vl")]
456-
unsafe fn test_mm_popcnt_epi32() {
475+
const unsafe fn test_mm_popcnt_epi32() {
457476
let test_data = _mm_set_epi32(0, 1, -1, -100);
458477
let actual_result = _mm_popcnt_epi32(test_data);
459478
let reference_result = _mm_set_epi32(0, 1, 32, 28);
460479
assert_eq_m128i(actual_result, reference_result);
461480
}
462481

463482
#[simd_test(enable = "avx512vpopcntdq,avx512f,avx512vl")]
464-
unsafe fn test_mm_mask_popcnt_epi32() {
483+
const unsafe fn test_mm_mask_popcnt_epi32() {
465484
let test_data = _mm_set_epi32(0, 1, -1, -100);
466485
let mask = 0xE;
467486
let actual_result = _mm_mask_popcnt_epi32(test_data, mask, test_data);
@@ -470,7 +489,7 @@ mod tests {
470489
}
471490

472491
#[simd_test(enable = "avx512vpopcntdq,avx512f,avx512vl")]
473-
unsafe fn test_mm_maskz_popcnt_epi32() {
492+
const unsafe fn test_mm_maskz_popcnt_epi32() {
474493
let test_data = _mm_set_epi32(0, 1, -1, -100);
475494
let mask = 0xE;
476495
let actual_result = _mm_maskz_popcnt_epi32(mask, test_data);
@@ -479,15 +498,15 @@ mod tests {
479498
}
480499

481500
#[simd_test(enable = "avx512vpopcntdq,avx512f")]
482-
unsafe fn test_mm512_popcnt_epi64() {
501+
const unsafe fn test_mm512_popcnt_epi64() {
483502
let test_data = _mm512_set_epi64(0, 1, -1, 2, 7, 0xFF_FE, 0x7F_FF_FF_FF_FF_FF_FF_FF, -100);
484503
let actual_result = _mm512_popcnt_epi64(test_data);
485504
let reference_result = _mm512_set_epi64(0, 1, 64, 1, 3, 15, 63, 60);
486505
assert_eq_m512i(actual_result, reference_result);
487506
}
488507

489508
#[simd_test(enable = "avx512vpopcntdq,avx512f")]
490-
unsafe fn test_mm512_mask_popcnt_epi64() {
509+
const unsafe fn test_mm512_mask_popcnt_epi64() {
491510
let test_data = _mm512_set_epi64(0, 1, -1, 2, 7, 0xFF_FE, 0x7F_FF_FF_FF_FF_FF_FF_FF, -100);
492511
let mask = 0xF0;
493512
let actual_result = _mm512_mask_popcnt_epi64(test_data, mask, test_data);
@@ -497,7 +516,7 @@ mod tests {
497516
}
498517

499518
#[simd_test(enable = "avx512vpopcntdq,avx512f")]
500-
unsafe fn test_mm512_maskz_popcnt_epi64() {
519+
const unsafe fn test_mm512_maskz_popcnt_epi64() {
501520
let test_data = _mm512_set_epi64(0, 1, -1, 2, 7, 0xFF_FE, 0x7F_FF_FF_FF_FF_FF_FF_FF, -100);
502521
let mask = 0xF0;
503522
let actual_result = _mm512_maskz_popcnt_epi64(mask, test_data);
@@ -506,15 +525,15 @@ mod tests {
506525
}
507526

508527
#[simd_test(enable = "avx512vpopcntdq,avx512vl")]
509-
unsafe fn test_mm256_popcnt_epi64() {
528+
const unsafe fn test_mm256_popcnt_epi64() {
510529
let test_data = _mm256_set_epi64x(0, 1, -1, -100);
511530
let actual_result = _mm256_popcnt_epi64(test_data);
512531
let reference_result = _mm256_set_epi64x(0, 1, 64, 60);
513532
assert_eq_m256i(actual_result, reference_result);
514533
}
515534

516535
#[simd_test(enable = "avx512vpopcntdq,avx512vl")]
517-
unsafe fn test_mm256_mask_popcnt_epi64() {
536+
const unsafe fn test_mm256_mask_popcnt_epi64() {
518537
let test_data = _mm256_set_epi64x(0, 1, -1, -100);
519538
let mask = 0xE;
520539
let actual_result = _mm256_mask_popcnt_epi64(test_data, mask, test_data);
@@ -523,7 +542,7 @@ mod tests {
523542
}
524543

525544
#[simd_test(enable = "avx512vpopcntdq,avx512vl")]
526-
unsafe fn test_mm256_maskz_popcnt_epi64() {
545+
const unsafe fn test_mm256_maskz_popcnt_epi64() {
527546
let test_data = _mm256_set_epi64x(0, 1, -1, -100);
528547
let mask = 0xE;
529548
let actual_result = _mm256_maskz_popcnt_epi64(mask, test_data);
@@ -532,7 +551,7 @@ mod tests {
532551
}
533552

534553
#[simd_test(enable = "avx512vpopcntdq,avx512vl")]
535-
unsafe fn test_mm_popcnt_epi64() {
554+
const unsafe fn test_mm_popcnt_epi64() {
536555
let test_data = _mm_set_epi64x(0, 1);
537556
let actual_result = _mm_popcnt_epi64(test_data);
538557
let reference_result = _mm_set_epi64x(0, 1);
@@ -544,7 +563,7 @@ mod tests {
544563
}
545564

546565
#[simd_test(enable = "avx512vpopcntdq,avx512vl")]
547-
unsafe fn test_mm_mask_popcnt_epi64() {
566+
const unsafe fn test_mm_mask_popcnt_epi64() {
548567
let test_data = _mm_set_epi64x(0, -100);
549568
let mask = 0x2;
550569
let actual_result = _mm_mask_popcnt_epi64(test_data, mask, test_data);
@@ -558,7 +577,7 @@ mod tests {
558577
}
559578

560579
#[simd_test(enable = "avx512vpopcntdq,avx512vl")]
561-
unsafe fn test_mm_maskz_popcnt_epi64() {
580+
const unsafe fn test_mm_maskz_popcnt_epi64() {
562581
let test_data = _mm_set_epi64x(0, 1);
563582
let mask = 0x2;
564583
let actual_result = _mm_maskz_popcnt_epi64(mask, test_data);

0 commit comments

Comments
 (0)