164 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc < %s | FileCheck %s3 4target triple = "aarch64--linux-android"5 6define ptr @f1(ptr %x0, ptr %x1) {7; CHECK-LABEL: f1:8; CHECK: // %bb.0:9; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill10; CHECK-NEXT: .cfi_def_cfa_offset 1611; CHECK-NEXT: .cfi_offset w30, -1612; CHECK-NEXT: bl __hwasan_check_x1_1_fixed_439804651110413; CHECK-NEXT: mov x0, x114; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload15; CHECK-NEXT: ret16 call void @llvm.hwasan.check.memaccess.fixedshadow(ptr %x1, i32 1, i64 4398046511104)17 ret ptr %x118}19 20define ptr @f2(ptr %x0, ptr %x1) {21; CHECK-LABEL: f2:22; CHECK: // %bb.0:23; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill24; CHECK-NEXT: .cfi_def_cfa_offset 1625; CHECK-NEXT: .cfi_offset w30, -1626; CHECK-NEXT: bl __hwasan_check_x0_2_fixed_4398046511104_short_v227; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload28; CHECK-NEXT: ret29 call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr %x0, i32 2, i64 4398046511104)30 ret ptr %x031}32 33define void @f3(ptr %x0, ptr %x1) {34 ; 0x3ff0000 (kernel, match-all = 0xff)35; CHECK-LABEL: f3:36; CHECK: // %bb.0:37; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill38; CHECK-NEXT: .cfi_def_cfa_offset 1639; CHECK-NEXT: .cfi_offset w30, -1640; CHECK-NEXT: bl __hwasan_check_x1_67043328_fixed_439804651110441; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload42; CHECK-NEXT: ret43 call void @llvm.hwasan.check.memaccess.fixedshadow(ptr %x1, i32 67043328, i64 4398046511104)44 ret void45}46 47define void @f4(ptr %x0, ptr %x1) {48 ; 0x1000010 (access-size-index = 0, is-write = 1, match-all = 0x0)49; CHECK-LABEL: f4:50; CHECK: // %bb.0:51; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill52; CHECK-NEXT: .cfi_def_cfa_offset 1653; CHECK-NEXT: .cfi_offset w30, -1654; CHECK-NEXT: bl __hwasan_check_x1_16777232_fixed_4398046511104_short_v255; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload56; CHECK-NEXT: ret57 call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr %x1, i32 16777232, i64 4398046511104)58 ret void59}60 61declare void @llvm.hwasan.check.memaccess.fixedshadow(ptr, i32, i64)62declare void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr, i32, i64)63 64; CHECK: .section .text.hot,"axG",@progbits,__hwasan_check_x0_2_fixed_4398046511104_short_v2,comdat65; CHECK-NEXT: .type __hwasan_check_x0_2_fixed_4398046511104_short_v2,@function66; CHECK-NEXT: .weak __hwasan_check_x0_2_fixed_4398046511104_short_v267; CHECK-NEXT: .hidden __hwasan_check_x0_2_fixed_4398046511104_short_v268; CHECK-NEXT: __hwasan_check_x0_2_fixed_4398046511104_short_v2:69; CHECK-NEXT: sbfx x16, x0, #4, #5270; CHECK-NEXT: mov x17, #439804651110471; CHECK-NEXT: ldrb w16, [x17, x16]72; CHECK-NEXT: cmp x16, x0, lsr #5673; CHECK-NEXT: b.ne .Ltmp074; CHECK-NEXT: .Ltmp1:75; CHECK-NEXT: ret76; CHECK-NEXT: .Ltmp0:77; CHECK-NEXT: cmp w16, #1578; CHECK-NEXT: b.hi .Ltmp279; CHECK-NEXT: and x17, x0, #0xf80; CHECK-NEXT: add x17, x17, #381; CHECK-NEXT: cmp w16, w1782; CHECK-NEXT: b.ls .Ltmp283; CHECK-NEXT: orr x16, x0, #0xf84; CHECK-NEXT: ldrb w16, [x16]85; CHECK-NEXT: cmp x16, x0, lsr #5686; CHECK-NEXT: b.eq .Ltmp187; CHECK-NEXT: .Ltmp2:88; CHECK-NEXT: stp x0, x1, [sp, #-256]!89; CHECK-NEXT: stp x29, x30, [sp, #232]90; CHECK-NEXT: mov x1, #291; CHECK-NEXT: adrp x16, :got:__hwasan_tag_mismatch_v292; CHECK-NEXT: ldr x16, [x16, :got_lo12:__hwasan_tag_mismatch_v2]93; CHECK-NEXT: br x1694 95 96; CHECK: .section .text.hot,"axG",@progbits,__hwasan_check_x1_1_fixed_4398046511104,comdat97; CHECK-NEXT: .type __hwasan_check_x1_1_fixed_4398046511104,@function98; CHECK-NEXT: .weak __hwasan_check_x1_1_fixed_439804651110499; CHECK-NEXT: .hidden __hwasan_check_x1_1_fixed_4398046511104100; CHECK-NEXT: __hwasan_check_x1_1_fixed_4398046511104:101; CHECK-NEXT: sbfx x16, x1, #4, #52102; CHECK-NEXT: mov x17, #4398046511104103; CHECK-NEXT: ldrb w16, [x17, x16]104; CHECK-NEXT: cmp x16, x1, lsr #56105; CHECK-NEXT: b.ne .Ltmp3106; CHECK-NEXT: .Ltmp4:107; CHECK-NEXT: ret108; CHECK-NEXT: .Ltmp3:109; CHECK-NEXT: stp x0, x1, [sp, #-256]!110; CHECK-NEXT: stp x29, x30, [sp, #232]111; CHECK-NEXT: mov x0, x1112; CHECK-NEXT: mov x1, #1113; CHECK-NEXT: adrp x16, :got:__hwasan_tag_mismatch114; CHECK-NEXT: ldr x16, [x16, :got_lo12:__hwasan_tag_mismatch]115; CHECK-NEXT: br x16116 117; CHECK: __hwasan_check_x1_67043328_fixed_4398046511104:118; CHECK-NEXT: sbfx x16, x1, #4, #52119; CHECK-NEXT: mov x17, #4398046511104120; CHECK-NEXT: ldrb w16, [x17, x16]121; CHECK-NEXT: cmp x16, x1, lsr #56122; CHECK-NEXT: b.ne .Ltmp5123; CHECK-NEXT: .Ltmp6:124; CHECK-NEXT: ret125; CHECK-NEXT: .Ltmp5:126; CHECK-NEXT: lsr x17, x1, #56127; CHECK-NEXT: cmp x17, #255128; CHECK-NEXT: b.eq .Ltmp6129; CHECK-NEXT: stp x0, x1, [sp, #-256]!130; CHECK-NEXT: stp x29, x30, [sp, #232]131; CHECK-NEXT: mov x0, x1132; CHECK-NEXT: mov x1, #0133; CHECK-NEXT: b __hwasan_tag_mismatch134 135; CHECK: __hwasan_check_x1_16777232_fixed_4398046511104_short_v2:136; CHECK-NEXT: sbfx x16, x1, #4, #52137; CHECK-NEXT: mov x17, #4398046511104138; CHECK-NEXT: ldrb w16, [x17, x16]139; CHECK-NEXT: cmp x16, x1, lsr #56140; CHECK-NEXT: b.ne .Ltmp7141; CHECK-NEXT: .Ltmp8:142; CHECK-NEXT: ret143; CHECK-NEXT: .Ltmp7:144; CHECK-NEXT: lsr x17, x1, #56145; CHECK-NEXT: cmp x17, #0146; CHECK-NEXT: b.eq .Ltmp8147; CHECK-NEXT: cmp w16, #15148; CHECK-NEXT: b.hi .Ltmp9149; CHECK-NEXT: and x17, x1, #0xf150; CHECK-NEXT: cmp w16, w17151; CHECK-NEXT: b.ls .Ltmp9152; CHECK-NEXT: orr x16, x1, #0xf153; CHECK-NEXT: ldrb w16, [x16]154; CHECK-NEXT: cmp x16, x1, lsr #56155; CHECK-NEXT: b.eq .Ltmp8156; CHECK-NEXT: .Ltmp9:157; CHECK-NEXT: stp x0, x1, [sp, #-256]!158; CHECK-NEXT: stp x29, x30, [sp, #232]159; CHECK-NEXT: mov x0, x1160; CHECK-NEXT: mov x1, #16161; CHECK-NEXT: adrp x16, :got:__hwasan_tag_mismatch_v2162; CHECK-NEXT: ldr x16, [x16, :got_lo12:__hwasan_tag_mismatch_v2]163; CHECK-NEXT: br x16164