xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/patchpoint-verifiable.mir (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: llc -mtriple=x86_64-apple-darwin -stop-after branch-folder -start-after branch-folder -o - %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker# This test verifies that the machine verifier won't report an error when
3*9880d681SAndroid Build Coastguard Worker# verifying the PATCHPOINT instruction.
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker--- |
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker  define void @small_patchpoint_codegen(i64 %p1, i64 %p2, i64 %p3, i64 %p4) {
8*9880d681SAndroid Build Coastguard Worker  entry:
9*9880d681SAndroid Build Coastguard Worker    %result = tail call i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 5, i32 5, i8* null, i32 2, i64 %p1, i64 %p2)
10*9880d681SAndroid Build Coastguard Worker    ret void
11*9880d681SAndroid Build Coastguard Worker  }
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker  declare i64 @llvm.experimental.patchpoint.i64(i64, i32, i8*, i32, ...)
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker...
16*9880d681SAndroid Build Coastguard Worker---
17*9880d681SAndroid Build Coastguard Workername:            small_patchpoint_codegen
18*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
19*9880d681SAndroid Build Coastguard Workerliveins:
20*9880d681SAndroid Build Coastguard Worker  - { reg: '%rdi' }
21*9880d681SAndroid Build Coastguard Worker  - { reg: '%rsi' }
22*9880d681SAndroid Build Coastguard WorkerframeInfo:
23*9880d681SAndroid Build Coastguard Worker  hasPatchPoint: true
24*9880d681SAndroid Build Coastguard Worker  stackSize:     8
25*9880d681SAndroid Build Coastguard Worker  adjustsStack:  true
26*9880d681SAndroid Build Coastguard Worker  hasCalls:      true
27*9880d681SAndroid Build Coastguard WorkerfixedStack:
28*9880d681SAndroid Build Coastguard Worker  - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16 }
29*9880d681SAndroid Build Coastguard Workerbody: |
30*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
31*9880d681SAndroid Build Coastguard Worker    liveins: %rdi, %rsi, %rbp
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker    frame-setup PUSH64r killed %rbp, implicit-def %rsp, implicit %rsp
34*9880d681SAndroid Build Coastguard Worker    CFI_INSTRUCTION .cfi_def_cfa_offset 16
35*9880d681SAndroid Build Coastguard Worker    CFI_INSTRUCTION .cfi_offset %rbp, -16
36*9880d681SAndroid Build Coastguard Worker    %rbp = frame-setup MOV64rr %rsp
37*9880d681SAndroid Build Coastguard Worker    CFI_INSTRUCTION .cfi_def_cfa_register %rbp
38*9880d681SAndroid Build Coastguard Worker  ; CHECK: PATCHPOINT 5, 5, 0, 2, 0, %rdi, %rsi, csr_64, implicit-def dead early-clobber %r11, implicit-def %rsp, implicit-def dead %rax
39*9880d681SAndroid Build Coastguard Worker    PATCHPOINT 5, 5, 0, 2, 0, %rdi, %rsi, csr_64, implicit-def dead early-clobber %r11, implicit-def %rsp, implicit-def dead %rax
40*9880d681SAndroid Build Coastguard Worker    %rbp = POP64r implicit-def %rsp, implicit %rsp
41*9880d681SAndroid Build Coastguard Worker    RETQ
42*9880d681SAndroid Build Coastguard Worker...
43