@@ -1432,7 +1432,7 @@ pub unsafe fn _mm256_loadu_pd(mem_addr: *const f64) -> __m256d {
14321432 let mut dst = _mm256_undefined_pd ( ) ;
14331433 ptr:: copy_nonoverlapping (
14341434 mem_addr as * const u8 ,
1435- & mut dst as * mut __m256d as * mut u8 ,
1435+ ptr :: addr_of_mut! ( dst) as * mut u8 ,
14361436 mem:: size_of :: < __m256d > ( ) ,
14371437 ) ;
14381438 dst
@@ -1464,7 +1464,7 @@ pub unsafe fn _mm256_loadu_ps(mem_addr: *const f32) -> __m256 {
14641464 let mut dst = _mm256_undefined_ps ( ) ;
14651465 ptr:: copy_nonoverlapping (
14661466 mem_addr as * const u8 ,
1467- & mut dst as * mut __m256 as * mut u8 ,
1467+ ptr :: addr_of_mut! ( dst) as * mut u8 ,
14681468 mem:: size_of :: < __m256 > ( ) ,
14691469 ) ;
14701470 dst
@@ -1521,7 +1521,7 @@ pub unsafe fn _mm256_loadu_si256(mem_addr: *const __m256i) -> __m256i {
15211521 let mut dst = _mm256_undefined_si256 ( ) ;
15221522 ptr:: copy_nonoverlapping (
15231523 mem_addr as * const u8 ,
1524- & mut dst as * mut __m256i as * mut u8 ,
1524+ ptr :: addr_of_mut! ( dst) as * mut u8 ,
15251525 mem:: size_of :: < __m256i > ( ) ,
15261526 ) ;
15271527 dst
@@ -3065,6 +3065,7 @@ extern "C" {
30653065#[ cfg( test) ]
30663066mod tests {
30673067 use crate :: hint:: black_box;
3068+ use crate :: ptr;
30683069 use stdarch_test:: simd_test;
30693070
30703071 use crate :: core_arch:: x86:: * ;
@@ -3903,7 +3904,7 @@ mod tests {
39033904 #[ simd_test( enable = "avx" ) ]
39043905 unsafe fn test_mm256_load_pd ( ) {
39053906 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 ;
39073908 let r = _mm256_load_pd ( p) ;
39083909 let e = _mm256_setr_pd ( 1. , 2. , 3. , 4. ) ;
39093910 assert_eq_m256d ( r, e) ;
@@ -3913,14 +3914,14 @@ mod tests {
39133914 unsafe fn test_mm256_store_pd ( ) {
39143915 let a = _mm256_setr_pd ( 1. , 2. , 3. , 4. ) ;
39153916 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) ;
39173918 assert_eq_m256d ( r, a) ;
39183919 }
39193920
39203921 #[ simd_test( enable = "avx" ) ]
39213922 unsafe fn test_mm256_load_ps ( ) {
39223923 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 ;
39243925 let r = _mm256_load_ps ( p) ;
39253926 let e = _mm256_setr_ps ( 4. , 3. , 2. , 5. , 8. , 9. , 64. , 50. ) ;
39263927 assert_eq_m256 ( r, e) ;
@@ -3930,7 +3931,7 @@ mod tests {
39303931 unsafe fn test_mm256_store_ps ( ) {
39313932 let a = _mm256_setr_ps ( 4. , 3. , 2. , 5. , 8. , 9. , 64. , 50. ) ;
39323933 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) ;
39343935 assert_eq_m256 ( r, a) ;
39353936 }
39363937
@@ -3947,7 +3948,7 @@ mod tests {
39473948 unsafe fn test_mm256_storeu_pd ( ) {
39483949 let a = _mm256_set1_pd ( 9. ) ;
39493950 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) ;
39513952 assert_eq_m256d ( r, a) ;
39523953 }
39533954
@@ -3964,14 +3965,14 @@ mod tests {
39643965 unsafe fn test_mm256_storeu_ps ( ) {
39653966 let a = _mm256_set1_ps ( 9. ) ;
39663967 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) ;
39683969 assert_eq_m256 ( r, a) ;
39693970 }
39703971
39713972 #[ simd_test( enable = "avx" ) ]
39723973 unsafe fn test_mm256_load_si256 ( ) {
39733974 let a = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
3974- let p = & a as * const _ ;
3975+ let p = ptr :: addr_of! ( a ) ;
39753976 let r = _mm256_load_si256 ( p) ;
39763977 let e = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
39773978 assert_eq_m256i ( r, e) ;
@@ -3981,14 +3982,14 @@ mod tests {
39813982 unsafe fn test_mm256_store_si256 ( ) {
39823983 let a = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
39833984 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) ;
39853986 assert_eq_m256i ( r, a) ;
39863987 }
39873988
39883989 #[ simd_test( enable = "avx" ) ]
39893990 unsafe fn test_mm256_loadu_si256 ( ) {
39903991 let a = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
3991- let p = & a as * const _ ;
3992+ let p = ptr :: addr_of! ( a ) ;
39923993 let r = _mm256_loadu_si256 ( black_box ( p) ) ;
39933994 let e = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
39943995 assert_eq_m256i ( r, e) ;
@@ -3998,7 +3999,7 @@ mod tests {
39983999 unsafe fn test_mm256_storeu_si256 ( ) {
39994000 let a = _mm256_set1_epi8 ( 9 ) ;
40004001 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) ;
40024003 assert_eq_m256i ( r, a) ;
40034004 }
40044005
@@ -4017,7 +4018,7 @@ mod tests {
40174018 let mut r = _mm256_set1_pd ( 0. ) ;
40184019 let mask = _mm256_setr_epi64x ( 0 , !0 , 0 , !0 ) ;
40194020 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) ;
40214022 let e = _mm256_setr_pd ( 0. , 2. , 0. , 4. ) ;
40224023 assert_eq_m256d ( r, e) ;
40234024 }
@@ -4037,7 +4038,7 @@ mod tests {
40374038 let mut r = _mm_set1_pd ( 0. ) ;
40384039 let mask = _mm_setr_epi64x ( 0 , !0 ) ;
40394040 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) ;
40414042 let e = _mm_setr_pd ( 0. , 2. ) ;
40424043 assert_eq_m128d ( r, e) ;
40434044 }
@@ -4057,7 +4058,7 @@ mod tests {
40574058 let mut r = _mm256_set1_ps ( 0. ) ;
40584059 let mask = _mm256_setr_epi32 ( 0 , !0 , 0 , !0 , 0 , !0 , 0 , !0 ) ;
40594060 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) ;
40614062 let e = _mm256_setr_ps ( 0. , 2. , 0. , 4. , 0. , 6. , 0. , 8. ) ;
40624063 assert_eq_m256 ( r, e) ;
40634064 }
@@ -4077,7 +4078,7 @@ mod tests {
40774078 let mut r = _mm_set1_ps ( 0. ) ;
40784079 let mask = _mm_setr_epi32 ( 0 , !0 , 0 , !0 ) ;
40794080 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) ;
40814082 let e = _mm_setr_ps ( 0. , 2. , 0. , 4. ) ;
40824083 assert_eq_m128 ( r, e) ;
40834084 }
@@ -4115,7 +4116,7 @@ mod tests {
41154116 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 ,
41164117 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 ,
41174118 ) ;
4118- let p = & a as * const _ ;
4119+ let p = ptr :: addr_of! ( a ) ;
41194120 let r = _mm256_lddqu_si256 ( black_box ( p) ) ;
41204121 #[ rustfmt:: skip]
41214122 let e = _mm256_setr_epi8 (
@@ -4131,7 +4132,7 @@ mod tests {
41314132 unsafe fn test_mm256_stream_si256 ( ) {
41324133 let a = _mm256_setr_epi64x ( 1 , 2 , 3 , 4 ) ;
41334134 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) ;
41354136 assert_eq_m256i ( r, a) ;
41364137 }
41374138
@@ -4144,7 +4145,7 @@ mod tests {
41444145 let a = _mm256_set1_pd ( 7.0 ) ;
41454146 let mut mem = Memory { data : [ -1.0 ; 4 ] } ;
41464147
4147- _mm256_stream_pd ( & mut mem. data [ 0 ] as * mut f64 , a) ;
4148+ _mm256_stream_pd ( ptr :: addr_of_mut! ( mem. data[ 0 ] ) , a) ;
41484149 for i in 0 ..4 {
41494150 assert_eq ! ( mem. data[ i] , get_m256d( a, i) ) ;
41504151 }
@@ -4159,7 +4160,7 @@ mod tests {
41594160 let a = _mm256_set1_ps ( 7.0 ) ;
41604161 let mut mem = Memory { data : [ -1.0 ; 8 ] } ;
41614162
4162- _mm256_stream_ps ( & mut mem. data [ 0 ] as * mut f32 , a) ;
4163+ _mm256_stream_ps ( ptr :: addr_of_mut! ( mem. data[ 0 ] ) , a) ;
41634164 for i in 0 ..8 {
41644165 assert_eq ! ( mem. data[ i] , get_m256( a, i) ) ;
41654166 }
@@ -4807,7 +4808,7 @@ mod tests {
48074808 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,
48084809 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ,
48094810 ) ;
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 _ ) ;
48114812 #[ rustfmt:: skip]
48124813 let e = _mm256_setr_epi8 (
48134814 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,
@@ -4824,8 +4825,8 @@ mod tests {
48244825 let mut hi = _mm_undefined_ps ( ) ;
48254826 let mut lo = _mm_undefined_ps ( ) ;
48264827 _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 ,
48294830 a,
48304831 ) ;
48314832 assert_eq_m128 ( hi, _mm_setr_ps ( 5. , 6. , 7. , 8. ) ) ;
@@ -4838,8 +4839,8 @@ mod tests {
48384839 let mut hi = _mm_undefined_pd ( ) ;
48394840 let mut lo = _mm_undefined_pd ( ) ;
48404841 _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 ,
48434844 a,
48444845 ) ;
48454846 assert_eq_m128d ( hi, _mm_setr_pd ( 3. , 4. ) ) ;
@@ -4857,7 +4858,7 @@ mod tests {
48574858 ) ;
48584859 let mut hi = _mm_undefined_si128 ( ) ;
48594860 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) ;
48614862 #[ rustfmt:: skip]
48624863 let e_hi = _mm_setr_epi8 (
48634864 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 ,
0 commit comments