1; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s 2; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 -fast-isel -fast-isel-abort=1 | FileCheck %s 3 4; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps 5; CHECK-NEXT: __LLVM_StackMaps: 6; Header 7; CHECK-NEXT: .byte 2 8; CHECK-NEXT: .byte 0 9; CHECK-NEXT: .short 0 10; Num Functions 11; CHECK-NEXT: .long 4 12; Num LargeConstants 13; CHECK-NEXT: .long 3 14; Num Callsites 15; CHECK-NEXT: .long 7 16 17; Functions and stack size 18; CHECK-NEXT: .quad _constantargs 19; CHECK-NEXT: .quad 8 20; CHECK-NEXT: .quad 1 21; CHECK-NEXT: .quad _liveConstant 22; CHECK-NEXT: .quad 8 23; CHECK-NEXT: .quad 1 24; CHECK-NEXT: .quad _directFrameIdx 25; CHECK-NEXT: .quad 40 26; CHECK-NEXT: .quad 1 27; CHECK-NEXT: .quad _longid 28; CHECK-NEXT: .quad 8 29; CHECK-NEXT: .quad 4 30 31; Large Constants 32; CHECK-NEXT: .quad 2147483648 33; CHECK-NEXT: .quad 4294967295 34; CHECK-NEXT: .quad 4294967296 35 36; Callsites 37; Constant arguments 38; 39; CHECK-NEXT: .quad 1 40; CHECK-NEXT: .long L{{.*}}-_constantargs 41; CHECK-NEXT: .short 0 42; CHECK-NEXT: .short 12 43; SmallConstant 44; CHECK-NEXT: .byte 4 45; CHECK-NEXT: .byte 8 46; CHECK-NEXT: .short 0 47; CHECK-NEXT: .long -1 48; SmallConstant 49; CHECK-NEXT: .byte 4 50; CHECK-NEXT: .byte 8 51; CHECK-NEXT: .short 0 52; CHECK-NEXT: .long -1 53; SmallConstant 54; CHECK-NEXT: .byte 4 55; CHECK-NEXT: .byte 8 56; CHECK-NEXT: .short 0 57; CHECK-NEXT: .long 65536 58; SmallConstant 59; CHECK-NEXT: .byte 4 60; CHECK-NEXT: .byte 8 61; CHECK-NEXT: .short 0 62; CHECK-NEXT: .long 2000000000 63; SmallConstant 64; CHECK-NEXT: .byte 4 65; CHECK-NEXT: .byte 8 66; CHECK-NEXT: .short 0 67; CHECK-NEXT: .long 2147483647 68; SmallConstant 69; CHECK-NEXT: .byte 4 70; CHECK-NEXT: .byte 8 71; CHECK-NEXT: .short 0 72; CHECK-NEXT: .long -1 73; SmallConstant 74; CHECK-NEXT: .byte 4 75; CHECK-NEXT: .byte 8 76; CHECK-NEXT: .short 0 77; CHECK-NEXT: .long -1 78; SmallConstant 79; CHECK-NEXT: .byte 4 80; CHECK-NEXT: .byte 8 81; CHECK-NEXT: .short 0 82; CHECK-NEXT: .long 0 83; LargeConstant at index 0 84; CHECK-NEXT: .byte 5 85; CHECK-NEXT: .byte 8 86; CHECK-NEXT: .short 0 87; CHECK-NEXT: .long 0 88; LargeConstant at index 1 89; CHECK-NEXT: .byte 5 90; CHECK-NEXT: .byte 8 91; CHECK-NEXT: .short 0 92; CHECK-NEXT: .long 1 93; LargeConstant at index 2 94; CHECK-NEXT: .byte 5 95; CHECK-NEXT: .byte 8 96; CHECK-NEXT: .short 0 97; CHECK-NEXT: .long 2 98; SmallConstant 99; CHECK-NEXT: .byte 4 100; CHECK-NEXT: .byte 8 101; CHECK-NEXT: .short 0 102; CHECK-NEXT: .long -1 103 104define void @constantargs() { 105entry: 106 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 1, i32 15, i16 65535, i16 -1, i32 65536, i32 2000000000, i32 2147483647, i32 -1, i32 4294967295, i32 4294967296, i64 2147483648, i64 4294967295, i64 4294967296, i64 -1) 107 ret void 108} 109 110; Map a constant value. 111; 112; CHECK-LABEL: .long L{{.*}}-_liveConstant 113; CHECK-NEXT: .short 0 114; 1 location 115; CHECK-NEXT: .short 1 116; Loc 0: SmallConstant 117; CHECK-NEXT: .byte 4 118; CHECK-NEXT: .byte 8 119; CHECK-NEXT: .short 0 120; CHECK-NEXT: .long 33 121 122define void @liveConstant() { 123 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 5, i32 33) 124 ret void 125} 126 127; Directly map an alloca's address. 128; 129; Callsite 16 130; CHECK-LABEL: .long L{{.*}}-_directFrameIdx 131; CHECK-NEXT: .short 0 132; 1 location 133; CHECK-NEXT: .short 1 134; Loc 0: Direct RBP - ofs 135; CHECK-NEXT: .byte 2 136; CHECK-NEXT: .byte 8 137; CHECK-NEXT: .short 6 138; CHECK-NEXT: .long 139 140define void @directFrameIdx() { 141entry: 142 %metadata1 = alloca i64, i32 3, align 8 143 store i64 11, i64* %metadata1 144 store i64 12, i64* %metadata1 145 store i64 13, i64* %metadata1 146 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 0, i64* %metadata1) 147 ret void 148} 149 150; Test a 64-bit ID. 151; 152; CHECK: .quad 4294967295 153; CHECK-LABEL: .long L{{.*}}-_longid 154; CHECK: .quad 4294967296 155; CHECK-LABEL: .long L{{.*}}-_longid 156; CHECK: .quad 9223372036854775807 157; CHECK-LABEL: .long L{{.*}}-_longid 158; CHECK: .quad -1 159; CHECK-LABEL: .long L{{.*}}-_longid 160define void @longid() { 161entry: 162 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967295, i32 0) 163 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967296, i32 0) 164 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 9223372036854775807, i32 0) 165 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 -1, i32 0) 166 ret void 167} 168 169declare void @llvm.experimental.stackmap(i64, i32, ...) 170