153 lines
4.4 KiB
LLVM
153 lines
4.4 KiB
LLVM
; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -enable-patchpoint-liveness=false | FileCheck %s
|
|
|
|
; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps
|
|
; CHECK-NEXT: __LLVM_StackMaps:
|
|
|
|
; Header
|
|
; CHECK-NEXT: .byte 3
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 0
|
|
|
|
; NumFunctions
|
|
; CHECK-NEXT: .long 1
|
|
; NumConstants
|
|
; CHECK-NEXT: .long 0
|
|
; NumRecords
|
|
; CHECK-NEXT: .long 1
|
|
|
|
; StackSizeRecord[NumFunctions]
|
|
; StackSizeRecord[0]
|
|
; CHECK-NEXT: .quad _main
|
|
; CHECK-NEXT: .quad 24
|
|
; CHECK-NEXT: .quad 1
|
|
|
|
; Constants[NumConstants] (empty)
|
|
|
|
; StkMapRecord[NumRecords]
|
|
; StkMapRecord[0]
|
|
; CHECK-NEXT: .quad 0
|
|
; CHECK-NEXT: .long {{.*}}
|
|
; CHECK-NEXT: .short {{.*}}
|
|
; NumLocations
|
|
; CHECK-NEXT: .short 11
|
|
; Location[NumLocations]
|
|
; Location[0]
|
|
; CHECK-NEXT: .byte 1
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 1
|
|
; CHECK-NEXT: .short {{.*}}
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 0
|
|
; Location[1]
|
|
; CHECK-NEXT: .byte 4
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 8
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 22
|
|
; Location[2]
|
|
; CHECK-NEXT: .byte 1
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 1
|
|
; CHECK-NEXT: .short {{.*}}
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 0
|
|
; Location[3]
|
|
; CHECK-NEXT: .byte 1
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 16
|
|
; CHECK-NEXT: .short {{.*}}
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 0
|
|
; Location[4]
|
|
; CHECK-NEXT: .byte 1
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 16
|
|
; CHECK-NEXT: .short {{.*}}
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 0
|
|
; Location[5]
|
|
; CHECK-NEXT: .byte 4
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 8
|
|
; CHECK-NEXT: .short {{.*}}
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 66
|
|
; Location[6]
|
|
; CHECK-NEXT: .byte 1
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 4
|
|
; CHECK-NEXT: .short {{.*}}
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 0
|
|
; Location[7]
|
|
; CHECK-NEXT: .byte 4
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 8
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 0
|
|
; Location[8]
|
|
; CHECK-NEXT: .byte 1
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 4
|
|
; CHECK-NEXT: .short {{.*}}
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 0
|
|
; Location[9]
|
|
; CHECK-NEXT: .byte 4
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 8
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 0
|
|
; Location[10]
|
|
; CHECK-NEXT: .byte 1
|
|
; CHECK-NEXT: .byte 0
|
|
; CHECK-NEXT: .short 1
|
|
; CHECK-NEXT: .short {{.*}}
|
|
; CHECK-NEXT: .short 0
|
|
; CHECK-NEXT: .long 0
|
|
|
|
@p32 = external global i8 addrspace(270)*
|
|
|
|
%struct1 = type {i32, i64}
|
|
%struct2 = type {i1, i1, i1}
|
|
|
|
declare void @llvm.experimental.stackmap(i64, i32, ...)
|
|
|
|
define dso_local i32 @main(i32 %argc, i8** %argv) {
|
|
entry:
|
|
%i1reg = icmp eq i32 %argc, 5
|
|
%i7reg = zext i1 %i1reg to i7
|
|
%halfreg = sitofp i32 %argc to half
|
|
%ptr32 = load i8 addrspace(270)*, i8 addrspace(270)** @p32
|
|
%structreg1 = insertvalue %struct1 zeroinitializer, i32 %argc, 0
|
|
%structreg2 = insertvalue %struct2 zeroinitializer, i1 %i1reg, 0
|
|
call void (i64, i32, ...) @llvm.experimental.stackmap(
|
|
i64 0,
|
|
i32 0,
|
|
i1 %i1reg,
|
|
i7 22,
|
|
i7 %i7reg,
|
|
half 1.0,
|
|
half %halfreg,
|
|
i128 66,
|
|
; FIXME: fix and test vectors. At the moment even legally sized vectors
|
|
; are broken:
|
|
; https://github.com/llvm/llvm-project/issues/55613
|
|
;
|
|
; FIXME: test non-constant i128 once these are fixed:
|
|
; - https://github.com/llvm/llvm-project/issues/26431
|
|
; - https://github.com/llvm/llvm-project/issues/55957
|
|
i8 addrspace(270)* %ptr32,
|
|
; FIXME: The stackmap record generated for structs is incorrect:
|
|
; - https://github.com/llvm/llvm-project/issues/55649
|
|
; - https://github.com/llvm/llvm-project/issues/55957
|
|
%struct1 zeroinitializer,
|
|
%struct1 %structreg1,
|
|
%struct2 zeroinitializer,
|
|
%struct2 %structreg2)
|
|
ret i32 0
|
|
}
|