Skip to content

Commit 67d40a7

Browse files
committed
Add checks for void pointer types to ensure consistency
1 parent 54c8837 commit 67d40a7

File tree

5 files changed

+195
-85
lines changed

5 files changed

+195
-85
lines changed

crates/core_arch/src/x86/avx512f.rs

+35-35
Original file line numberDiff line numberDiff line change
@@ -29696,7 +29696,7 @@ pub unsafe fn _mm512_stream_pd(mem_addr: *mut f64, a: __m512d) {
2969629696
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
2969729697
#[cfg_attr(test, assert_instr(vmovntdq))]
2969829698
#[allow(clippy::cast_ptr_alignment)]
29699-
pub unsafe fn _mm512_stream_si512(mem_addr: *mut i32, a: __m512i) {
29699+
pub unsafe fn _mm512_stream_si512(mem_addr: *mut __m512i, a: __m512i) {
2970029700
crate::arch::asm!(
2970129701
vps!("vmovntdq", ",{a}"),
2970229702
p = in(reg) mem_addr,
@@ -34435,8 +34435,8 @@ pub unsafe fn _mm_storeu_epi64(mem_addr: *mut i64, a: __m128i) {
3443534435
#[target_feature(enable = "avx512f")]
3443634436
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3443734437
#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu32
34438-
pub unsafe fn _mm512_loadu_si512(mem_addr: *const i32) -> __m512i {
34439-
ptr::read_unaligned(mem_addr as *const __m512i)
34438+
pub unsafe fn _mm512_loadu_si512(mem_addr: *const __m512i) -> __m512i {
34439+
ptr::read_unaligned(mem_addr)
3444034440
}
3444134441

3444234442
/// Store 512-bits of integer data from a into memory. mem_addr does not need to be aligned on any particular boundary.
@@ -34459,8 +34459,8 @@ pub unsafe fn _mm512_storeu_si512(mem_addr: *mut __m512i, a: __m512i) {
3445934459
#[target_feature(enable = "avx512f")]
3446034460
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3446134461
#[cfg_attr(test, assert_instr(vmovups))]
34462-
pub unsafe fn _mm512_loadu_pd(mem_addr: *const f64) -> __m512d {
34463-
ptr::read_unaligned(mem_addr as *const __m512d)
34462+
pub unsafe fn _mm512_loadu_pd(mem_addr: *const __m512d) -> __m512d {
34463+
ptr::read_unaligned(mem_addr)
3446434464
}
3446534465

3446634466
/// Stores 512-bits (composed of 8 packed double-precision (64-bit)
@@ -34472,8 +34472,8 @@ pub unsafe fn _mm512_loadu_pd(mem_addr: *const f64) -> __m512d {
3447234472
#[target_feature(enable = "avx512f")]
3447334473
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3447434474
#[cfg_attr(test, assert_instr(vmovups))]
34475-
pub unsafe fn _mm512_storeu_pd(mem_addr: *mut f64, a: __m512d) {
34476-
ptr::write_unaligned(mem_addr as *mut __m512d, a);
34475+
pub unsafe fn _mm512_storeu_pd(mem_addr: *mut __m512d, a: __m512d) {
34476+
ptr::write_unaligned(mem_addr, a);
3447734477
}
3447834478

3447934479
/// Loads 512-bits (composed of 16 packed single-precision (32-bit)
@@ -34485,8 +34485,8 @@ pub unsafe fn _mm512_storeu_pd(mem_addr: *mut f64, a: __m512d) {
3448534485
#[target_feature(enable = "avx512f")]
3448634486
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3448734487
#[cfg_attr(test, assert_instr(vmovups))]
34488-
pub unsafe fn _mm512_loadu_ps(mem_addr: *const f32) -> __m512 {
34489-
ptr::read_unaligned(mem_addr as *const __m512)
34488+
pub unsafe fn _mm512_loadu_ps(mem_addr: *const __m512) -> __m512 {
34489+
ptr::read_unaligned(mem_addr)
3449034490
}
3449134491

3449234492
/// Stores 512-bits (composed of 16 packed single-precision (32-bit)
@@ -34498,8 +34498,8 @@ pub unsafe fn _mm512_loadu_ps(mem_addr: *const f32) -> __m512 {
3449834498
#[target_feature(enable = "avx512f")]
3449934499
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3450034500
#[cfg_attr(test, assert_instr(vmovups))]
34501-
pub unsafe fn _mm512_storeu_ps(mem_addr: *mut f32, a: __m512) {
34502-
ptr::write_unaligned(mem_addr as *mut __m512, a);
34501+
pub unsafe fn _mm512_storeu_ps(mem_addr: *mut __m512, a: __m512) {
34502+
ptr::write_unaligned(mem_addr, a);
3450334503
}
3450434504

3450534505
/// Load 512-bits of integer data from memory into dst. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
@@ -34509,8 +34509,8 @@ pub unsafe fn _mm512_storeu_ps(mem_addr: *mut f32, a: __m512) {
3450934509
#[target_feature(enable = "avx512f")]
3451034510
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3451134511
#[cfg_attr(test, assert_instr(vmovaps))] //should be vmovdqa32
34512-
pub unsafe fn _mm512_load_si512(mem_addr: *const i32) -> __m512i {
34513-
ptr::read(mem_addr as *const __m512i)
34512+
pub unsafe fn _mm512_load_si512(mem_addr: *const __m512i) -> __m512i {
34513+
ptr::read(mem_addr)
3451434514
}
3451534515

3451634516
/// Store 512-bits of integer data from a into memory. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
@@ -34663,8 +34663,8 @@ pub unsafe fn _mm_store_epi64(mem_addr: *mut i64, a: __m128i) {
3466334663
#[target_feature(enable = "avx512f")]
3466434664
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3466534665
#[cfg_attr(test, assert_instr(vmovaps))]
34666-
pub unsafe fn _mm512_load_ps(mem_addr: *const f32) -> __m512 {
34667-
ptr::read(mem_addr as *const __m512)
34666+
pub unsafe fn _mm512_load_ps(mem_addr: *const __m512) -> __m512 {
34667+
ptr::read(mem_addr)
3466834668
}
3466934669

3467034670
/// Store 512-bits of integer data from a into memory. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
@@ -34674,8 +34674,8 @@ pub unsafe fn _mm512_load_ps(mem_addr: *const f32) -> __m512 {
3467434674
#[target_feature(enable = "avx512f")]
3467534675
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3467634676
#[cfg_attr(test, assert_instr(vmovaps))]
34677-
pub unsafe fn _mm512_store_ps(mem_addr: *mut f32, a: __m512) {
34678-
ptr::write(mem_addr as *mut __m512, a);
34677+
pub unsafe fn _mm512_store_ps(mem_addr: *mut __m512, a: __m512) {
34678+
ptr::write(mem_addr, a);
3467934679
}
3468034680

3468134681
/// Load 512-bits (composed of 8 packed double-precision (64-bit) floating-point elements) from memory into dst. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
@@ -34685,8 +34685,8 @@ pub unsafe fn _mm512_store_ps(mem_addr: *mut f32, a: __m512) {
3468534685
#[target_feature(enable = "avx512f")]
3468634686
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3468734687
#[cfg_attr(test, assert_instr(vmovaps))] //should be vmovapd
34688-
pub unsafe fn _mm512_load_pd(mem_addr: *const f64) -> __m512d {
34689-
ptr::read(mem_addr as *const __m512d)
34688+
pub unsafe fn _mm512_load_pd(mem_addr: *const __m512d) -> __m512d {
34689+
ptr::read(mem_addr)
3469034690
}
3469134691

3469234692
/// Store 512-bits (composed of 8 packed double-precision (64-bit) floating-point elements) from a into memory. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
@@ -34696,8 +34696,8 @@ pub unsafe fn _mm512_load_pd(mem_addr: *const f64) -> __m512d {
3469634696
#[target_feature(enable = "avx512f")]
3469734697
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3469834698
#[cfg_attr(test, assert_instr(vmovaps))] //should be vmovapd
34699-
pub unsafe fn _mm512_store_pd(mem_addr: *mut f64, a: __m512d) {
34700-
ptr::write(mem_addr as *mut __m512d, a);
34699+
pub unsafe fn _mm512_store_pd(mem_addr: *mut __m512d, a: __m512d) {
34700+
ptr::write(mem_addr, a);
3470134701
}
3470234702

3470334703
/// Load packed 32-bit integers from memory into dst using writemask k
@@ -51036,7 +51036,7 @@ mod tests {
5103651036
#[simd_test(enable = "avx512f")]
5103751037
unsafe fn test_mm512_loadu_pd() {
5103851038
let a = &[4., 3., 2., 5., 8., 9., 64., 50.];
51039-
let p = a.as_ptr();
51039+
let p = a.as_ptr().cast();
5104051040
let r = _mm512_loadu_pd(black_box(p));
5104151041
let e = _mm512_setr_pd(4., 3., 2., 5., 8., 9., 64., 50.);
5104251042
assert_eq_m512d(r, e);
@@ -51046,16 +51046,16 @@ mod tests {
5104651046
unsafe fn test_mm512_storeu_pd() {
5104751047
let a = _mm512_set1_pd(9.);
5104851048
let mut r = _mm512_undefined_pd();
51049-
_mm512_storeu_pd(&mut r as *mut _ as *mut f64, a);
51049+
_mm512_storeu_pd(&mut r as *mut _, a);
5105051050
assert_eq_m512d(r, a);
5105151051
}
5105251052

5105351053
#[simd_test(enable = "avx512f")]
5105451054
unsafe fn test_mm512_loadu_ps() {
5105551055
let a = &[
51056-
4., 3., 2., 5., 8., 9., 64., 50., -4., -3., -2., -5., -8., -9., -64., -50.,
51056+
4.0_f32, 3., 2., 5., 8., 9., 64., 50., -4., -3., -2., -5., -8., -9., -64., -50.,
5105751057
];
51058-
let p = a.as_ptr();
51058+
let p = a.as_ptr().cast();
5105951059
let r = _mm512_loadu_ps(black_box(p));
5106051060
let e = _mm512_setr_ps(
5106151061
4., 3., 2., 5., 8., 9., 64., 50., -4., -3., -2., -5., -8., -9., -64., -50.,
@@ -51067,7 +51067,7 @@ mod tests {
5106751067
unsafe fn test_mm512_storeu_ps() {
5106851068
let a = _mm512_set1_ps(9.);
5106951069
let mut r = _mm512_undefined_ps();
51070-
_mm512_storeu_ps(&mut r as *mut _ as *mut f32, a);
51070+
_mm512_storeu_ps(&mut r as *mut _, a);
5107151071
assert_eq_m512(r, a);
5107251072
}
5107351073

@@ -51316,7 +51316,7 @@ mod tests {
5131651316
42.0, 2.0, 42.0, 4.0, 42.0, 42.0, 7.0, 8.0, 42.0, 42.0, 42.0, 12.0, 42.0, 14.0, 15.0,
5131751317
16.0,
5131851318
);
51319-
assert_eq_m512(_mm512_loadu_ps(r.as_ptr()), e);
51319+
assert_eq_m512(_mm512_loadu_ps(r.as_ptr().cast()), e);
5132051320
}
5132151321

5132251322
#[simd_test(enable = "avx512f")]
@@ -51335,7 +51335,7 @@ mod tests {
5133551335
42.0, 2.0, 42.0, 4.0, 42.0, 42.0, 7.0, 8.0, 42.0, 42.0, 42.0, 12.0, 42.0, 14.0, 15.0,
5133651336
16.0,
5133751337
);
51338-
assert_eq_m512(_mm512_load_ps(r.data.as_ptr()), e);
51338+
assert_eq_m512(_mm512_load_ps(r.data.as_ptr().cast()), e);
5133951339
}
5134051340

5134151341
#[simd_test(enable = "avx512f")]
@@ -51399,7 +51399,7 @@ mod tests {
5139951399
let m = 0b11001010;
5140051400
_mm512_mask_storeu_pd(r.as_mut_ptr(), m, a);
5140151401
let e = _mm512_setr_pd(42.0, 2.0, 42.0, 4.0, 42.0, 42.0, 7.0, 8.0);
51402-
assert_eq_m512d(_mm512_loadu_pd(r.as_ptr()), e);
51402+
assert_eq_m512d(_mm512_loadu_pd(r.as_ptr().cast()), e);
5140351403
}
5140451404

5140551405
#[simd_test(enable = "avx512f")]
@@ -51413,7 +51413,7 @@ mod tests {
5141351413
let m = 0b11001010;
5141451414
_mm512_mask_store_pd(r.data.as_mut_ptr(), m, a);
5141551415
let e = _mm512_setr_pd(42.0, 2.0, 42.0, 4.0, 42.0, 42.0, 7.0, 8.0);
51416-
assert_eq_m512d(_mm512_load_pd(r.data.as_ptr()), e);
51416+
assert_eq_m512d(_mm512_load_pd(r.data.as_ptr().cast()), e);
5141751417
}
5141851418

5141951419
#[simd_test(enable = "avx512f,avx512vl")]
@@ -57231,7 +57231,7 @@ mod tests {
5723157231
#[simd_test(enable = "avx512f")]
5723257232
unsafe fn test_mm512_loadu_si512() {
5723357233
let a = &[4, 3, 2, 5, 8, 9, 64, 50, -4, -3, -2, -5, -8, -9, -64, -50];
57234-
let p = a.as_ptr();
57234+
let p = a.as_ptr().cast();
5723557235
let r = _mm512_loadu_si512(black_box(p));
5723657236
let e = _mm512_setr_epi32(4, 3, 2, 5, 8, 9, 64, 50, -4, -3, -2, -5, -8, -9, -64, -50);
5723757237
assert_eq_m512i(r, e);
@@ -57254,7 +57254,7 @@ mod tests {
5725457254
let a = Align {
5725557255
data: [4, 3, 2, 5, 8, 9, 64, 50, -4, -3, -2, -5, -8, -9, -64, -50],
5725657256
};
57257-
let p = (a.data).as_ptr();
57257+
let p = (a.data).as_ptr().cast();
5725857258
let r = _mm512_load_si512(black_box(p));
5725957259
let e = _mm512_setr_epi32(4, 3, 2, 5, 8, 9, 64, 50, -4, -3, -2, -5, -8, -9, -64, -50);
5726057260
assert_eq_m512i(r, e);
@@ -57277,7 +57277,7 @@ mod tests {
5727757277
let a = Align {
5727857278
data: [4, 3, 2, 5, 8, 9, 64, 50, -4, -3, -2, -5, -8, -9, -64, -50],
5727957279
};
57280-
let p = (a.data).as_ptr();
57280+
let p = (a.data).as_ptr().cast();
5728157281
let r = _mm512_load_epi32(black_box(p));
5728257282
let e = _mm512_setr_epi32(4, 3, 2, 5, 8, 9, 64, 50, -4, -3, -2, -5, -8, -9, -64, -50);
5728357283
assert_eq_m512i(r, e);
@@ -57346,7 +57346,7 @@ mod tests {
5734657346
4., 3., 2., 5., 8., 9., 64., 50., -4., -3., -2., -5., -8., -9., -64., -50.,
5734757347
],
5734857348
};
57349-
let p = (a.data).as_ptr();
57349+
let p = (a.data).as_ptr().cast();
5735057350
let r = _mm512_load_ps(black_box(p));
5735157351
let e = _mm512_setr_ps(
5735257352
4., 3., 2., 5., 8., 9., 64., 50., -4., -3., -2., -5., -8., -9., -64., -50.,
@@ -57358,7 +57358,7 @@ mod tests {
5735857358
unsafe fn test_mm512_store_ps() {
5735957359
let a = _mm512_set1_ps(9.);
5736057360
let mut r = _mm512_undefined_ps();
57361-
_mm512_store_ps(&mut r as *mut _ as *mut f32, a);
57361+
_mm512_store_ps(&mut r as *mut _, a);
5736257362
assert_eq_m512(r, a);
5736357363
}
5736457364

0 commit comments

Comments
 (0)