1e3485345SAlexey Baturo; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 235b8bb0aSAlexey Baturo; RUN: llc -mtriple=riscv64 < %s | FileCheck %s 335b8bb0aSAlexey Baturo; RUN: llc -mtriple=riscv64 --relocation-model=pic < %s | FileCheck %s 4c042d8f7SCraig Topper; RUN: llc -mtriple=riscv64 -mattr=+c --riscv-no-aliases < %s \ 5c042d8f7SCraig Topper; RUN: | FileCheck %s --check-prefix=COMPRESS 6e3485345SAlexey Baturo 71456b686SNikita Popovdefine ptr @f2(ptr %x0, ptr %x1) { 8e3485345SAlexey Baturo; CHECK-LABEL: f2: 9e3485345SAlexey Baturo; CHECK: # %bb.0: 10e3485345SAlexey Baturo; CHECK-NEXT: addi sp, sp, -16 11e3485345SAlexey Baturo; CHECK-NEXT: .cfi_def_cfa_offset 16 12e3485345SAlexey Baturo; CHECK-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 13e3485345SAlexey Baturo; CHECK-NEXT: .cfi_offset ra, -8 14e3485345SAlexey Baturo; CHECK-NEXT: mv t0, a1 15e3485345SAlexey Baturo; CHECK-NEXT: call __hwasan_check_x10_2_short 16e3485345SAlexey Baturo; CHECK-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 17*97982a8cSdlav-sc; CHECK-NEXT: .cfi_restore ra 18e3485345SAlexey Baturo; CHECK-NEXT: addi sp, sp, 16 19*97982a8cSdlav-sc; CHECK-NEXT: .cfi_def_cfa_offset 0 20e3485345SAlexey Baturo; CHECK-NEXT: ret 21c042d8f7SCraig Topper; 22c042d8f7SCraig Topper; COMPRESS-LABEL: f2: 23c042d8f7SCraig Topper; COMPRESS: # %bb.0: 24c042d8f7SCraig Topper; COMPRESS-NEXT: c.addi sp, -16 25c042d8f7SCraig Topper; COMPRESS-NEXT: .cfi_def_cfa_offset 16 26c042d8f7SCraig Topper; COMPRESS-NEXT: c.sdsp ra, 8(sp) # 8-byte Folded Spill 27c042d8f7SCraig Topper; COMPRESS-NEXT: .cfi_offset ra, -8 28c042d8f7SCraig Topper; COMPRESS-NEXT: c.mv t0, a1 29c042d8f7SCraig Topper; COMPRESS-NEXT: call __hwasan_check_x10_2_short 30c042d8f7SCraig Topper; COMPRESS-NEXT: c.ldsp ra, 8(sp) # 8-byte Folded Reload 31*97982a8cSdlav-sc; COMPRESS-NEXT: .cfi_restore ra 32c042d8f7SCraig Topper; COMPRESS-NEXT: c.addi sp, 16 33*97982a8cSdlav-sc; COMPRESS-NEXT: .cfi_def_cfa_offset 0 34c042d8f7SCraig Topper; COMPRESS-NEXT: c.jr ra 351456b686SNikita Popov call void @llvm.hwasan.check.memaccess.shortgranules(ptr %x1, ptr %x0, i32 2) 361456b686SNikita Popov ret ptr %x0 37e3485345SAlexey Baturo} 38e3485345SAlexey Baturo 391456b686SNikita Popovdeclare void @llvm.hwasan.check.memaccess.shortgranules(ptr, ptr, i32) 40e3485345SAlexey Baturo 41e3485345SAlexey Baturo; CHECK: .section .text.hot,"axG",@progbits,__hwasan_check_x10_2_short,comdat 42e3485345SAlexey Baturo; CHECK-NEXT: .type __hwasan_check_x10_2_short,@function 43e3485345SAlexey Baturo; CHECK-NEXT: .weak __hwasan_check_x10_2_short 44e3485345SAlexey Baturo; CHECK-NEXT: .hidden __hwasan_check_x10_2_short 45e3485345SAlexey Baturo; CHECK-NEXT: __hwasan_check_x10_2_short: 46e3485345SAlexey Baturo; CHECK-NEXT: slli t1, a0, 8 47e3485345SAlexey Baturo; CHECK-NEXT: srli t1, t1, 12 48e3485345SAlexey Baturo; CHECK-NEXT: add t1, t0, t1 49e3485345SAlexey Baturo; CHECK-NEXT: lbu t1, 0(t1) 50e3485345SAlexey Baturo; CHECK-NEXT: srli t2, a0, 56 51e3485345SAlexey Baturo; CHECK-NEXT: bne t2, t1, .Ltmp0 52e3485345SAlexey Baturo; CHECK-NEXT: .Ltmp1: 53e3485345SAlexey Baturo; CHECK-NEXT: ret 54e3485345SAlexey Baturo; CHECK-NEXT: .Ltmp0: 55e3485345SAlexey Baturo; CHECK-NEXT: li t3, 16 56e3485345SAlexey Baturo; CHECK-NEXT: bgeu t1, t3, .Ltmp2 57e3485345SAlexey Baturo; CHECK-NEXT: andi t3, a0, 15 58e3485345SAlexey Baturo; CHECK-NEXT: addi t3, t3, 3 59e3485345SAlexey Baturo; CHECK-NEXT: bge t3, t1, .Ltmp2 60e3485345SAlexey Baturo; CHECK-NEXT: ori t1, a0, 15 61e3485345SAlexey Baturo; CHECK-NEXT: lbu t1, 0(t1) 62e3485345SAlexey Baturo; CHECK-NEXT: beq t1, t2, .Ltmp1 63e3485345SAlexey Baturo; CHECK-NEXT: .Ltmp2: 64e3485345SAlexey Baturo; CHECK-NEXT: addi sp, sp, -256 65e3485345SAlexey Baturo; CHECK-NEXT: sd a0, 80(sp) 66e3485345SAlexey Baturo; CHECK-NEXT: sd a1, 88(sp) 67e3485345SAlexey Baturo; CHECK-NEXT: sd s0, 64(sp) 68e3485345SAlexey Baturo; CHECK-NEXT: sd ra, 8(sp) 69e3485345SAlexey Baturo; CHECK-NEXT: li a1, 2 7035b8bb0aSAlexey Baturo; CHECK-NEXT: call __hwasan_tag_mismatch_v2 71c042d8f7SCraig Topper 72c042d8f7SCraig Topper; COMPRESS: .section .text.hot,"axG",@progbits,__hwasan_check_x10_2_short,comdat 73c042d8f7SCraig Topper; COMPRESS-NEXT: .type __hwasan_check_x10_2_short,@function 74c042d8f7SCraig Topper; COMPRESS-NEXT: .weak __hwasan_check_x10_2_short 75c042d8f7SCraig Topper; COMPRESS-NEXT: .hidden __hwasan_check_x10_2_short 76c042d8f7SCraig Topper; COMPRESS-NEXT: __hwasan_check_x10_2_short: 77c042d8f7SCraig Topper; COMPRESS-NEXT: slli t1, a0, 8 78c042d8f7SCraig Topper; COMPRESS-NEXT: srli t1, t1, 12 79c042d8f7SCraig Topper; COMPRESS-NEXT: c.add t1, t0 80c042d8f7SCraig Topper; COMPRESS-NEXT: lbu t1, 0(t1) 81c042d8f7SCraig Topper; COMPRESS-NEXT: srli t2, a0, 56 82c042d8f7SCraig Topper; COMPRESS-NEXT: bne t2, t1, .Ltmp0 83c042d8f7SCraig Topper; COMPRESS-NEXT: .Ltmp1: 84c042d8f7SCraig Topper; COMPRESS-NEXT: c.jr ra 85c042d8f7SCraig Topper; COMPRESS-NEXT: .Ltmp0: 86c042d8f7SCraig Topper; COMPRESS-NEXT: c.li t3, 16 87c042d8f7SCraig Topper; COMPRESS-NEXT: bgeu t1, t3, .Ltmp2 88c042d8f7SCraig Topper; COMPRESS-NEXT: andi t3, a0, 15 89c042d8f7SCraig Topper; COMPRESS-NEXT: c.addi t3, 3 90c042d8f7SCraig Topper; COMPRESS-NEXT: bge t3, t1, .Ltmp2 91c042d8f7SCraig Topper; COMPRESS-NEXT: ori t1, a0, 15 92c042d8f7SCraig Topper; COMPRESS-NEXT: lbu t1, 0(t1) 93c042d8f7SCraig Topper; COMPRESS-NEXT: beq t1, t2, .Ltmp1 94c042d8f7SCraig Topper; COMPRESS-NEXT: .Ltmp2: 95c042d8f7SCraig Topper; COMPRESS-NEXT: c.addi16sp sp, -256 96c042d8f7SCraig Topper; COMPRESS-NEXT: c.sdsp a0, 80(sp) 97c042d8f7SCraig Topper; COMPRESS-NEXT: c.sdsp a1, 88(sp) 98c042d8f7SCraig Topper; COMPRESS-NEXT: c.sdsp s0, 64(sp) 99c042d8f7SCraig Topper; COMPRESS-NEXT: c.sdsp ra, 8(sp) 100c042d8f7SCraig Topper; COMPRESS-NEXT: c.li a1, 2 101c042d8f7SCraig Topper; COMPRESS-NEXT: call __hwasan_tag_mismatch_v2 102