brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.2 KiB · 16796d5 Raw
147 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -o - %s -fixup-allow-gcptr-in-csr=false -run-pass fixup-statepoint-caller-saved | FileCheck %s3# RUN: llc -o - %s -fixup-allow-gcptr-in-csr=false -passes='fixup-statepoint-caller-saved' | FileCheck %s4 5--- |6  ; ModuleID = 'test/CodeGen/X86/statepoint-fixup-invoke.mir'7  source_filename = "test/CodeGen/X86/statepoint-fixup-invoke.mir"8  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"9  target triple = "x86_64-pc-linux-gnu"10 11  declare void @some_call(ptr addrspace(1))12 13  declare i32 @personality_function()14 15  define ptr addrspace(1) @test_basic(ptr addrspace(1) %obj, ptr addrspace(1) %obj1) gc "statepoint-example" personality ptr @personality_function {16  entry:17    %0 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void (ptr addrspace(1))) @some_call, i32 1, i32 0, ptr addrspace(1) %obj, i32 0, i32 0) [ "gc-live"(ptr addrspace(1) %obj, ptr addrspace(1) %obj1), "deopt"(i32 0, i32 -1, i32 0, i32 0, i32 0) ]18            to label %invoke_safepoint_normal_dest unwind label %exceptional_return19 20  invoke_safepoint_normal_dest:                     ; preds = %entry21    %obj.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %0, i32 0, i32 0) ; (%obj, %obj)22    %obj1.relocated = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %0, i32 1, i32 1) ; (%obj1, %obj1)23    br label %normal_return24 25  normal_return:                                    ; preds = %invoke_safepoint_normal_dest26    ret ptr addrspace(1) %obj.relocated27 28  exceptional_return:                               ; preds = %entry29    %landing_pad = landingpad token30            cleanup31    %obj.relocated1 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 0, i32 0) ; (%obj, %obj)32    %obj1.relocated1 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %landing_pad, i32 1, i32 1) ; (%obj1, %obj1)33    ret ptr addrspace(1) %obj1.relocated134  }35 36  declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)37 38  ; Function Attrs: nounwind readonly39  declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #040 41  ; Function Attrs: nounwind42  declare void @llvm.stackprotector(ptr, ptr) #143 44  attributes #0 = { nounwind readonly }45  attributes #1 = { nounwind }46 47...48---49name:            test_basic50alignment:       1651exposesReturnsTwice: false52legalized:       false53regBankSelected: false54selected:        false55failedISel:      false56tracksRegLiveness: true57hasWinCFI:       false58registers:       []59liveins:60  - { reg: '$rdi', virtual-reg: '' }61  - { reg: '$rsi', virtual-reg: '' }62frameInfo:63  isFrameAddressTaken: false64  isReturnAddressTaken: false65  hasStackMap:     false66  hasPatchPoint:   false67  stackSize:       068  offsetAdjustment: 069  maxAlignment:    170  adjustsStack:    false71  hasCalls:        true72  stackProtector:  ''73  maxCallFrameSize: 429496729574  cvBytesOfCalleeSavedRegisters: 075  hasOpaqueSPAdjustment: false76  hasVAStart:      false77  hasMustTailInVarArgFunc: false78  localFrameSize:  079  savePoint:       []80  restorePoint:    []81fixedStack:      []82stack:           []83callSites:       []84constants:       []85machineFunctionInfo: {}86body:             |87  ; CHECK-LABEL: name: test_basic88  ; CHECK: bb.0.entry:89  ; CHECK:   successors: %bb.1(0x7ffff800), %bb.3(0x00000800)90  ; CHECK:   liveins: $rdi, $rsi91  ; CHECK-DAG:   MOV64mr %stack.0, 1, $noreg, 0, $noreg, $rsi :: (store (s64) into %stack.0)92  ; CHECK-DAG:   MOV64mr %stack.1, 1, $noreg, 0, $noreg, $rdi :: (store (s64) into %stack.1)93  ; CHECK:   EH_LABEL <mcsymbol .Ltmp0>94  ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp95  ; CHECK:   STATEPOINT 0, 0, 1, @some_call, $rdi, 2, 0, 2, 0, 2, 5, 2, 0, 2, -1, 2, 0, 2, 0, 2, 0, 2, 2, 1, 8, %stack.0, 0, 1, 8, %stack.1, 0, 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp :: (load store (s64) on %stack.0), (load store (s64) on %stack.1)96  ; CHECK-DAG:   $r14 = MOV64rm %stack.0, 1, $noreg, 0, $noreg :: (load (s64) from %stack.0)97  ; CHECK-DAG:   $rbx = MOV64rm %stack.1, 1, $noreg, 0, $noreg :: (load (s64) from %stack.1)98  ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp99  ; CHECK:   EH_LABEL <mcsymbol .Ltmp1>100  ; CHECK:   JMP_1 %bb.1101  ; CHECK: bb.1.invoke_safepoint_normal_dest:102  ; CHECK:   successors: %bb.2(0x80000000)103  ; CHECK:   liveins: $rbx104  ; CHECK: bb.2.normal_return:105  ; CHECK:   liveins: $rbx106  ; CHECK:   $rax = COPY killed renamable $rbx107  ; CHECK:   RET 0, $rax108  ; CHECK: bb.3.exceptional_return (landing-pad):109  ; CHECK:   liveins: $rax, $rdx, $r14110  ; CHECK:   EH_LABEL <mcsymbol .Ltmp2>111  ; CHECK-DAG:   $r14 = MOV64rm %stack.0, 1, $noreg, 0, $noreg :: (load (s64) from %stack.0)112  ; CHECK-DAG:   $rbx = MOV64rm %stack.1, 1, $noreg, 0, $noreg :: (load (s64) from %stack.1)113  ; CHECK:   $rax = COPY killed renamable $r14114  ; CHECK:   RET 0, $rax115  bb.0.entry:116    successors: %bb.1(0x7ffff800), %bb.3(0x00000800)117    liveins: $rdi, $rsi118 119    renamable $r14 = COPY $rsi120    renamable $rbx = COPY $rdi121    EH_LABEL <mcsymbol .Ltmp0>122    ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp123    renamable $r14, renamable $rbx = STATEPOINT 0, 0, 1, @some_call, $rdi, 2, 0, 2, 0, 2, 5, 2, 0, 2, -1, 2, 0, 2, 0, 2, 0, 2, 2, killed renamable $r14(tied-def 0), killed renamable $rbx(tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp124    ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp125    EH_LABEL <mcsymbol .Ltmp1>126    JMP_1 %bb.1127 128  bb.1.invoke_safepoint_normal_dest:129    successors: %bb.2(0x80000000)130    liveins: $rbx131 132 133  bb.2.normal_return:134    liveins: $rbx135 136    $rax = COPY killed renamable $rbx137    RET 0, $rax138 139  bb.3.exceptional_return (landing-pad):140    liveins: $rax, $rdx, $r14141 142    EH_LABEL <mcsymbol .Ltmp2>143    $rax = COPY killed renamable $r14144    RET 0, $rax145 146...147