1
1
use crate :: convert:: * ;
2
+ use zerocopy:: transmute;
2
3
3
4
///This constant comes from Kunth's prng (Empirically it works better than those from splitmix32).
4
5
pub ( crate ) const MULTIPLE : u64 = 6364136223846793005 ;
@@ -55,8 +56,7 @@ pub(crate) fn shuffle(a: u128) -> u128 {
55
56
use core:: arch:: x86:: * ;
56
57
#[ cfg( target_arch = "x86_64" ) ]
57
58
use core:: arch:: x86_64:: * ;
58
- use core:: mem:: transmute;
59
- unsafe { transmute ( _mm_shuffle_epi8 ( transmute ( a) , transmute ( SHUFFLE_MASK ) ) ) }
59
+ unsafe { transmute ! ( _mm_shuffle_epi8( transmute!( a) , transmute!( SHUFFLE_MASK ) ) ) }
60
60
}
61
61
#[ cfg( not( all( target_feature = "ssse3" , not( miri) ) ) ) ]
62
62
{
@@ -81,13 +81,12 @@ pub(crate) fn shuffle_and_add(base: u128, to_add: u128) -> u128 {
81
81
#[ cfg( all( any( target_arch = "x86" , target_arch = "x86_64" ) , target_feature = "sse2" , not( miri) ) ) ]
82
82
#[ inline( always) ]
83
83
pub ( crate ) fn add_by_64s ( a : [ u64 ; 2 ] , b : [ u64 ; 2 ] ) -> [ u64 ; 2 ] {
84
- use core:: mem:: transmute;
85
84
unsafe {
86
85
#[ cfg( target_arch = "x86" ) ]
87
86
use core:: arch:: x86:: * ;
88
87
#[ cfg( target_arch = "x86_64" ) ]
89
88
use core:: arch:: x86_64:: * ;
90
- transmute ( _mm_add_epi64 ( transmute ( a) , transmute ( b) ) )
89
+ transmute ! ( _mm_add_epi64( transmute! ( a) , transmute! ( b) ) )
91
90
}
92
91
}
93
92
@@ -105,10 +104,9 @@ pub(crate) fn aesenc(value: u128, xor: u128) -> u128 {
105
104
use core:: arch:: x86:: * ;
106
105
#[ cfg( target_arch = "x86_64" ) ]
107
106
use core:: arch:: x86_64:: * ;
108
- use core:: mem:: transmute;
109
107
unsafe {
110
- let value = transmute ( value) ;
111
- transmute ( _mm_aesenc_si128 ( value, transmute ( xor) ) )
108
+ let value = transmute ! ( value) ;
109
+ transmute ! ( _mm_aesenc_si128( value, transmute! ( xor) ) )
112
110
}
113
111
}
114
112
@@ -125,10 +123,9 @@ pub(crate) fn aesenc(value: u128, xor: u128) -> u128 {
125
123
use core:: arch:: aarch64:: * ;
126
124
#[ cfg( target_arch = "arm" ) ]
127
125
use core:: arch:: arm:: * ;
128
- use core:: mem:: transmute;
129
126
unsafe {
130
- let value = transmute ( value) ;
131
- xor ^ transmute :: < _ , u128 > ( vaesmcq_u8 ( vaeseq_u8 ( value, transmute ( 0u128 ) ) ) )
127
+ let value = transmute ! ( value) ;
128
+ xor ^ transmute :: < _ , u128 > ( vaesmcq_u8 ( vaeseq_u8 ( value, transmute ! ( 0u128 ) ) ) )
132
129
}
133
130
}
134
131
@@ -140,10 +137,9 @@ pub(crate) fn aesdec(value: u128, xor: u128) -> u128 {
140
137
use core:: arch:: x86:: * ;
141
138
#[ cfg( target_arch = "x86_64" ) ]
142
139
use core:: arch:: x86_64:: * ;
143
- use core:: mem:: transmute;
144
140
unsafe {
145
- let value = transmute ( value) ;
146
- transmute ( _mm_aesdec_si128 ( value, transmute ( xor) ) )
141
+ let value = transmute ! ( value) ;
142
+ transmute ! ( _mm_aesdec_si128( value, transmute! ( xor) ) )
147
143
}
148
144
}
149
145
@@ -160,10 +156,9 @@ pub(crate) fn aesdec(value: u128, xor: u128) -> u128 {
160
156
use core:: arch:: aarch64:: * ;
161
157
#[ cfg( target_arch = "arm" ) ]
162
158
use core:: arch:: arm:: * ;
163
- use core:: mem:: transmute;
164
159
unsafe {
165
- let value = transmute ( value) ;
166
- xor ^ transmute :: < _ , u128 > ( vaesimcq_u8 ( vaesdq_u8 ( value, transmute ( 0u128 ) ) ) )
160
+ let value = transmute ! ( value) ;
161
+ xor ^ transmute :: < _ , u128 > ( vaesimcq_u8 ( vaesdq_u8 ( value, transmute ! ( 0u128 ) ) ) )
167
162
}
168
163
}
169
164
@@ -207,7 +202,7 @@ mod test {
207
202
// #[cfg(target_arch = "x86_64")]
208
203
// use core::arch::x86_64::*;
209
204
// MASK.with(|mask| {
210
- // unsafe { transmute(_mm_shuffle_epi8(transmute(a), transmute(mask.get()))) }
205
+ // unsafe { transmute! (_mm_shuffle_epi8(transmute! (a), transmute! (mask.get()))) }
211
206
// })
212
207
// }
213
208
//
0 commit comments