| ; 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 |
| } |