Skip to content

Commit 6a752f8

Browse files
committed
Make sse4.1 functions const
1 parent 96de4b9 commit 6a752f8

File tree

2 files changed

+80
-40
lines changed

2 files changed

+80
-40
lines changed

crates/core_arch/src/x86/sse41.rs

Lines changed: 76 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ pub const _MM_FROUND_NEARBYINT: i32 = _MM_FROUND_NO_EXC | _MM_FROUND_CUR_DIRECTI
5959
#[target_feature(enable = "sse4.1")]
6060
#[cfg_attr(test, assert_instr(pblendvb))]
6161
#[stable(feature = "simd_x86", since = "1.27.0")]
62-
pub fn _mm_blendv_epi8(a: __m128i, b: __m128i, mask: __m128i) -> __m128i {
62+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
63+
pub const fn _mm_blendv_epi8(a: __m128i, b: __m128i, mask: __m128i) -> __m128i {
6364
unsafe {
6465
let mask: i8x16 = simd_lt(mask.as_i8x16(), i8x16::ZERO);
6566
transmute(simd_select(mask, b.as_i8x16(), a.as_i8x16()))
@@ -78,7 +79,8 @@ pub fn _mm_blendv_epi8(a: __m128i, b: __m128i, mask: __m128i) -> __m128i {
7879
#[cfg_attr(test, assert_instr(pblendw, IMM8 = 0xB1))]
7980
#[rustc_legacy_const_generics(2)]
8081
#[stable(feature = "simd_x86", since = "1.27.0")]
81-
pub fn _mm_blend_epi16<const IMM8: i32>(a: __m128i, b: __m128i) -> __m128i {
82+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
83+
pub const fn _mm_blend_epi16<const IMM8: i32>(a: __m128i, b: __m128i) -> __m128i {
8284
static_assert_uimm_bits!(IMM8, 8);
8385
unsafe {
8486
transmute::<i16x8, _>(simd_shuffle!(
@@ -106,7 +108,8 @@ pub fn _mm_blend_epi16<const IMM8: i32>(a: __m128i, b: __m128i) -> __m128i {
106108
#[target_feature(enable = "sse4.1")]
107109
#[cfg_attr(test, assert_instr(blendvpd))]
108110
#[stable(feature = "simd_x86", since = "1.27.0")]
109-
pub fn _mm_blendv_pd(a: __m128d, b: __m128d, mask: __m128d) -> __m128d {
111+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
112+
pub const fn _mm_blendv_pd(a: __m128d, b: __m128d, mask: __m128d) -> __m128d {
110113
unsafe {
111114
let mask: i64x2 = simd_lt(transmute::<_, i64x2>(mask), i64x2::ZERO);
112115
transmute(simd_select(mask, b.as_f64x2(), a.as_f64x2()))
@@ -121,7 +124,8 @@ pub fn _mm_blendv_pd(a: __m128d, b: __m128d, mask: __m128d) -> __m128d {
121124
#[target_feature(enable = "sse4.1")]
122125
#[cfg_attr(test, assert_instr(blendvps))]
123126
#[stable(feature = "simd_x86", since = "1.27.0")]
124-
pub fn _mm_blendv_ps(a: __m128, b: __m128, mask: __m128) -> __m128 {
127+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
128+
pub const fn _mm_blendv_ps(a: __m128, b: __m128, mask: __m128) -> __m128 {
125129
unsafe {
126130
let mask: i32x4 = simd_lt(transmute::<_, i32x4>(mask), i32x4::ZERO);
127131
transmute(simd_select(mask, b.as_f32x4(), a.as_f32x4()))
@@ -140,7 +144,8 @@ pub fn _mm_blendv_ps(a: __m128, b: __m128, mask: __m128) -> __m128 {
140144
#[cfg_attr(test, assert_instr(blendps, IMM2 = 0b10))]
141145
#[rustc_legacy_const_generics(2)]
142146
#[stable(feature = "simd_x86", since = "1.27.0")]
143-
pub fn _mm_blend_pd<const IMM2: i32>(a: __m128d, b: __m128d) -> __m128d {
147+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
148+
pub const fn _mm_blend_pd<const IMM2: i32>(a: __m128d, b: __m128d) -> __m128d {
144149
static_assert_uimm_bits!(IMM2, 2);
145150
unsafe {
146151
transmute::<f64x2, _>(simd_shuffle!(
@@ -160,7 +165,8 @@ pub fn _mm_blend_pd<const IMM2: i32>(a: __m128d, b: __m128d) -> __m128d {
160165
#[cfg_attr(test, assert_instr(blendps, IMM4 = 0b0101))]
161166
#[rustc_legacy_const_generics(2)]
162167
#[stable(feature = "simd_x86", since = "1.27.0")]
163-
pub fn _mm_blend_ps<const IMM4: i32>(a: __m128, b: __m128) -> __m128 {
168+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
169+
pub const fn _mm_blend_ps<const IMM4: i32>(a: __m128, b: __m128) -> __m128 {
164170
static_assert_uimm_bits!(IMM4, 4);
165171
unsafe {
166172
transmute::<f32x4, _>(simd_shuffle!(
@@ -207,7 +213,8 @@ pub fn _mm_blend_ps<const IMM4: i32>(a: __m128, b: __m128) -> __m128 {
207213
#[cfg_attr(test, assert_instr(extractps, IMM8 = 0))]
208214
#[rustc_legacy_const_generics(1)]
209215
#[stable(feature = "simd_x86", since = "1.27.0")]
210-
pub fn _mm_extract_ps<const IMM8: i32>(a: __m128) -> i32 {
216+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
217+
pub const fn _mm_extract_ps<const IMM8: i32>(a: __m128) -> i32 {
211218
static_assert_uimm_bits!(IMM8, 2);
212219
unsafe { simd_extract!(a, IMM8 as u32, f32).to_bits() as i32 }
213220
}
@@ -223,7 +230,8 @@ pub fn _mm_extract_ps<const IMM8: i32>(a: __m128) -> i32 {
223230
#[cfg_attr(test, assert_instr(pextrb, IMM8 = 0))]
224231
#[rustc_legacy_const_generics(1)]
225232
#[stable(feature = "simd_x86", since = "1.27.0")]
226-
pub fn _mm_extract_epi8<const IMM8: i32>(a: __m128i) -> i32 {
233+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
234+
pub const fn _mm_extract_epi8<const IMM8: i32>(a: __m128i) -> i32 {
227235
static_assert_uimm_bits!(IMM8, 4);
228236
unsafe { simd_extract!(a.as_u8x16(), IMM8 as u32, u8) as i32 }
229237
}
@@ -236,7 +244,8 @@ pub fn _mm_extract_epi8<const IMM8: i32>(a: __m128i) -> i32 {
236244
#[cfg_attr(test, assert_instr(extractps, IMM8 = 1))]
237245
#[rustc_legacy_const_generics(1)]
238246
#[stable(feature = "simd_x86", since = "1.27.0")]
239-
pub fn _mm_extract_epi32<const IMM8: i32>(a: __m128i) -> i32 {
247+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
248+
pub const fn _mm_extract_epi32<const IMM8: i32>(a: __m128i) -> i32 {
240249
static_assert_uimm_bits!(IMM8, 2);
241250
unsafe { simd_extract!(a.as_i32x4(), IMM8 as u32, i32) }
242251
}
@@ -284,7 +293,8 @@ pub fn _mm_insert_ps<const IMM8: i32>(a: __m128, b: __m128) -> __m128 {
284293
#[cfg_attr(test, assert_instr(pinsrb, IMM8 = 0))]
285294
#[rustc_legacy_const_generics(2)]
286295
#[stable(feature = "simd_x86", since = "1.27.0")]
287-
pub fn _mm_insert_epi8<const IMM8: i32>(a: __m128i, i: i32) -> __m128i {
296+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
297+
pub const fn _mm_insert_epi8<const IMM8: i32>(a: __m128i, i: i32) -> __m128i {
288298
static_assert_uimm_bits!(IMM8, 4);
289299
unsafe { transmute(simd_insert!(a.as_i8x16(), IMM8 as u32, i as i8)) }
290300
}
@@ -298,7 +308,8 @@ pub fn _mm_insert_epi8<const IMM8: i32>(a: __m128i, i: i32) -> __m128i {
298308
#[cfg_attr(test, assert_instr(pinsrd, IMM8 = 0))]
299309
#[rustc_legacy_const_generics(2)]
300310
#[stable(feature = "simd_x86", since = "1.27.0")]
301-
pub fn _mm_insert_epi32<const IMM8: i32>(a: __m128i, i: i32) -> __m128i {
311+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
312+
pub const fn _mm_insert_epi32<const IMM8: i32>(a: __m128i, i: i32) -> __m128i {
302313
static_assert_uimm_bits!(IMM8, 2);
303314
unsafe { transmute(simd_insert!(a.as_i32x4(), IMM8 as u32, i)) }
304315
}
@@ -311,7 +322,8 @@ pub fn _mm_insert_epi32<const IMM8: i32>(a: __m128i, i: i32) -> __m128i {
311322
#[target_feature(enable = "sse4.1")]
312323
#[cfg_attr(test, assert_instr(pmaxsb))]
313324
#[stable(feature = "simd_x86", since = "1.27.0")]
314-
pub fn _mm_max_epi8(a: __m128i, b: __m128i) -> __m128i {
325+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
326+
pub const fn _mm_max_epi8(a: __m128i, b: __m128i) -> __m128i {
315327
unsafe {
316328
let a = a.as_i8x16();
317329
let b = b.as_i8x16();
@@ -327,7 +339,8 @@ pub fn _mm_max_epi8(a: __m128i, b: __m128i) -> __m128i {
327339
#[target_feature(enable = "sse4.1")]
328340
#[cfg_attr(test, assert_instr(pmaxuw))]
329341
#[stable(feature = "simd_x86", since = "1.27.0")]
330-
pub fn _mm_max_epu16(a: __m128i, b: __m128i) -> __m128i {
342+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
343+
pub const fn _mm_max_epu16(a: __m128i, b: __m128i) -> __m128i {
331344
unsafe {
332345
let a = a.as_u16x8();
333346
let b = b.as_u16x8();
@@ -343,7 +356,8 @@ pub fn _mm_max_epu16(a: __m128i, b: __m128i) -> __m128i {
343356
#[target_feature(enable = "sse4.1")]
344357
#[cfg_attr(test, assert_instr(pmaxsd))]
345358
#[stable(feature = "simd_x86", since = "1.27.0")]
346-
pub fn _mm_max_epi32(a: __m128i, b: __m128i) -> __m128i {
359+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
360+
pub const fn _mm_max_epi32(a: __m128i, b: __m128i) -> __m128i {
347361
unsafe {
348362
let a = a.as_i32x4();
349363
let b = b.as_i32x4();
@@ -359,7 +373,8 @@ pub fn _mm_max_epi32(a: __m128i, b: __m128i) -> __m128i {
359373
#[target_feature(enable = "sse4.1")]
360374
#[cfg_attr(test, assert_instr(pmaxud))]
361375
#[stable(feature = "simd_x86", since = "1.27.0")]
362-
pub fn _mm_max_epu32(a: __m128i, b: __m128i) -> __m128i {
376+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
377+
pub const fn _mm_max_epu32(a: __m128i, b: __m128i) -> __m128i {
363378
unsafe {
364379
let a = a.as_u32x4();
365380
let b = b.as_u32x4();
@@ -375,7 +390,8 @@ pub fn _mm_max_epu32(a: __m128i, b: __m128i) -> __m128i {
375390
#[target_feature(enable = "sse4.1")]
376391
#[cfg_attr(test, assert_instr(pminsb))]
377392
#[stable(feature = "simd_x86", since = "1.27.0")]
378-
pub fn _mm_min_epi8(a: __m128i, b: __m128i) -> __m128i {
393+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
394+
pub const fn _mm_min_epi8(a: __m128i, b: __m128i) -> __m128i {
379395
unsafe {
380396
let a = a.as_i8x16();
381397
let b = b.as_i8x16();
@@ -391,7 +407,8 @@ pub fn _mm_min_epi8(a: __m128i, b: __m128i) -> __m128i {
391407
#[target_feature(enable = "sse4.1")]
392408
#[cfg_attr(test, assert_instr(pminuw))]
393409
#[stable(feature = "simd_x86", since = "1.27.0")]
394-
pub fn _mm_min_epu16(a: __m128i, b: __m128i) -> __m128i {
410+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
411+
pub const fn _mm_min_epu16(a: __m128i, b: __m128i) -> __m128i {
395412
unsafe {
396413
let a = a.as_u16x8();
397414
let b = b.as_u16x8();
@@ -407,7 +424,8 @@ pub fn _mm_min_epu16(a: __m128i, b: __m128i) -> __m128i {
407424
#[target_feature(enable = "sse4.1")]
408425
#[cfg_attr(test, assert_instr(pminsd))]
409426
#[stable(feature = "simd_x86", since = "1.27.0")]
410-
pub fn _mm_min_epi32(a: __m128i, b: __m128i) -> __m128i {
427+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
428+
pub const fn _mm_min_epi32(a: __m128i, b: __m128i) -> __m128i {
411429
unsafe {
412430
let a = a.as_i32x4();
413431
let b = b.as_i32x4();
@@ -423,7 +441,8 @@ pub fn _mm_min_epi32(a: __m128i, b: __m128i) -> __m128i {
423441
#[target_feature(enable = "sse4.1")]
424442
#[cfg_attr(test, assert_instr(pminud))]
425443
#[stable(feature = "simd_x86", since = "1.27.0")]
426-
pub fn _mm_min_epu32(a: __m128i, b: __m128i) -> __m128i {
444+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
445+
pub const fn _mm_min_epu32(a: __m128i, b: __m128i) -> __m128i {
427446
unsafe {
428447
let a = a.as_u32x4();
429448
let b = b.as_u32x4();
@@ -450,7 +469,8 @@ pub fn _mm_packus_epi32(a: __m128i, b: __m128i) -> __m128i {
450469
#[target_feature(enable = "sse4.1")]
451470
#[cfg_attr(test, assert_instr(pcmpeqq))]
452471
#[stable(feature = "simd_x86", since = "1.27.0")]
453-
pub fn _mm_cmpeq_epi64(a: __m128i, b: __m128i) -> __m128i {
472+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
473+
pub const fn _mm_cmpeq_epi64(a: __m128i, b: __m128i) -> __m128i {
454474
unsafe { transmute(simd_eq::<_, i64x2>(a.as_i64x2(), b.as_i64x2())) }
455475
}
456476

@@ -461,7 +481,8 @@ pub fn _mm_cmpeq_epi64(a: __m128i, b: __m128i) -> __m128i {
461481
#[target_feature(enable = "sse4.1")]
462482
#[cfg_attr(test, assert_instr(pmovsxbw))]
463483
#[stable(feature = "simd_x86", since = "1.27.0")]
464-
pub fn _mm_cvtepi8_epi16(a: __m128i) -> __m128i {
484+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
485+
pub const fn _mm_cvtepi8_epi16(a: __m128i) -> __m128i {
465486
unsafe {
466487
let a = a.as_i8x16();
467488
let a: i8x8 = simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]);
@@ -476,7 +497,8 @@ pub fn _mm_cvtepi8_epi16(a: __m128i) -> __m128i {
476497
#[target_feature(enable = "sse4.1")]
477498
#[cfg_attr(test, assert_instr(pmovsxbd))]
478499
#[stable(feature = "simd_x86", since = "1.27.0")]
479-
pub fn _mm_cvtepi8_epi32(a: __m128i) -> __m128i {
500+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
501+
pub const fn _mm_cvtepi8_epi32(a: __m128i) -> __m128i {
480502
unsafe {
481503
let a = a.as_i8x16();
482504
let a: i8x4 = simd_shuffle!(a, a, [0, 1, 2, 3]);
@@ -492,7 +514,8 @@ pub fn _mm_cvtepi8_epi32(a: __m128i) -> __m128i {
492514
#[target_feature(enable = "sse4.1")]
493515
#[cfg_attr(test, assert_instr(pmovsxbq))]
494516
#[stable(feature = "simd_x86", since = "1.27.0")]
495-
pub fn _mm_cvtepi8_epi64(a: __m128i) -> __m128i {
517+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
518+
pub const fn _mm_cvtepi8_epi64(a: __m128i) -> __m128i {
496519
unsafe {
497520
let a = a.as_i8x16();
498521
let a: i8x2 = simd_shuffle!(a, a, [0, 1]);
@@ -507,7 +530,8 @@ pub fn _mm_cvtepi8_epi64(a: __m128i) -> __m128i {
507530
#[target_feature(enable = "sse4.1")]
508531
#[cfg_attr(test, assert_instr(pmovsxwd))]
509532
#[stable(feature = "simd_x86", since = "1.27.0")]
510-
pub fn _mm_cvtepi16_epi32(a: __m128i) -> __m128i {
533+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
534+
pub const fn _mm_cvtepi16_epi32(a: __m128i) -> __m128i {
511535
unsafe {
512536
let a = a.as_i16x8();
513537
let a: i16x4 = simd_shuffle!(a, a, [0, 1, 2, 3]);
@@ -522,7 +546,8 @@ pub fn _mm_cvtepi16_epi32(a: __m128i) -> __m128i {
522546
#[target_feature(enable = "sse4.1")]
523547
#[cfg_attr(test, assert_instr(pmovsxwq))]
524548
#[stable(feature = "simd_x86", since = "1.27.0")]
525-
pub fn _mm_cvtepi16_epi64(a: __m128i) -> __m128i {
549+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
550+
pub const fn _mm_cvtepi16_epi64(a: __m128i) -> __m128i {
526551
unsafe {
527552
let a = a.as_i16x8();
528553
let a: i16x2 = simd_shuffle!(a, a, [0, 1]);
@@ -537,7 +562,8 @@ pub fn _mm_cvtepi16_epi64(a: __m128i) -> __m128i {
537562
#[target_feature(enable = "sse4.1")]
538563
#[cfg_attr(test, assert_instr(pmovsxdq))]
539564
#[stable(feature = "simd_x86", since = "1.27.0")]
540-
pub fn _mm_cvtepi32_epi64(a: __m128i) -> __m128i {
565+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
566+
pub const fn _mm_cvtepi32_epi64(a: __m128i) -> __m128i {
541567
unsafe {
542568
let a = a.as_i32x4();
543569
let a: i32x2 = simd_shuffle!(a, a, [0, 1]);
@@ -552,7 +578,8 @@ pub fn _mm_cvtepi32_epi64(a: __m128i) -> __m128i {
552578
#[target_feature(enable = "sse4.1")]
553579
#[cfg_attr(test, assert_instr(pmovzxbw))]
554580
#[stable(feature = "simd_x86", since = "1.27.0")]
555-
pub fn _mm_cvtepu8_epi16(a: __m128i) -> __m128i {
581+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
582+
pub const fn _mm_cvtepu8_epi16(a: __m128i) -> __m128i {
556583
unsafe {
557584
let a = a.as_u8x16();
558585
let a: u8x8 = simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]);
@@ -567,7 +594,8 @@ pub fn _mm_cvtepu8_epi16(a: __m128i) -> __m128i {
567594
#[target_feature(enable = "sse4.1")]
568595
#[cfg_attr(test, assert_instr(pmovzxbd))]
569596
#[stable(feature = "simd_x86", since = "1.27.0")]
570-
pub fn _mm_cvtepu8_epi32(a: __m128i) -> __m128i {
597+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
598+
pub const fn _mm_cvtepu8_epi32(a: __m128i) -> __m128i {
571599
unsafe {
572600
let a = a.as_u8x16();
573601
let a: u8x4 = simd_shuffle!(a, a, [0, 1, 2, 3]);
@@ -582,7 +610,8 @@ pub fn _mm_cvtepu8_epi32(a: __m128i) -> __m128i {
582610
#[target_feature(enable = "sse4.1")]
583611
#[cfg_attr(test, assert_instr(pmovzxbq))]
584612
#[stable(feature = "simd_x86", since = "1.27.0")]
585-
pub fn _mm_cvtepu8_epi64(a: __m128i) -> __m128i {
613+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
614+
pub const fn _mm_cvtepu8_epi64(a: __m128i) -> __m128i {
586615
unsafe {
587616
let a = a.as_u8x16();
588617
let a: u8x2 = simd_shuffle!(a, a, [0, 1]);
@@ -598,7 +627,8 @@ pub fn _mm_cvtepu8_epi64(a: __m128i) -> __m128i {
598627
#[target_feature(enable = "sse4.1")]
599628
#[cfg_attr(test, assert_instr(pmovzxwd))]
600629
#[stable(feature = "simd_x86", since = "1.27.0")]
601-
pub fn _mm_cvtepu16_epi32(a: __m128i) -> __m128i {
630+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
631+
pub const fn _mm_cvtepu16_epi32(a: __m128i) -> __m128i {
602632
unsafe {
603633
let a = a.as_u16x8();
604634
let a: u16x4 = simd_shuffle!(a, a, [0, 1, 2, 3]);
@@ -614,7 +644,8 @@ pub fn _mm_cvtepu16_epi32(a: __m128i) -> __m128i {
614644
#[target_feature(enable = "sse4.1")]
615645
#[cfg_attr(test, assert_instr(pmovzxwq))]
616646
#[stable(feature = "simd_x86", since = "1.27.0")]
617-
pub fn _mm_cvtepu16_epi64(a: __m128i) -> __m128i {
647+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
648+
pub const fn _mm_cvtepu16_epi64(a: __m128i) -> __m128i {
618649
unsafe {
619650
let a = a.as_u16x8();
620651
let a: u16x2 = simd_shuffle!(a, a, [0, 1]);
@@ -630,7 +661,8 @@ pub fn _mm_cvtepu16_epi64(a: __m128i) -> __m128i {
630661
#[target_feature(enable = "sse4.1")]
631662
#[cfg_attr(test, assert_instr(pmovzxdq))]
632663
#[stable(feature = "simd_x86", since = "1.27.0")]
633-
pub fn _mm_cvtepu32_epi64(a: __m128i) -> __m128i {
664+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
665+
pub const fn _mm_cvtepu32_epi64(a: __m128i) -> __m128i {
634666
unsafe {
635667
let a = a.as_u32x4();
636668
let a: u32x2 = simd_shuffle!(a, a, [0, 1]);
@@ -687,7 +719,8 @@ pub fn _mm_dp_ps<const IMM8: i32>(a: __m128, b: __m128) -> __m128 {
687719
#[target_feature(enable = "sse4.1")]
688720
#[cfg_attr(test, assert_instr(roundpd))]
689721
#[stable(feature = "simd_x86", since = "1.27.0")]
690-
pub fn _mm_floor_pd(a: __m128d) -> __m128d {
722+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
723+
pub const fn _mm_floor_pd(a: __m128d) -> __m128d {
691724
unsafe { simd_floor(a) }
692725
}
693726

@@ -700,7 +733,8 @@ pub fn _mm_floor_pd(a: __m128d) -> __m128d {
700733
#[target_feature(enable = "sse4.1")]
701734
#[cfg_attr(test, assert_instr(roundps))]
702735
#[stable(feature = "simd_x86", since = "1.27.0")]
703-
pub fn _mm_floor_ps(a: __m128) -> __m128 {
736+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
737+
pub const fn _mm_floor_ps(a: __m128) -> __m128 {
704738
unsafe { simd_floor(a) }
705739
}
706740

@@ -743,7 +777,8 @@ pub fn _mm_floor_ss(a: __m128, b: __m128) -> __m128 {
743777
#[target_feature(enable = "sse4.1")]
744778
#[cfg_attr(test, assert_instr(roundpd))]
745779
#[stable(feature = "simd_x86", since = "1.27.0")]
746-
pub fn _mm_ceil_pd(a: __m128d) -> __m128d {
780+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
781+
pub const fn _mm_ceil_pd(a: __m128d) -> __m128d {
747782
unsafe { simd_ceil(a) }
748783
}
749784

@@ -756,7 +791,8 @@ pub fn _mm_ceil_pd(a: __m128d) -> __m128d {
756791
#[target_feature(enable = "sse4.1")]
757792
#[cfg_attr(test, assert_instr(roundps))]
758793
#[stable(feature = "simd_x86", since = "1.27.0")]
759-
pub fn _mm_ceil_ps(a: __m128) -> __m128 {
794+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
795+
pub const fn _mm_ceil_ps(a: __m128) -> __m128 {
760796
unsafe { simd_ceil(a) }
761797
}
762798

@@ -919,7 +955,8 @@ pub fn _mm_minpos_epu16(a: __m128i) -> __m128i {
919955
#[target_feature(enable = "sse4.1")]
920956
#[cfg_attr(test, assert_instr(pmuldq))]
921957
#[stable(feature = "simd_x86", since = "1.27.0")]
922-
pub fn _mm_mul_epi32(a: __m128i, b: __m128i) -> __m128i {
958+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
959+
pub const fn _mm_mul_epi32(a: __m128i, b: __m128i) -> __m128i {
923960
unsafe {
924961
let a = simd_cast::<_, i64x2>(simd_cast::<_, i32x2>(a.as_i64x2()));
925962
let b = simd_cast::<_, i64x2>(simd_cast::<_, i32x2>(b.as_i64x2()));
@@ -939,7 +976,8 @@ pub fn _mm_mul_epi32(a: __m128i, b: __m128i) -> __m128i {
939976
#[target_feature(enable = "sse4.1")]
940977
#[cfg_attr(test, assert_instr(pmulld))]
941978
#[stable(feature = "simd_x86", since = "1.27.0")]
942-
pub fn _mm_mullo_epi32(a: __m128i, b: __m128i) -> __m128i {
979+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
980+
pub const fn _mm_mullo_epi32(a: __m128i, b: __m128i) -> __m128i {
943981
unsafe { transmute(simd_mul(a.as_i32x4(), b.as_i32x4())) }
944982
}
945983

crates/core_arch/src/x86_64/sse41.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ use stdarch_test::assert_instr;
1313
#[cfg_attr(test, assert_instr(pextrq, IMM1 = 1))]
1414
#[rustc_legacy_const_generics(1)]
1515
#[stable(feature = "simd_x86", since = "1.27.0")]
16-
pub fn _mm_extract_epi64<const IMM1: i32>(a: __m128i) -> i64 {
16+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
17+
pub const fn _mm_extract_epi64<const IMM1: i32>(a: __m128i) -> i64 {
1718
static_assert_uimm_bits!(IMM1, 1);
1819
unsafe { simd_extract!(a.as_i64x2(), IMM1 as u32) }
1920
}
@@ -27,7 +28,8 @@ pub fn _mm_extract_epi64<const IMM1: i32>(a: __m128i) -> i64 {
2728
#[cfg_attr(test, assert_instr(pinsrq, IMM1 = 0))]
2829
#[rustc_legacy_const_generics(2)]
2930
#[stable(feature = "simd_x86", since = "1.27.0")]
30-
pub fn _mm_insert_epi64<const IMM1: i32>(a: __m128i, i: i64) -> __m128i {
31+
#[rustc_const_unstable(feature = "stdarch_const_intrinsics", issue = "none")]
32+
pub const fn _mm_insert_epi64<const IMM1: i32>(a: __m128i, i: i64) -> __m128i {
3133
static_assert_uimm_bits!(IMM1, 1);
3234
unsafe { transmute(simd_insert!(a.as_i64x2(), IMM1 as u32, i)) }
3335
}

0 commit comments

Comments
 (0)