Skip to content

Commit 9da5505

Browse files
committed
mark AVX512 & AVXNECONVERT intrinsics as safe
Mark all AVX512 & AVXNECONVERT SIMD-computing intrinsics as safe, except for those involving memory operations.
1 parent c163206 commit 9da5505

16 files changed

+21800
-18454
lines changed

crates/core_arch/src/x86/avx512bf16.rs

+174-137
Large diffs are not rendered by default.

crates/core_arch/src/x86/avx512bitalg.rs

+120-96
Large diffs are not rendered by default.

crates/core_arch/src/x86/avx512bw.rs

+3,957-3,364
Large diffs are not rendered by default.

crates/core_arch/src/x86/avx512cd.rs

+150-102
Large diffs are not rendered by default.

crates/core_arch/src/x86/avx512dq.rs

+1,530-1,212
Large diffs are not rendered by default.

crates/core_arch/src/x86/avx512f.rs

+12,096-10,106
Large diffs are not rendered by default.

crates/core_arch/src/x86/avx512fp16.rs

+2,578-2,308
Large diffs are not rendered by default.

crates/core_arch/src/x86/avx512ifma.rs

+44-84
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ use stdarch_test::assert_instr;
1515
#[target_feature(enable = "avx512ifma")]
1616
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
1717
#[cfg_attr(test, assert_instr(vpmadd52huq))]
18-
pub unsafe fn _mm512_madd52hi_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
19-
vpmadd52huq_512(a, b, c)
18+
pub fn _mm512_madd52hi_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
19+
unsafe { vpmadd52huq_512(a, b, c) }
2020
}
2121

2222
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -31,13 +31,8 @@ pub unsafe fn _mm512_madd52hi_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m51
3131
#[target_feature(enable = "avx512ifma")]
3232
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3333
#[cfg_attr(test, assert_instr(vpmadd52huq))]
34-
pub unsafe fn _mm512_mask_madd52hi_epu64(
35-
a: __m512i,
36-
k: __mmask8,
37-
b: __m512i,
38-
c: __m512i,
39-
) -> __m512i {
40-
simd_select_bitmask(k, vpmadd52huq_512(a, b, c), a)
34+
pub fn _mm512_mask_madd52hi_epu64(a: __m512i, k: __mmask8, b: __m512i, c: __m512i) -> __m512i {
35+
unsafe { simd_select_bitmask(k, vpmadd52huq_512(a, b, c), a) }
4136
}
4237

4338
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -52,13 +47,8 @@ pub unsafe fn _mm512_mask_madd52hi_epu64(
5247
#[target_feature(enable = "avx512ifma")]
5348
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
5449
#[cfg_attr(test, assert_instr(vpmadd52huq))]
55-
pub unsafe fn _mm512_maskz_madd52hi_epu64(
56-
k: __mmask8,
57-
a: __m512i,
58-
b: __m512i,
59-
c: __m512i,
60-
) -> __m512i {
61-
simd_select_bitmask(k, vpmadd52huq_512(a, b, c), _mm512_setzero_si512())
50+
pub fn _mm512_maskz_madd52hi_epu64(k: __mmask8, a: __m512i, b: __m512i, c: __m512i) -> __m512i {
51+
unsafe { simd_select_bitmask(k, vpmadd52huq_512(a, b, c), _mm512_setzero_si512()) }
6252
}
6353

6454
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -72,8 +62,8 @@ pub unsafe fn _mm512_maskz_madd52hi_epu64(
7262
#[target_feature(enable = "avx512ifma")]
7363
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
7464
#[cfg_attr(test, assert_instr(vpmadd52luq))]
75-
pub unsafe fn _mm512_madd52lo_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
76-
vpmadd52luq_512(a, b, c)
65+
pub fn _mm512_madd52lo_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
66+
unsafe { vpmadd52luq_512(a, b, c) }
7767
}
7868

7969
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -88,13 +78,8 @@ pub unsafe fn _mm512_madd52lo_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m51
8878
#[target_feature(enable = "avx512ifma")]
8979
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
9080
#[cfg_attr(test, assert_instr(vpmadd52luq))]
91-
pub unsafe fn _mm512_mask_madd52lo_epu64(
92-
a: __m512i,
93-
k: __mmask8,
94-
b: __m512i,
95-
c: __m512i,
96-
) -> __m512i {
97-
simd_select_bitmask(k, vpmadd52luq_512(a, b, c), a)
81+
pub fn _mm512_mask_madd52lo_epu64(a: __m512i, k: __mmask8, b: __m512i, c: __m512i) -> __m512i {
82+
unsafe { simd_select_bitmask(k, vpmadd52luq_512(a, b, c), a) }
9883
}
9984

10085
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -109,13 +94,8 @@ pub unsafe fn _mm512_mask_madd52lo_epu64(
10994
#[target_feature(enable = "avx512ifma")]
11095
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
11196
#[cfg_attr(test, assert_instr(vpmadd52luq))]
112-
pub unsafe fn _mm512_maskz_madd52lo_epu64(
113-
k: __mmask8,
114-
a: __m512i,
115-
b: __m512i,
116-
c: __m512i,
117-
) -> __m512i {
118-
simd_select_bitmask(k, vpmadd52luq_512(a, b, c), _mm512_setzero_si512())
97+
pub fn _mm512_maskz_madd52lo_epu64(k: __mmask8, a: __m512i, b: __m512i, c: __m512i) -> __m512i {
98+
unsafe { simd_select_bitmask(k, vpmadd52luq_512(a, b, c), _mm512_setzero_si512()) }
11999
}
120100

121101
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -132,8 +112,8 @@ pub unsafe fn _mm512_maskz_madd52lo_epu64(
132112
all(test, any(target_os = "linux", target_env = "msvc")),
133113
assert_instr(vpmadd52huq)
134114
)]
135-
pub unsafe fn _mm256_madd52hi_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
136-
vpmadd52huq_256(a, b, c)
115+
pub fn _mm256_madd52hi_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
116+
unsafe { vpmadd52huq_256(a, b, c) }
137117
}
138118

139119
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -147,8 +127,8 @@ pub unsafe fn _mm256_madd52hi_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> _
147127
#[target_feature(enable = "avx512ifma,avx512vl")]
148128
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
149129
#[cfg_attr(test, assert_instr(vpmadd52huq))]
150-
pub unsafe fn _mm256_madd52hi_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
151-
vpmadd52huq_256(a, b, c)
130+
pub fn _mm256_madd52hi_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
131+
unsafe { vpmadd52huq_256(a, b, c) }
152132
}
153133

154134
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -163,13 +143,8 @@ pub unsafe fn _mm256_madd52hi_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m25
163143
#[target_feature(enable = "avx512ifma,avx512vl")]
164144
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
165145
#[cfg_attr(test, assert_instr(vpmadd52huq))]
166-
pub unsafe fn _mm256_mask_madd52hi_epu64(
167-
a: __m256i,
168-
k: __mmask8,
169-
b: __m256i,
170-
c: __m256i,
171-
) -> __m256i {
172-
simd_select_bitmask(k, vpmadd52huq_256(a, b, c), a)
146+
pub fn _mm256_mask_madd52hi_epu64(a: __m256i, k: __mmask8, b: __m256i, c: __m256i) -> __m256i {
147+
unsafe { simd_select_bitmask(k, vpmadd52huq_256(a, b, c), a) }
173148
}
174149

175150
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -184,13 +159,8 @@ pub unsafe fn _mm256_mask_madd52hi_epu64(
184159
#[target_feature(enable = "avx512ifma,avx512vl")]
185160
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
186161
#[cfg_attr(test, assert_instr(vpmadd52huq))]
187-
pub unsafe fn _mm256_maskz_madd52hi_epu64(
188-
k: __mmask8,
189-
a: __m256i,
190-
b: __m256i,
191-
c: __m256i,
192-
) -> __m256i {
193-
simd_select_bitmask(k, vpmadd52huq_256(a, b, c), _mm256_setzero_si256())
162+
pub fn _mm256_maskz_madd52hi_epu64(k: __mmask8, a: __m256i, b: __m256i, c: __m256i) -> __m256i {
163+
unsafe { simd_select_bitmask(k, vpmadd52huq_256(a, b, c), _mm256_setzero_si256()) }
194164
}
195165

196166
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -207,8 +177,8 @@ pub unsafe fn _mm256_maskz_madd52hi_epu64(
207177
all(test, any(target_os = "linux", target_env = "msvc")),
208178
assert_instr(vpmadd52luq)
209179
)]
210-
pub unsafe fn _mm256_madd52lo_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
211-
vpmadd52luq_256(a, b, c)
180+
pub fn _mm256_madd52lo_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
181+
unsafe { vpmadd52luq_256(a, b, c) }
212182
}
213183

214184
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -222,8 +192,8 @@ pub unsafe fn _mm256_madd52lo_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> _
222192
#[target_feature(enable = "avx512ifma,avx512vl")]
223193
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
224194
#[cfg_attr(test, assert_instr(vpmadd52luq))]
225-
pub unsafe fn _mm256_madd52lo_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
226-
vpmadd52luq_256(a, b, c)
195+
pub fn _mm256_madd52lo_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
196+
unsafe { vpmadd52luq_256(a, b, c) }
227197
}
228198

229199
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -238,13 +208,8 @@ pub unsafe fn _mm256_madd52lo_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m25
238208
#[target_feature(enable = "avx512ifma,avx512vl")]
239209
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
240210
#[cfg_attr(test, assert_instr(vpmadd52luq))]
241-
pub unsafe fn _mm256_mask_madd52lo_epu64(
242-
a: __m256i,
243-
k: __mmask8,
244-
b: __m256i,
245-
c: __m256i,
246-
) -> __m256i {
247-
simd_select_bitmask(k, vpmadd52luq_256(a, b, c), a)
211+
pub fn _mm256_mask_madd52lo_epu64(a: __m256i, k: __mmask8, b: __m256i, c: __m256i) -> __m256i {
212+
unsafe { simd_select_bitmask(k, vpmadd52luq_256(a, b, c), a) }
248213
}
249214

250215
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -259,13 +224,8 @@ pub unsafe fn _mm256_mask_madd52lo_epu64(
259224
#[target_feature(enable = "avx512ifma,avx512vl")]
260225
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
261226
#[cfg_attr(test, assert_instr(vpmadd52luq))]
262-
pub unsafe fn _mm256_maskz_madd52lo_epu64(
263-
k: __mmask8,
264-
a: __m256i,
265-
b: __m256i,
266-
c: __m256i,
267-
) -> __m256i {
268-
simd_select_bitmask(k, vpmadd52luq_256(a, b, c), _mm256_setzero_si256())
227+
pub fn _mm256_maskz_madd52lo_epu64(k: __mmask8, a: __m256i, b: __m256i, c: __m256i) -> __m256i {
228+
unsafe { simd_select_bitmask(k, vpmadd52luq_256(a, b, c), _mm256_setzero_si256()) }
269229
}
270230

271231
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -282,8 +242,8 @@ pub unsafe fn _mm256_maskz_madd52lo_epu64(
282242
all(test, any(target_os = "linux", target_env = "msvc")),
283243
assert_instr(vpmadd52huq)
284244
)]
285-
pub unsafe fn _mm_madd52hi_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
286-
vpmadd52huq_128(a, b, c)
245+
pub fn _mm_madd52hi_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
246+
unsafe { vpmadd52huq_128(a, b, c) }
287247
}
288248

289249
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -297,8 +257,8 @@ pub unsafe fn _mm_madd52hi_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m1
297257
#[target_feature(enable = "avx512ifma,avx512vl")]
298258
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
299259
#[cfg_attr(test, assert_instr(vpmadd52huq))]
300-
pub unsafe fn _mm_madd52hi_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
301-
vpmadd52huq_128(a, b, c)
260+
pub fn _mm_madd52hi_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
261+
unsafe { vpmadd52huq_128(a, b, c) }
302262
}
303263

304264
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -313,8 +273,8 @@ pub unsafe fn _mm_madd52hi_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i
313273
#[target_feature(enable = "avx512ifma,avx512vl")]
314274
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
315275
#[cfg_attr(test, assert_instr(vpmadd52huq))]
316-
pub unsafe fn _mm_mask_madd52hi_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __m128i) -> __m128i {
317-
simd_select_bitmask(k, vpmadd52huq_128(a, b, c), a)
276+
pub fn _mm_mask_madd52hi_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __m128i) -> __m128i {
277+
unsafe { simd_select_bitmask(k, vpmadd52huq_128(a, b, c), a) }
318278
}
319279

320280
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -329,8 +289,8 @@ pub unsafe fn _mm_mask_madd52hi_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __
329289
#[target_feature(enable = "avx512ifma,avx512vl")]
330290
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
331291
#[cfg_attr(test, assert_instr(vpmadd52huq))]
332-
pub unsafe fn _mm_maskz_madd52hi_epu64(k: __mmask8, a: __m128i, b: __m128i, c: __m128i) -> __m128i {
333-
simd_select_bitmask(k, vpmadd52huq_128(a, b, c), _mm_setzero_si128())
292+
pub fn _mm_maskz_madd52hi_epu64(k: __mmask8, a: __m128i, b: __m128i, c: __m128i) -> __m128i {
293+
unsafe { simd_select_bitmask(k, vpmadd52huq_128(a, b, c), _mm_setzero_si128()) }
334294
}
335295

336296
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -347,8 +307,8 @@ pub unsafe fn _mm_maskz_madd52hi_epu64(k: __mmask8, a: __m128i, b: __m128i, c: _
347307
all(test, any(target_os = "linux", target_env = "msvc")),
348308
assert_instr(vpmadd52luq)
349309
)]
350-
pub unsafe fn _mm_madd52lo_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
351-
vpmadd52luq_128(a, b, c)
310+
pub fn _mm_madd52lo_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
311+
unsafe { vpmadd52luq_128(a, b, c) }
352312
}
353313

354314
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -362,8 +322,8 @@ pub unsafe fn _mm_madd52lo_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m1
362322
#[target_feature(enable = "avx512ifma,avx512vl")]
363323
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
364324
#[cfg_attr(test, assert_instr(vpmadd52luq))]
365-
pub unsafe fn _mm_madd52lo_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
366-
vpmadd52luq_128(a, b, c)
325+
pub fn _mm_madd52lo_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
326+
unsafe { vpmadd52luq_128(a, b, c) }
367327
}
368328

369329
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -378,8 +338,8 @@ pub unsafe fn _mm_madd52lo_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i
378338
#[target_feature(enable = "avx512ifma,avx512vl")]
379339
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
380340
#[cfg_attr(test, assert_instr(vpmadd52luq))]
381-
pub unsafe fn _mm_mask_madd52lo_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __m128i) -> __m128i {
382-
simd_select_bitmask(k, vpmadd52luq_128(a, b, c), a)
341+
pub fn _mm_mask_madd52lo_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __m128i) -> __m128i {
342+
unsafe { simd_select_bitmask(k, vpmadd52luq_128(a, b, c), a) }
383343
}
384344

385345
/// Multiply packed unsigned 52-bit integers in each 64-bit element of
@@ -394,8 +354,8 @@ pub unsafe fn _mm_mask_madd52lo_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __
394354
#[target_feature(enable = "avx512ifma,avx512vl")]
395355
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
396356
#[cfg_attr(test, assert_instr(vpmadd52luq))]
397-
pub unsafe fn _mm_maskz_madd52lo_epu64(k: __mmask8, a: __m128i, b: __m128i, c: __m128i) -> __m128i {
398-
simd_select_bitmask(k, vpmadd52luq_128(a, b, c), _mm_setzero_si128())
357+
pub fn _mm_maskz_madd52lo_epu64(k: __mmask8, a: __m128i, b: __m128i, c: __m128i) -> __m128i {
358+
unsafe { simd_select_bitmask(k, vpmadd52luq_128(a, b, c), _mm_setzero_si128()) }
399359
}
400360

401361
#[allow(improper_ctypes)]

0 commit comments

Comments
 (0)