198 lines · plain
1; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s2; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 -fast-isel -fast-isel-abort=1 | FileCheck %s3 4; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps5; CHECK-NEXT: __LLVM_StackMaps:6; Header7; CHECK-NEXT: .byte 38; CHECK-NEXT: .byte 09; CHECK-NEXT: .short 010; Num Functions11; CHECK-NEXT: .long 412; Num LargeConstants13; CHECK-NEXT: .long 314; Num Callsites15; CHECK-NEXT: .long 716 17; Functions and stack size18; CHECK-NEXT: .quad _constantargs19; CHECK-NEXT: .quad 820; CHECK-NEXT: .quad 121; CHECK-NEXT: .quad _liveConstant22; CHECK-NEXT: .quad 823; CHECK-NEXT: .quad 124; CHECK-NEXT: .quad _directFrameIdx25; CHECK-NEXT: .quad 4026; CHECK-NEXT: .quad 127; CHECK-NEXT: .quad _longid28; CHECK-NEXT: .quad 829; CHECK-NEXT: .quad 430 31; Large Constants32; CHECK-NEXT: .quad 214748364833; CHECK-NEXT: .quad 429496729534; CHECK-NEXT: .quad 429496729635 36; Callsites37; Constant arguments38;39; CHECK-NEXT: .quad 140; CHECK-NEXT: .long L{{.*}}-_constantargs41; CHECK-NEXT: .short 042; CHECK-NEXT: .short 1243; SmallConstant44; CHECK-NEXT: .byte 445; CHECK-NEXT: .byte 046; CHECK-NEXT: .short 847; CHECK-NEXT: .short 048; CHECK-NEXT: .short 049; CHECK-NEXT: .long -150; SmallConstant51; CHECK-NEXT: .byte 452; CHECK-NEXT: .byte 053; CHECK-NEXT: .short 854; CHECK-NEXT: .short 055; CHECK-NEXT: .short 056; CHECK-NEXT: .long -157; SmallConstant58; CHECK-NEXT: .byte 459; CHECK-NEXT: .byte 060; CHECK-NEXT: .short 861; CHECK-NEXT: .short 062; CHECK-NEXT: .short 063; CHECK-NEXT: .long 6553664; SmallConstant65; CHECK-NEXT: .byte 466; CHECK-NEXT: .byte 067; CHECK-NEXT: .short 868; CHECK-NEXT: .short 069; CHECK-NEXT: .short 070; CHECK-NEXT: .long 200000000071; SmallConstant72; CHECK-NEXT: .byte 473; CHECK-NEXT: .byte 074; CHECK-NEXT: .short 875; CHECK-NEXT: .short 076; CHECK-NEXT: .short 077; CHECK-NEXT: .long 214748364778; SmallConstant79; CHECK-NEXT: .byte 480; CHECK-NEXT: .byte 081; CHECK-NEXT: .short 882; CHECK-NEXT: .short 083; CHECK-NEXT: .short 084; CHECK-NEXT: .long -185; SmallConstant86; CHECK-NEXT: .byte 487; CHECK-NEXT: .byte 088; CHECK-NEXT: .short 889; CHECK-NEXT: .short 090; CHECK-NEXT: .short 091; CHECK-NEXT: .long -192; SmallConstant93; CHECK-NEXT: .byte 494; CHECK-NEXT: .byte 095; CHECK-NEXT: .short 896; CHECK-NEXT: .short 097; CHECK-NEXT: .short 098; CHECK-NEXT: .long 099; LargeConstant at index 0100; CHECK-NEXT: .byte 5101; CHECK-NEXT: .byte 0102; CHECK-NEXT: .short 8103; CHECK-NEXT: .short 0104; CHECK-NEXT: .short 0105; CHECK-NEXT: .long 0106; LargeConstant at index 1107; CHECK-NEXT: .byte 5108; CHECK-NEXT: .byte 0109; CHECK-NEXT: .short 8110; CHECK-NEXT: .short 0111; CHECK-NEXT: .short 0112; CHECK-NEXT: .long 1113; LargeConstant at index 2114; CHECK-NEXT: .byte 5115; CHECK-NEXT: .byte 0116; CHECK-NEXT: .short 8117; CHECK-NEXT: .short 0118; CHECK-NEXT: .short 0119; CHECK-NEXT: .long 2120; SmallConstant121; CHECK-NEXT: .byte 4122; CHECK-NEXT: .byte 0123; CHECK-NEXT: .short 8124; CHECK-NEXT: .short 0125; CHECK-NEXT: .short 0126; CHECK-NEXT: .long -1127 128define void @constantargs() {129entry:130 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)131 ret void132}133 134; Map a constant value.135;136; CHECK-LABEL: .long L{{.*}}-_liveConstant137; CHECK-NEXT: .short 0138; 1 location139; CHECK-NEXT: .short 1140; Loc 0: SmallConstant141; CHECK-NEXT: .byte 4142; CHECK-NEXT: .byte 0143; CHECK-NEXT: .short 8144; CHECK-NEXT: .short 0145; CHECK-NEXT: .short 0146; CHECK-NEXT: .long 33147 148define void @liveConstant() {149 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 5, i32 33)150 ret void151}152 153; Directly map an alloca's address.154;155; Callsite 16156; CHECK-LABEL: .long L{{.*}}-_directFrameIdx157; CHECK-NEXT: .short 0158; 1 location159; CHECK-NEXT: .short 1160; Loc 0: Direct rbp - ofs161; CHECK-NEXT: .byte 2162; CHECK-NEXT: .byte 0163; CHECK-NEXT: .short 8164; CHECK-NEXT: .short 6165; CHECK-NEXT: .short 0166; CHECK-NEXT: .long167 168define void @directFrameIdx() {169entry:170 %metadata1 = alloca i64, i32 3, align 8171 store i64 11, ptr %metadata1172 store i64 12, ptr %metadata1173 store i64 13, ptr %metadata1174 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 0, ptr %metadata1)175 ret void176}177 178; Test a 64-bit ID.179;180; CHECK: .quad 4294967295181; CHECK-LABEL: .long L{{.*}}-_longid182; CHECK: .quad 4294967296183; CHECK-LABEL: .long L{{.*}}-_longid184; CHECK: .quad 9223372036854775807185; CHECK-LABEL: .long L{{.*}}-_longid186; CHECK: .quad -1187; CHECK-LABEL: .long L{{.*}}-_longid188define void @longid() {189entry:190 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967295, i32 0)191 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967296, i32 0)192 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 9223372036854775807, i32 0)193 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 -1, i32 0)194 ret void195}196 197declare void @llvm.experimental.stackmap(i64, i32, ...)198