mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
23dcf5ab2d
For context of anyone following along, we've not completed the migration of statepoint to the operand bundle form. The only remaining piece is to actually version the statepoint intrinsic to remove the old inline operand sets. That will follow when I have some time; delay is useful here to allow downstream migrations.
25 lines
1.1 KiB
LLVM
25 lines
1.1 KiB
LLVM
; RUN: llc -verify-machineinstrs < %s | FileCheck %s
|
|
|
|
; Without removal of duplicate entries, the size is 62 lines
|
|
; CHECK: .section .llvm_stackmaps,{{.*$}}
|
|
; CHECK-NEXT:{{(.+$[[:space:]]){48}[[:space:]]}}
|
|
; CHECK-NOT:{{.|[[:space:]]}}
|
|
|
|
target triple = "x86_64-pc-linux-gnu"
|
|
|
|
declare void @func()
|
|
|
|
define i1 @test1(i32 addrspace(1)* %arg) gc "statepoint-example" {
|
|
entry:
|
|
%safepoint_token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 0, i32 0, void ()* @func, i32 0, i32 0, i32 0, i32 0) ["gc-live"(i32 addrspace(1)* %arg)]
|
|
%reloc1 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %safepoint_token, i32 0, i32 0)
|
|
%reloc2 = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token %safepoint_token, i32 0, i32 0)
|
|
%cmp1 = icmp eq i32 addrspace(1)* %reloc1, null
|
|
%cmp2 = icmp eq i32 addrspace(1)* %reloc2, null
|
|
%cmp = and i1 %cmp1, %cmp2
|
|
ret i1 %cmp
|
|
}
|
|
|
|
declare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64, i32, void ()*, i32, i32, ...)
|
|
declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(token, i32, i32)
|