| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc < %s | FileCheck %s |
| |
| target triple = "x86_64-unknown-linux-gnu" |
| |
| define void @load1(ptr nocapture readonly %x) { |
| ; CHECK-LABEL: load1: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushq %rax |
| ; CHECK-NEXT: .cfi_def_cfa_offset 16 |
| ; CHECK-NEXT: callq __asan_check_load_add_1_RDI |
| ; CHECK-NEXT: callq __asan_check_store_add_1_RDI |
| ; CHECK-NEXT: popq %rax |
| ; CHECK-NEXT: .cfi_def_cfa_offset 8 |
| ; CHECK-NEXT: retq |
| call void @llvm.asan.check.memaccess(ptr %x, i32 0) |
| call void @llvm.asan.check.memaccess(ptr %x, i32 32) |
| ret void |
| } |
| |
| define void @load2(ptr nocapture readonly %x) nounwind { |
| ; CHECK-LABEL: load2: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushq %rax |
| ; CHECK-NEXT: callq __asan_check_load_add_2_RDI |
| ; CHECK-NEXT: callq __asan_check_store_add_2_RDI |
| ; CHECK-NEXT: popq %rax |
| ; CHECK-NEXT: retq |
| %1 = ptrtoint ptr %x to i64 |
| call void @llvm.asan.check.memaccess(ptr %x, i32 2) |
| call void @llvm.asan.check.memaccess(ptr %x, i32 34) |
| ret void |
| } |
| |
| define void @load4(ptr nocapture readonly %x) nounwind { |
| ; CHECK-LABEL: load4: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushq %rax |
| ; CHECK-NEXT: callq __asan_check_load_add_4_RDI |
| ; CHECK-NEXT: callq __asan_check_store_add_4_RDI |
| ; CHECK-NEXT: popq %rax |
| ; CHECK-NEXT: retq |
| %1 = ptrtoint ptr %x to i64 |
| call void @llvm.asan.check.memaccess(ptr %x, i32 4) |
| call void @llvm.asan.check.memaccess(ptr %x, i32 36) |
| ret void |
| } |
| |
| define void @load8(ptr nocapture readonly %x) nounwind { |
| ; CHECK-LABEL: load8: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushq %rax |
| ; CHECK-NEXT: callq __asan_check_load_add_8_RDI |
| ; CHECK-NEXT: callq __asan_check_store_add_8_RDI |
| ; CHECK-NEXT: popq %rax |
| ; CHECK-NEXT: retq |
| %1 = ptrtoint ptr %x to i64 |
| call void @llvm.asan.check.memaccess(ptr %x, i32 6) |
| call void @llvm.asan.check.memaccess(ptr %x, i32 38) |
| ret void |
| } |
| |
| define void @load16(ptr nocapture readonly %x) nounwind { |
| ; CHECK-LABEL: load16: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushq %rax |
| ; CHECK-NEXT: callq __asan_check_load_add_16_RDI |
| ; CHECK-NEXT: callq __asan_check_store_add_16_RDI |
| ; CHECK-NEXT: popq %rax |
| ; CHECK-NEXT: retq |
| %1 = ptrtoint ptr %x to i64 |
| call void @llvm.asan.check.memaccess(ptr %x, i32 8) |
| call void @llvm.asan.check.memaccess(ptr %x, i32 40) |
| ret void |
| } |
| |
| declare void @llvm.asan.check.memaccess(ptr, i32 immarg) |