Skip to content

Commit 76f8e9a

Browse files
committed
Add memset test verifying the parameters are passed in registers
1 parent 842adc2 commit 76f8e9a

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//@ assembly-output: emit-asm
2+
//@ compile-flags: -O -Zregparm=3 -Cunsafe-allow-abi-mismatch=regparm
3+
//@ only-x86
4+
5+
#![crate_type = "lib"]
6+
7+
use std::ffi::c_void;
8+
9+
unsafe extern "C" {
10+
fn memset(p: *mut c_void, val: i32, len: usize) -> *mut c_void;
11+
}
12+
13+
#[unsafe(no_mangle)]
14+
pub unsafe extern "C" fn entrypoint(
15+
len: usize, val: i32, ptr: *mut c_void
16+
) -> *mut c_void {
17+
unsafe { memset(ptr, val, len) }
18+
}
19+
20+
// CHECK: mov{{.*}}eax
21+
// CHECK: mov{{.*}}ecx
22+
// CHECK: mov{{.*}}esi
23+
// CHECK: jmp{{.*}}memset

0 commit comments

Comments
 (0)