5
5
#[ cfg( test) ]
6
6
use stdsimd_test:: assert_instr;
7
7
8
- use x86:: c_void;
9
-
10
8
#[ allow( improper_ctypes) ]
11
9
extern "C" {
12
10
#[ link_name = "llvm.x86.xsave" ]
13
11
fn xsave ( p : * mut i8 , hi : i32 , lo : i32 ) -> ( ) ;
14
12
#[ link_name = "llvm.x86.xrstor" ]
15
- fn xrstor ( p : * const c_void , hi : i32 , lo : i32 ) -> ( ) ;
13
+ fn xrstor ( p : * const u8 , hi : i32 , lo : i32 ) -> ( ) ;
16
14
#[ link_name = "llvm.x86.xsetbv" ]
17
15
fn xsetbv ( v : i32 , hi : i32 , lo : i32 ) -> ( ) ;
18
16
#[ link_name = "llvm.x86.xgetbv" ]
19
17
fn xgetbv ( x : i32 ) -> i64 ;
20
18
#[ link_name = "llvm.x86.xsave64" ]
21
19
fn xsave64 ( p : * mut i8 , hi : i32 , lo : i32 ) -> ( ) ;
22
20
#[ link_name = "llvm.x86.xrstor64" ]
23
- fn xrstor64 ( p : * const c_void , hi : i32 , lo : i32 ) -> ( ) ;
21
+ fn xrstor64 ( p : * const u8 , hi : i32 , lo : i32 ) -> ( ) ;
24
22
#[ link_name = "llvm.x86.xsaveopt" ]
25
23
fn xsaveopt ( p : * mut i8 , hi : i32 , lo : i32 ) -> ( ) ;
26
24
#[ link_name = "llvm.x86.xsaveopt64" ]
@@ -34,9 +32,9 @@ extern "C" {
34
32
#[ link_name = "llvm.x86.xsaves64" ]
35
33
fn xsaves64 ( p : * mut i8 , hi : i32 , lo : i32 ) -> ( ) ;
36
34
#[ link_name = "llvm.x86.xrstors" ]
37
- fn xrstors ( p : * const c_void , hi : i32 , lo : i32 ) -> ( ) ;
35
+ fn xrstors ( p : * const u8 , hi : i32 , lo : i32 ) -> ( ) ;
38
36
#[ link_name = "llvm.x86.xrstors64" ]
39
- fn xrstors64 ( p : * const c_void , hi : i32 , lo : i32 ) -> ( ) ;
37
+ fn xrstors64 ( p : * const u8 , hi : i32 , lo : i32 ) -> ( ) ;
40
38
}
41
39
42
40
/// Perform a full or partial save of the enabled processor states to memory at
@@ -50,7 +48,7 @@ extern "C" {
50
48
#[ inline( always) ]
51
49
#[ target_feature = "+xsave" ]
52
50
#[ cfg_attr( test, assert_instr( xsave) ) ]
53
- pub unsafe fn _xsave ( mem_addr : * mut c_void , save_mask : u64 ) -> ( ) {
51
+ pub unsafe fn _xsave ( mem_addr : * mut u8 , save_mask : u64 ) -> ( ) {
54
52
xsave ( mem_addr as * mut i8 , ( save_mask >> 32 ) as i32 , save_mask as i32 ) ;
55
53
}
56
54
@@ -63,7 +61,7 @@ pub unsafe fn _xsave(mem_addr: *mut c_void, save_mask: u64) -> () {
63
61
#[ inline( always) ]
64
62
#[ target_feature = "+xsave" ]
65
63
#[ cfg_attr( test, assert_instr( xrstor) ) ]
66
- pub unsafe fn _xrstor ( mem_addr : * const c_void , rs_mask : u64 ) -> ( ) {
64
+ pub unsafe fn _xrstor ( mem_addr : * const u8 , rs_mask : u64 ) -> ( ) {
67
65
xrstor ( mem_addr, ( rs_mask >> 32 ) as i32 , rs_mask as i32 ) ;
68
66
}
69
67
@@ -104,7 +102,7 @@ pub unsafe fn _xgetbv(xcr_no: u32) -> u64 {
104
102
#[ target_feature = "+xsave" ]
105
103
#[ cfg_attr( test, assert_instr( xsave64) ) ]
106
104
#[ cfg( not( target_arch = "x86" ) ) ]
107
- pub unsafe fn _xsave64 ( mem_addr : * mut c_void , save_mask : u64 ) -> ( ) {
105
+ pub unsafe fn _xsave64 ( mem_addr : * mut u8 , save_mask : u64 ) -> ( ) {
108
106
xsave64 ( mem_addr as * mut i8 , ( save_mask >> 32 ) as i32 , save_mask as i32 ) ;
109
107
}
110
108
@@ -118,7 +116,7 @@ pub unsafe fn _xsave64(mem_addr: *mut c_void, save_mask: u64) -> () {
118
116
#[ target_feature = "+xsave" ]
119
117
#[ cfg_attr( test, assert_instr( xrstor64) ) ]
120
118
#[ cfg( not( target_arch = "x86" ) ) ]
121
- pub unsafe fn _xrstor64 ( mem_addr : * const c_void , rs_mask : u64 ) -> ( ) {
119
+ pub unsafe fn _xrstor64 ( mem_addr : * const u8 , rs_mask : u64 ) -> ( ) {
122
120
xrstor64 ( mem_addr, ( rs_mask >> 32 ) as i32 , rs_mask as i32 ) ;
123
121
}
124
122
@@ -132,7 +130,7 @@ pub unsafe fn _xrstor64(mem_addr: *const c_void, rs_mask: u64) -> () {
132
130
#[ inline( always) ]
133
131
#[ target_feature = "+xsave,+xsaveopt" ]
134
132
#[ cfg_attr( test, assert_instr( xsaveopt) ) ]
135
- pub unsafe fn _xsaveopt ( mem_addr : * mut c_void , save_mask : u64 ) -> ( ) {
133
+ pub unsafe fn _xsaveopt ( mem_addr : * mut u8 , save_mask : u64 ) -> ( ) {
136
134
xsaveopt ( mem_addr as * mut i8 , ( save_mask >> 32 ) as i32 , save_mask as i32 ) ;
137
135
}
138
136
@@ -147,7 +145,7 @@ pub unsafe fn _xsaveopt(mem_addr: *mut c_void, save_mask: u64) -> () {
147
145
#[ target_feature = "+xsave,+xsaveopt" ]
148
146
#[ cfg_attr( test, assert_instr( xsaveopt64) ) ]
149
147
#[ cfg( not( target_arch = "x86" ) ) ]
150
- pub unsafe fn _xsaveopt64 ( mem_addr : * mut c_void , save_mask : u64 ) -> ( ) {
148
+ pub unsafe fn _xsaveopt64 ( mem_addr : * mut u8 , save_mask : u64 ) -> ( ) {
151
149
xsaveopt64 (
152
150
mem_addr as * mut i8 ,
153
151
( save_mask >> 32 ) as i32 ,
@@ -164,7 +162,7 @@ pub unsafe fn _xsaveopt64(mem_addr: *mut c_void, save_mask: u64) -> () {
164
162
#[ inline( always) ]
165
163
#[ target_feature = "+xsave,+xsavec" ]
166
164
#[ cfg_attr( test, assert_instr( xsavec) ) ]
167
- pub unsafe fn _xsavec ( mem_addr : * mut c_void , save_mask : u64 ) -> ( ) {
165
+ pub unsafe fn _xsavec ( mem_addr : * mut u8 , save_mask : u64 ) -> ( ) {
168
166
xsavec ( mem_addr as * mut i8 , ( save_mask >> 32 ) as i32 , save_mask as i32 ) ;
169
167
}
170
168
@@ -178,7 +176,7 @@ pub unsafe fn _xsavec(mem_addr: *mut c_void, save_mask: u64) -> () {
178
176
#[ target_feature = "+xsave,+xsavec" ]
179
177
#[ cfg_attr( test, assert_instr( xsavec64) ) ]
180
178
#[ cfg( not( target_arch = "x86" ) ) ]
181
- pub unsafe fn _xsavec64 ( mem_addr : * mut c_void , save_mask : u64 ) -> ( ) {
179
+ pub unsafe fn _xsavec64 ( mem_addr : * mut u8 , save_mask : u64 ) -> ( ) {
182
180
xsavec64 ( mem_addr as * mut i8 , ( save_mask >> 32 ) as i32 , save_mask as i32 ) ;
183
181
}
184
182
@@ -192,7 +190,7 @@ pub unsafe fn _xsavec64(mem_addr: *mut c_void, save_mask: u64) -> () {
192
190
#[ inline( always) ]
193
191
#[ target_feature = "+xsave,+xsaves" ]
194
192
#[ cfg_attr( test, assert_instr( xsaves) ) ]
195
- pub unsafe fn _xsaves ( mem_addr : * mut c_void , save_mask : u64 ) -> ( ) {
193
+ pub unsafe fn _xsaves ( mem_addr : * mut u8 , save_mask : u64 ) -> ( ) {
196
194
xsaves ( mem_addr as * mut i8 , ( save_mask >> 32 ) as i32 , save_mask as i32 ) ;
197
195
}
198
196
@@ -207,7 +205,7 @@ pub unsafe fn _xsaves(mem_addr: *mut c_void, save_mask: u64) -> () {
207
205
#[ target_feature = "+xsave,+xsaves" ]
208
206
#[ cfg_attr( test, assert_instr( xsaves64) ) ]
209
207
#[ cfg( not( target_arch = "x86" ) ) ]
210
- pub unsafe fn _xsaves64 ( mem_addr : * mut c_void , save_mask : u64 ) -> ( ) {
208
+ pub unsafe fn _xsaves64 ( mem_addr : * mut u8 , save_mask : u64 ) -> ( ) {
211
209
xsaves64 ( mem_addr as * mut i8 , ( save_mask >> 32 ) as i32 , save_mask as i32 ) ;
212
210
}
213
211
@@ -223,7 +221,7 @@ pub unsafe fn _xsaves64(mem_addr: *mut c_void, save_mask: u64) -> () {
223
221
#[ inline( always) ]
224
222
#[ target_feature = "+xsave,+xsaves" ]
225
223
#[ cfg_attr( test, assert_instr( xrstors) ) ]
226
- pub unsafe fn _xrstors ( mem_addr : * const c_void , rs_mask : u64 ) -> ( ) {
224
+ pub unsafe fn _xrstors ( mem_addr : * const u8 , rs_mask : u64 ) -> ( ) {
227
225
xrstors ( mem_addr, ( rs_mask >> 32 ) as i32 , rs_mask as i32 ) ;
228
226
}
229
227
@@ -240,13 +238,12 @@ pub unsafe fn _xrstors(mem_addr: *const c_void, rs_mask: u64) -> () {
240
238
#[ target_feature = "+xsave,+xsaves" ]
241
239
#[ cfg_attr( test, assert_instr( xrstors64) ) ]
242
240
#[ cfg( not( target_arch = "x86" ) ) ]
243
- pub unsafe fn _xrstors64 ( mem_addr : * const c_void , rs_mask : u64 ) -> ( ) {
241
+ pub unsafe fn _xrstors64 ( mem_addr : * const u8 , rs_mask : u64 ) -> ( ) {
244
242
xrstors64 ( mem_addr, ( rs_mask >> 32 ) as i32 , rs_mask as i32 ) ;
245
243
}
246
244
247
245
#[ cfg( test) ]
248
246
mod tests {
249
- use x86:: c_void;
250
247
use x86:: i586:: xsave;
251
248
use stdsimd_test:: simd_test;
252
249
use std:: fmt;
@@ -260,8 +257,8 @@ mod tests {
260
257
fn new ( ) -> Buffer {
261
258
Buffer { data : [ 0 ; 1024 ] }
262
259
}
263
- fn ptr ( & mut self ) -> * mut c_void {
264
- & mut self . data [ 0 ] as * mut _ as * mut c_void
260
+ fn ptr ( & mut self ) -> * mut u8 {
261
+ & mut self . data [ 0 ] as * mut _ as * mut u8
265
262
}
266
263
}
267
264
0 commit comments