| //@ add-minicore |
| //@ assembly-output: emit-asm |
| //@ compile-flags: --target bpfel-unknown-none -C target_feature=+allows-misaligned-mem-access |
| //@ min-llvm-version: 22 |
| //@ needs-llvm-components: bpf |
| #![feature(no_core)] |
| #![crate_type = "rlib"] |
| #![no_core] |
| |
| extern crate minicore; |
| use minicore::*; |
| |
| // CHECK-LABEL: test_load_i64: |
| // CHECK: r0 = *(u64 *)(r1 + 0) |
| #[no_mangle] |
| pub unsafe fn test_load_i64(p: *const u64) -> u64 { |
| let mut tmp: u64 = 0; |
| copy_nonoverlapping(p as *const u8, &mut tmp as *mut u64 as *mut u8, 8); |
| tmp |
| } |
| |
| // CHECK-LABEL: test_store_i64: |
| // CHECK: *(u64 *)(r1 + 0) = r2 |
| #[no_mangle] |
| pub unsafe fn test_store_i64(p: *mut u64, v: u64) { |
| copy_nonoverlapping(&v as *const u64 as *const u8, p as *mut u8, 8); |
| } |