@@ -1432,7 +1432,7 @@ pub unsafe fn _mm256_loadu_pd(mem_addr: *const f64) -> __m256d {
1432
1432
let mut dst = _mm256_undefined_pd ( ) ;
1433
1433
ptr:: copy_nonoverlapping (
1434
1434
mem_addr as * const u8 ,
1435
- & mut dst as * mut __m256d as * mut u8 ,
1435
+ ptr :: addr_of_mut! ( dst) as * mut u8 ,
1436
1436
mem:: size_of :: < __m256d > ( ) ,
1437
1437
) ;
1438
1438
dst
@@ -1464,7 +1464,7 @@ pub unsafe fn _mm256_loadu_ps(mem_addr: *const f32) -> __m256 {
1464
1464
let mut dst = _mm256_undefined_ps ( ) ;
1465
1465
ptr:: copy_nonoverlapping (
1466
1466
mem_addr as * const u8 ,
1467
- & mut dst as * mut __m256 as * mut u8 ,
1467
+ ptr :: addr_of_mut! ( dst) as * mut u8 ,
1468
1468
mem:: size_of :: < __m256 > ( ) ,
1469
1469
) ;
1470
1470
dst
@@ -1521,7 +1521,7 @@ pub unsafe fn _mm256_loadu_si256(mem_addr: *const __m256i) -> __m256i {
1521
1521
let mut dst = _mm256_undefined_si256 ( ) ;
1522
1522
ptr:: copy_nonoverlapping (
1523
1523
mem_addr as * const u8 ,
1524
- & mut dst as * mut __m256i as * mut u8 ,
1524
+ ptr :: addr_of_mut! ( dst) as * mut u8 ,
1525
1525
mem:: size_of :: < __m256i > ( ) ,
1526
1526
) ;
1527
1527
dst
@@ -3065,6 +3065,7 @@ extern "C" {
3065
3065
#[ cfg( test) ]
3066
3066
mod tests {
3067
3067
use crate :: hint:: black_box;
3068
+ use crate :: ptr;
3068
3069
use stdarch_test:: simd_test;
3069
3070
3070
3071
use crate :: core_arch:: x86:: * ;
@@ -3903,7 +3904,7 @@ mod tests {
3903
3904
#[ simd_test( enable = "avx" ) ]
3904
3905
unsafe fn test_mm256_load_pd ( ) {
3905
3906
let a = _mm256_setr_pd ( 1. , 2. , 3. , 4. ) ;
3906
- let p = & a as * const _ as * const f64 ;
3907
+ let p = ptr :: addr_of! ( a ) as * const f64 ;
3907
3908
let r = _mm256_load_pd ( p) ;
3908
3909
let e = _mm256_setr_pd ( 1. , 2. , 3. , 4. ) ;
3909
3910
assert_eq_m256d ( r, e) ;
@@ -3913,14 +3914,14 @@ mod tests {
3913
3914
unsafe fn test_mm256_store_pd ( ) {
3914
3915
let a = _mm256_setr_pd ( 1. , 2. , 3. , 4. ) ;
3915
3916
let mut r = _mm256_undefined_pd ( ) ;
3916
- _mm256_store_pd ( & mut r as * mut _ as * mut f64 , a) ;
3917
+ _mm256_store_pd ( ptr :: addr_of_mut! ( r ) as * mut f64 , a) ;
3917
3918
assert_eq_m256d ( r, a) ;
3918
3919
}
3919
3920
3920
3921
#[ simd_test( enable = "avx" ) ]
3921
3922
unsafe fn test_mm256_load_ps ( ) {
3922
3923
let a = _mm256_setr_ps ( 4. , 3. , 2. , 5. , 8. , 9. , 64. , 50. ) ;
3923
- let p = & a as * const _ as * const f32 ;
3924
+ let p = ptr :: addr_of! ( a ) as * const f32 ;
3924
3925
let r = _mm256_load_ps ( p) ;
3925
3926
let e = _mm256_setr_ps ( 4. , 3. , 2. , 5. , 8. , 9. , 64. , 50. ) ;
3926
3927
assert_eq_m256 ( r, e) ;
@@ -3930,7 +3931,7 @@ mod tests {
3930
3931
unsafe fn test_mm256_store_ps ( ) {
3931
3932
let a = _mm256_setr_ps ( 4. , 3. , 2. , 5. , 8. , 9. , 64. , 50. ) ;
3932
3933
let mut r = _mm256_undefined_ps ( ) ;
3933
- _mm256_store_ps ( & mut r as * mut _ as * mut f32 , a) ;
3934
+ _mm256_store_ps ( ptr :: addr_of_mut! ( r ) as * mut f32 , a) ;
3934
3935
assert_eq_m256 ( r, a) ;
3935
3936
}
3936
3937
@@ -3947,7 +3948,7 @@ mod tests {
3947
3948
unsafe fn test_mm256_storeu_pd ( ) {
3948
3949
let a = _mm256_set1_pd ( 9. ) ;
3949
3950
let mut r = _mm256_undefined_pd ( ) ;
3950
- _mm256_storeu_pd ( & mut r as * mut _ as * mut f64 , a) ;
3951
+ _mm256_storeu_pd ( ptr :: addr_of_mut! ( r ) as * mut f64 , a) ;
3951
3952
assert_eq_m256d ( r, a) ;
3952
3953
}
3953
3954
@@ -3964,14 +3965,14 @@ mod tests {
3964
3965
unsafe fn test_mm256_storeu_ps ( ) {
3965
3966
let a = _mm256_set1_ps ( 9. ) ;
3966
3967
let mut r = _mm256_undefined_ps ( ) ;
3967
- _mm256_storeu_ps ( & mut r as * mut _ as * mut f32 , a) ;
3968
+ _mm256_storeu_ps ( ptr :: addr_of_mut! ( r ) as * mut f32 , a) ;
3968
3969
assert_eq_m256 ( r, a) ;
3969
3970
}
3970
3971
3971
3972
#[ simd_test( enable = "avx" ) ]
3972
3973
unsafe fn test_mm256_load_si256 ( ) {
3973
3974
let a = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
3974
- let p = & a as * const _ ;
3975
+ let p = ptr :: addr_of! ( a ) ;
3975
3976
let r = _mm256_load_si256 ( p) ;
3976
3977
let e = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
3977
3978
assert_eq_m256i ( r, e) ;
@@ -3981,14 +3982,14 @@ mod tests {
3981
3982
unsafe fn test_mm256_store_si256 ( ) {
3982
3983
let a = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
3983
3984
let mut r = _mm256_undefined_si256 ( ) ;
3984
- _mm256_store_si256 ( & mut r as * mut _ , a) ;
3985
+ _mm256_store_si256 ( ptr :: addr_of_mut! ( r ) , a) ;
3985
3986
assert_eq_m256i ( r, a) ;
3986
3987
}
3987
3988
3988
3989
#[ simd_test( enable = "avx" ) ]
3989
3990
unsafe fn test_mm256_loadu_si256 ( ) {
3990
3991
let a = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
3991
- let p = & a as * const _ ;
3992
+ let p = ptr :: addr_of! ( a ) ;
3992
3993
let r = _mm256_loadu_si256 ( black_box ( p) ) ;
3993
3994
let e = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
3994
3995
assert_eq_m256i ( r, e) ;
@@ -3998,7 +3999,7 @@ mod tests {
3998
3999
unsafe fn test_mm256_storeu_si256 ( ) {
3999
4000
let a = _mm256_set1_epi8 ( 9 ) ;
4000
4001
let mut r = _mm256_undefined_si256 ( ) ;
4001
- _mm256_storeu_si256 ( & mut r as * mut _ , a) ;
4002
+ _mm256_storeu_si256 ( ptr :: addr_of_mut! ( r ) , a) ;
4002
4003
assert_eq_m256i ( r, a) ;
4003
4004
}
4004
4005
@@ -4017,7 +4018,7 @@ mod tests {
4017
4018
let mut r = _mm256_set1_pd ( 0. ) ;
4018
4019
let mask = _mm256_setr_epi64x ( 0 , !0 , 0 , !0 ) ;
4019
4020
let a = _mm256_setr_pd ( 1. , 2. , 3. , 4. ) ;
4020
- _mm256_maskstore_pd ( & mut r as * mut _ as * mut f64 , mask, a) ;
4021
+ _mm256_maskstore_pd ( ptr :: addr_of_mut! ( r ) as * mut f64 , mask, a) ;
4021
4022
let e = _mm256_setr_pd ( 0. , 2. , 0. , 4. ) ;
4022
4023
assert_eq_m256d ( r, e) ;
4023
4024
}
@@ -4037,7 +4038,7 @@ mod tests {
4037
4038
let mut r = _mm_set1_pd ( 0. ) ;
4038
4039
let mask = _mm_setr_epi64x ( 0 , !0 ) ;
4039
4040
let a = _mm_setr_pd ( 1. , 2. ) ;
4040
- _mm_maskstore_pd ( & mut r as * mut _ as * mut f64 , mask, a) ;
4041
+ _mm_maskstore_pd ( ptr :: addr_of_mut! ( r ) as * mut f64 , mask, a) ;
4041
4042
let e = _mm_setr_pd ( 0. , 2. ) ;
4042
4043
assert_eq_m128d ( r, e) ;
4043
4044
}
@@ -4057,7 +4058,7 @@ mod tests {
4057
4058
let mut r = _mm256_set1_ps ( 0. ) ;
4058
4059
let mask = _mm256_setr_epi32 ( 0 , !0 , 0 , !0 , 0 , !0 , 0 , !0 ) ;
4059
4060
let a = _mm256_setr_ps ( 1. , 2. , 3. , 4. , 5. , 6. , 7. , 8. ) ;
4060
- _mm256_maskstore_ps ( & mut r as * mut _ as * mut f32 , mask, a) ;
4061
+ _mm256_maskstore_ps ( ptr :: addr_of_mut! ( r ) as * mut f32 , mask, a) ;
4061
4062
let e = _mm256_setr_ps ( 0. , 2. , 0. , 4. , 0. , 6. , 0. , 8. ) ;
4062
4063
assert_eq_m256 ( r, e) ;
4063
4064
}
@@ -4077,7 +4078,7 @@ mod tests {
4077
4078
let mut r = _mm_set1_ps ( 0. ) ;
4078
4079
let mask = _mm_setr_epi32 ( 0 , !0 , 0 , !0 ) ;
4079
4080
let a = _mm_setr_ps ( 1. , 2. , 3. , 4. ) ;
4080
- _mm_maskstore_ps ( & mut r as * mut _ as * mut f32 , mask, a) ;
4081
+ _mm_maskstore_ps ( ptr :: addr_of_mut! ( r ) as * mut f32 , mask, a) ;
4081
4082
let e = _mm_setr_ps ( 0. , 2. , 0. , 4. ) ;
4082
4083
assert_eq_m128 ( r, e) ;
4083
4084
}
@@ -4115,7 +4116,7 @@ mod tests {
4115
4116
17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 ,
4116
4117
25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 ,
4117
4118
) ;
4118
- let p = & a as * const _ ;
4119
+ let p = ptr :: addr_of! ( a ) ;
4119
4120
let r = _mm256_lddqu_si256 ( black_box ( p) ) ;
4120
4121
#[ rustfmt:: skip]
4121
4122
let e = _mm256_setr_epi8 (
@@ -4131,7 +4132,7 @@ mod tests {
4131
4132
unsafe fn test_mm256_stream_si256 ( ) {
4132
4133
let a = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
4133
4134
let mut r = _mm256_undefined_si256 ( ) ;
4134
- _mm256_stream_si256 ( & mut r as * mut _ , a) ;
4135
+ _mm256_stream_si256 ( ptr :: addr_of_mut! ( r ) , a) ;
4135
4136
assert_eq_m256i ( r, a) ;
4136
4137
}
4137
4138
@@ -4144,7 +4145,7 @@ mod tests {
4144
4145
let a = _mm256_set1_pd ( 7.0 ) ;
4145
4146
let mut mem = Memory { data : [ -1.0 ; 4 ] } ;
4146
4147
4147
- _mm256_stream_pd ( & mut mem. data [ 0 ] as * mut f64 , a) ;
4148
+ _mm256_stream_pd ( ptr :: addr_of_mut! ( mem. data[ 0 ] ) , a) ;
4148
4149
for i in 0 ..4 {
4149
4150
assert_eq ! ( mem. data[ i] , get_m256d( a, i) ) ;
4150
4151
}
@@ -4159,7 +4160,7 @@ mod tests {
4159
4160
let a = _mm256_set1_ps ( 7.0 ) ;
4160
4161
let mut mem = Memory { data : [ -1.0 ; 8 ] } ;
4161
4162
4162
- _mm256_stream_ps ( & mut mem. data [ 0 ] as * mut f32 , a) ;
4163
+ _mm256_stream_ps ( ptr :: addr_of_mut! ( mem. data[ 0 ] ) , a) ;
4163
4164
for i in 0 ..8 {
4164
4165
assert_eq ! ( mem. data[ i] , get_m256( a, i) ) ;
4165
4166
}
@@ -4807,7 +4808,7 @@ mod tests {
4807
4808
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,
4808
4809
9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ,
4809
4810
) ;
4810
- let r = _mm256_loadu2_m128i ( & hi as * const _ as * const _ , & lo as * const _ as * const _ ) ;
4811
+ let r = _mm256_loadu2_m128i ( ptr :: addr_of! ( hi ) as * const _ , ptr :: addr_of! ( lo ) as * const _ ) ;
4811
4812
#[ rustfmt:: skip]
4812
4813
let e = _mm256_setr_epi8 (
4813
4814
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,
@@ -4824,8 +4825,8 @@ mod tests {
4824
4825
let mut hi = _mm_undefined_ps ( ) ;
4825
4826
let mut lo = _mm_undefined_ps ( ) ;
4826
4827
_mm256_storeu2_m128 (
4827
- & mut hi as * mut _ as * mut f32 ,
4828
- & mut lo as * mut _ as * mut f32 ,
4828
+ ptr :: addr_of_mut! ( hi ) as * mut f32 ,
4829
+ ptr :: addr_of_mut! ( lo ) as * mut f32 ,
4829
4830
a,
4830
4831
) ;
4831
4832
assert_eq_m128 ( hi, _mm_setr_ps ( 5. , 6. , 7. , 8. ) ) ;
@@ -4838,8 +4839,8 @@ mod tests {
4838
4839
let mut hi = _mm_undefined_pd ( ) ;
4839
4840
let mut lo = _mm_undefined_pd ( ) ;
4840
4841
_mm256_storeu2_m128d (
4841
- & mut hi as * mut _ as * mut f64 ,
4842
- & mut lo as * mut _ as * mut f64 ,
4842
+ ptr :: addr_of_mut! ( hi ) as * mut f64 ,
4843
+ ptr :: addr_of_mut! ( lo ) as * mut f64 ,
4843
4844
a,
4844
4845
) ;
4845
4846
assert_eq_m128d ( hi, _mm_setr_pd ( 3. , 4. ) ) ;
@@ -4857,7 +4858,7 @@ mod tests {
4857
4858
) ;
4858
4859
let mut hi = _mm_undefined_si128 ( ) ;
4859
4860
let mut lo = _mm_undefined_si128 ( ) ;
4860
- _mm256_storeu2_m128i ( & mut hi as * mut _ , & mut lo as * mut _ , a) ;
4861
+ _mm256_storeu2_m128i ( ptr :: addr_of_mut! ( hi ) , ptr :: addr_of_mut! ( lo ) , a) ;
4861
4862
#[ rustfmt:: skip]
4862
4863
let e_hi = _mm_setr_epi8 (
4863
4864
17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 ,
0 commit comments