brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 4e8f3c4 Raw
83 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs < %s | FileCheck %s3 4target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128"5target triple = "x86_64-pc-win64"6 7declare void @foo()8 9define void @test_empty() gc "statepoint-example" {10; CHECK-LABEL: test_empty:11; CHECK:       # %bb.0: # %entry12; CHECK-NEXT:    pushq %rax13; CHECK-NEXT:    .cfi_def_cfa_offset 1614; CHECK-NEXT:    callq foo@PLT15; CHECK-NEXT:  .Ltmp0:16; CHECK-NEXT:    popq %rax17; CHECK-NEXT:    .cfi_def_cfa_offset 818; CHECK-NEXT:    retq19entry:20  %token = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void ()) @foo, i32 0, i32 0, i32 0, i32 0) ["gc-live" ()]21  ret void22}23 24define void @test_dead(ptr addrspace(1) %p) gc "statepoint-example" {25; CHECK-LABEL: test_dead:26; CHECK:       # %bb.0: # %entry27; CHECK-NEXT:    pushq %rax28; CHECK-NEXT:    .cfi_def_cfa_offset 1629; CHECK-NEXT:    callq foo@PLT30; CHECK-NEXT:  .Ltmp1:31; CHECK-NEXT:    popq %rax32; CHECK-NEXT:    .cfi_def_cfa_offset 833; CHECK-NEXT:    retq34entry:35  %token = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void ()) @foo, i32 0, i32 0, i32 0, i32 0) ["gc-live" (ptr addrspace(1) %p)]36  ret void37}38 39define ptr addrspace(1) @test_one(ptr addrspace(1) %p) gc "statepoint-example" {40; CHECK-LABEL: test_one:41; CHECK:       # %bb.0: # %entry42; CHECK-NEXT:    pushq %rax43; CHECK-NEXT:    .cfi_def_cfa_offset 1644; CHECK-NEXT:    movq %rdi, (%rsp)45; CHECK-NEXT:    callq foo@PLT46; CHECK-NEXT:  .Ltmp2:47; CHECK-NEXT:    movq (%rsp), %rax48; CHECK-NEXT:    popq %rcx49; CHECK-NEXT:    .cfi_def_cfa_offset 850; CHECK-NEXT:    retq51entry:52  %token = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void ()) @foo, i32 0, i32 0, i32 0, i32 0) ["gc-live" (ptr addrspace(1) %p)]53  %p2 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 0, i32 0)54  ret ptr addrspace(1) %p255}56 57define ptr addrspace(1) @test_one_derived(ptr addrspace(1) %p) gc "statepoint-example" {58; CHECK-LABEL: test_one_derived:59; CHECK:       # %bb.0: # %entry60; CHECK-NEXT:    subq $24, %rsp61; CHECK-NEXT:    .cfi_def_cfa_offset 3262; CHECK-NEXT:    movq %rdi, {{[0-9]+}}(%rsp)63; CHECK-NEXT:    addq $8, %rdi64; CHECK-NEXT:    movq %rdi, {{[0-9]+}}(%rsp)65; CHECK-NEXT:    callq foo@PLT66; CHECK-NEXT:  .Ltmp3:67; CHECK-NEXT:    movq {{[0-9]+}}(%rsp), %rax68; CHECK-NEXT:    addq $24, %rsp69; CHECK-NEXT:    .cfi_def_cfa_offset 870; CHECK-NEXT:    retq71entry:72  %gep = getelementptr i8, ptr addrspace(1) %p, i32 873  %token = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 0, i32 0, ptr elementtype(void ()) @foo, i32 0, i32 0, i32 0, i32 0) ["gc-live" (ptr addrspace(1) %p, ptr addrspace(1) %gep)]74  %gep2 = call ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %token, i32 0, i32 1)75  ret ptr addrspace(1) %gep276}77 78 79 80declare token @llvm.experimental.gc.statepoint.p0(i64, i32, ptr, i32, i32, ...)81declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32, i32)82 83