1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm64-apple-darwin -mattr=+reserve-x18 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm64-apple-darwin -mattr=+reserve-x18 -fast-isel -fast-isel-abort=1 < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker; 4*9880d681SAndroid Build Coastguard Worker; Note: Print verbose stackmaps using -debug-only=stackmaps. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; We are not getting the correct stack alignment when cross compiling for arm64. 7*9880d681SAndroid Build Coastguard Worker; So specify a datalayout here. 8*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: __LLVM_StackMaps: 12*9880d681SAndroid Build Coastguard Worker; Header 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 0 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 16*9880d681SAndroid Build Coastguard Worker; Num Functions 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 11 18*9880d681SAndroid Build Coastguard Worker; Num LargeConstants 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 2 20*9880d681SAndroid Build Coastguard Worker; Num Callsites 21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 11 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker; Functions and stack size 24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _constantargs 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 16 26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _osrinline 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 32 28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _osrcold 29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 16 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _propertyRead 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 16 32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _propertyWrite 33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 16 34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _jsVoidCall 35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 16 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _jsIntCall 37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 16 38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _spilledValue 39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 160 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _spilledStackMapValue 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 128 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _liveConstant 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 16 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad _clobberLR 45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 112 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker; Num LargeConstants 48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 4294967295 49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 4294967296 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker; Constant arguments 52*9880d681SAndroid Build Coastguard Worker; 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .quad 1 54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long L{{.*}}-_constantargs 55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 4 57*9880d681SAndroid Build Coastguard Worker; SmallConstant 58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 4 59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 65535 62*9880d681SAndroid Build Coastguard Worker; SmallConstant 63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 4 64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 65536 67*9880d681SAndroid Build Coastguard Worker; SmallConstant 68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 5 69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 72*9880d681SAndroid Build Coastguard Worker; LargeConstant at index 0 73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 5 74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 1 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerdefine void @constantargs() { 79*9880d681SAndroid Build Coastguard Workerentry: 80*9880d681SAndroid Build Coastguard Worker %0 = inttoptr i64 244837814094590 to i8* 81*9880d681SAndroid Build Coastguard Worker tail call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 1, i32 20, i8* %0, i32 0, i64 65535, i64 65536, i64 4294967295, i64 4294967296) 82*9880d681SAndroid Build Coastguard Worker ret void 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker; Inline OSR Exit 86*9880d681SAndroid Build Coastguard Worker; 87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_osrinline 88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 2 90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 98*9880d681SAndroid Build Coastguard Workerdefine void @osrinline(i64 %a, i64 %b) { 99*9880d681SAndroid Build Coastguard Workerentry: 100*9880d681SAndroid Build Coastguard Worker ; Runtime void->void call. 101*9880d681SAndroid Build Coastguard Worker call void inttoptr (i64 244837814094590 to void ()*)() 102*9880d681SAndroid Build Coastguard Worker ; Followed by inline OSR patchpoint with 12-byte shadow and 2 live vars. 103*9880d681SAndroid Build Coastguard Worker call void (i64, i32, ...) @llvm.experimental.stackmap(i64 3, i32 12, i64 %a, i64 %b) 104*9880d681SAndroid Build Coastguard Worker ret void 105*9880d681SAndroid Build Coastguard Worker} 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker; Cold OSR Exit 108*9880d681SAndroid Build Coastguard Worker; 109*9880d681SAndroid Build Coastguard Worker; 2 live variables in register. 110*9880d681SAndroid Build Coastguard Worker; 111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_osrcold 112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 2 114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 122*9880d681SAndroid Build Coastguard Workerdefine void @osrcold(i64 %a, i64 %b) { 123*9880d681SAndroid Build Coastguard Workerentry: 124*9880d681SAndroid Build Coastguard Worker %test = icmp slt i64 %a, %b 125*9880d681SAndroid Build Coastguard Worker br i1 %test, label %ret, label %cold 126*9880d681SAndroid Build Coastguard Workercold: 127*9880d681SAndroid Build Coastguard Worker ; OSR patchpoint with 12-byte nop-slide and 2 live vars. 128*9880d681SAndroid Build Coastguard Worker %thunk = inttoptr i64 244837814094590 to i8* 129*9880d681SAndroid Build Coastguard Worker call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 4, i32 20, i8* %thunk, i32 0, i64 %a, i64 %b) 130*9880d681SAndroid Build Coastguard Worker unreachable 131*9880d681SAndroid Build Coastguard Workerret: 132*9880d681SAndroid Build Coastguard Worker ret void 133*9880d681SAndroid Build Coastguard Worker} 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker; Property Read 136*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_propertyRead 137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 139*9880d681SAndroid Build Coastguard Worker; 140*9880d681SAndroid Build Coastguard Worker; FIXME: There are currently no stackmap entries. After moving to 141*9880d681SAndroid Build Coastguard Worker; AnyRegCC, we will have entries for the object and return value. 142*9880d681SAndroid Build Coastguard Workerdefine i64 @propertyRead(i64* %obj) { 143*9880d681SAndroid Build Coastguard Workerentry: 144*9880d681SAndroid Build Coastguard Worker %resolveRead = inttoptr i64 244837814094590 to i8* 145*9880d681SAndroid Build Coastguard Worker %result = call i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 5, i32 20, i8* %resolveRead, i32 1, i64* %obj) 146*9880d681SAndroid Build Coastguard Worker %add = add i64 %result, 3 147*9880d681SAndroid Build Coastguard Worker ret i64 %add 148*9880d681SAndroid Build Coastguard Worker} 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Worker; Property Write 151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_propertyWrite 152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 2 154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 162*9880d681SAndroid Build Coastguard Workerdefine void @propertyWrite(i64 %dummy1, i64* %obj, i64 %dummy2, i64 %a) { 163*9880d681SAndroid Build Coastguard Workerentry: 164*9880d681SAndroid Build Coastguard Worker %resolveWrite = inttoptr i64 244837814094590 to i8* 165*9880d681SAndroid Build Coastguard Worker call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 6, i32 20, i8* %resolveWrite, i32 2, i64* %obj, i64 %a) 166*9880d681SAndroid Build Coastguard Worker ret void 167*9880d681SAndroid Build Coastguard Worker} 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Worker; Void JS Call 170*9880d681SAndroid Build Coastguard Worker; 171*9880d681SAndroid Build Coastguard Worker; 2 live variables in registers. 172*9880d681SAndroid Build Coastguard Worker; 173*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_jsVoidCall 174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 2 176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 184*9880d681SAndroid Build Coastguard Workerdefine void @jsVoidCall(i64 %dummy1, i64* %obj, i64 %arg, i64 %l1, i64 %l2) { 185*9880d681SAndroid Build Coastguard Workerentry: 186*9880d681SAndroid Build Coastguard Worker %resolveCall = inttoptr i64 244837814094590 to i8* 187*9880d681SAndroid Build Coastguard Worker call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 7, i32 20, i8* %resolveCall, i32 2, i64* %obj, i64 %arg, i64 %l1, i64 %l2) 188*9880d681SAndroid Build Coastguard Worker ret void 189*9880d681SAndroid Build Coastguard Worker} 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Worker; i64 JS Call 192*9880d681SAndroid Build Coastguard Worker; 193*9880d681SAndroid Build Coastguard Worker; 2 live variables in registers. 194*9880d681SAndroid Build Coastguard Worker; 195*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_jsIntCall 196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 2 198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 1 203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short {{[0-9]+}} 205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 0 206*9880d681SAndroid Build Coastguard Workerdefine i64 @jsIntCall(i64 %dummy1, i64* %obj, i64 %arg, i64 %l1, i64 %l2) { 207*9880d681SAndroid Build Coastguard Workerentry: 208*9880d681SAndroid Build Coastguard Worker %resolveCall = inttoptr i64 244837814094590 to i8* 209*9880d681SAndroid Build Coastguard Worker %result = call i64 (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.i64(i64 8, i32 20, i8* %resolveCall, i32 2, i64* %obj, i64 %arg, i64 %l1, i64 %l2) 210*9880d681SAndroid Build Coastguard Worker %add = add i64 %result, 3 211*9880d681SAndroid Build Coastguard Worker ret i64 %add 212*9880d681SAndroid Build Coastguard Worker} 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Worker; Spilled stack map values. 215*9880d681SAndroid Build Coastguard Worker; 216*9880d681SAndroid Build Coastguard Worker; Verify 28 stack map entries. 217*9880d681SAndroid Build Coastguard Worker; 218*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_spilledValue 219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 28 221*9880d681SAndroid Build Coastguard Worker; 222*9880d681SAndroid Build Coastguard Worker; Check that at least one is a spilled entry from RBP. 223*9880d681SAndroid Build Coastguard Worker; Location: Indirect FP + ... 224*9880d681SAndroid Build Coastguard Worker; CHECK: .byte 3 225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 29 227*9880d681SAndroid Build Coastguard Workerdefine void @spilledValue(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3, i64 %arg4, i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27) { 228*9880d681SAndroid Build Coastguard Workerentry: 229*9880d681SAndroid Build Coastguard Worker call void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 11, i32 20, i8* null, i32 5, i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3, i64 %arg4, i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27) 230*9880d681SAndroid Build Coastguard Worker ret void 231*9880d681SAndroid Build Coastguard Worker} 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Worker; Spilled stack map values. 234*9880d681SAndroid Build Coastguard Worker; 235*9880d681SAndroid Build Coastguard Worker; Verify 23 stack map entries. 236*9880d681SAndroid Build Coastguard Worker; 237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_spilledStackMapValue 238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 30 240*9880d681SAndroid Build Coastguard Worker; 241*9880d681SAndroid Build Coastguard Worker; Check that at least one is a spilled entry from RBP. 242*9880d681SAndroid Build Coastguard Worker; Location: Indirect FP + ... 243*9880d681SAndroid Build Coastguard Worker; CHECK: .byte 3 244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 29 246*9880d681SAndroid Build Coastguard Workerdefine webkit_jscc void @spilledStackMapValue(i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27, i64 %l28, i64 %l29) { 247*9880d681SAndroid Build Coastguard Workerentry: 248*9880d681SAndroid Build Coastguard Worker call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 16, i64 %l0, i64 %l1, i64 %l2, i64 %l3, i64 %l4, i64 %l5, i64 %l6, i64 %l7, i64 %l8, i64 %l9, i64 %l10, i64 %l11, i64 %l12, i64 %l13, i64 %l14, i64 %l15, i64 %l16, i64 %l17, i64 %l18, i64 %l19, i64 %l20, i64 %l21, i64 %l22, i64 %l23, i64 %l24, i64 %l25, i64 %l26, i64 %l27, i64 %l28, i64 %l29) 249*9880d681SAndroid Build Coastguard Worker ret void 250*9880d681SAndroid Build Coastguard Worker} 251*9880d681SAndroid Build Coastguard Worker 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Worker; Map a constant value. 254*9880d681SAndroid Build Coastguard Worker; 255*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_liveConstant 256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 257*9880d681SAndroid Build Coastguard Worker; 1 location 258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 1 259*9880d681SAndroid Build Coastguard Worker; Loc 0: SmallConstant 260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 4 261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 8 262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long 33 264*9880d681SAndroid Build Coastguard Worker 265*9880d681SAndroid Build Coastguard Workerdefine void @liveConstant() { 266*9880d681SAndroid Build Coastguard Worker tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 8, i32 33) 267*9880d681SAndroid Build Coastguard Worker ret void 268*9880d681SAndroid Build Coastguard Worker} 269*9880d681SAndroid Build Coastguard Worker 270*9880d681SAndroid Build Coastguard Worker; Map a value when LR is the only free register. 271*9880d681SAndroid Build Coastguard Worker; 272*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .long L{{.*}}-_clobberLR 273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 0 274*9880d681SAndroid Build Coastguard Worker; 1 location 275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 1 276*9880d681SAndroid Build Coastguard Worker; Loc 0: Indirect FP (r29) - offset 277*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 3 278*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 4 279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .short 29 280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .long -{{[0-9]+}} 281*9880d681SAndroid Build Coastguard Workerdefine void @clobberLR(i32 %a) { 282*9880d681SAndroid Build Coastguard Worker tail call void asm sideeffect "nop", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x31}"() nounwind 283*9880d681SAndroid Build Coastguard Worker tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 8, i32 %a) 284*9880d681SAndroid Build Coastguard Worker ret void 285*9880d681SAndroid Build Coastguard Worker} 286*9880d681SAndroid Build Coastguard Worker 287*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.experimental.stackmap(i64, i32, ...) 288*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.experimental.patchpoint.void(i64, i32, i8*, i32, ...) 289*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.experimental.patchpoint.i64(i64, i32, i8*, i32, ...) 290