blob: 201db1f0ed80e8b308b223b4e380b2cc3556b4a4 [file]
//@ compile-flags: -Copt-level=3 -C no-prepopulate-passes
//@ only-64bit (so I don't need to worry about usize)
#![crate_type = "lib"]
#![feature(core_intrinsics)]
// This deals in a count of elements, not bytes, so we need to multiply.
// Ensure we preserve UB from a count too high to be valid.
use std::intrinsics::copy;
// CHECK-LABEL: @copy_u16(
#[no_mangle]
pub unsafe fn copy_u16(src: *const u16, dst: *mut u16, count: usize) {
// CHECK: [[BYTES:%.+]] = mul nuw nsw i64 2, %count
// CHECK: call void @llvm.memmove.p0.p0.i64(ptr align 2 %dst, ptr align 2 %src, i64 [[BYTES]], i1 false)
copy(src, dst, count)
}