1; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s 2 3define void @nop_test() { 4entry: 5; CHECK-LABEL: nop_test: 6 7; 2 8; CHECK: bcr 0, %r0 9 10; 4 11; CHECK: bc 0, 0 12 13; 6 14; CHECK: .Ltmp 15; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 16; CHECK-NEXT: brcl 0, [[LAB]] 17 18; 8 19; CHECK: .Ltmp 20; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 21; CHECK-NEXT: brcl 0, [[LAB]] 22; CHECK: bcr 0, %r0 23 24; 10 25; CHECK: .Ltmp 26; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 27; CHECK-NEXT: brcl 0, [[LAB]] 28; CHECK: bc 0, 0 29 30; 12 31; CHECK: .Ltmp 32; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 33; CHECK-NEXT: brcl 0, [[LAB]] 34; CHECK: [[LAB:.Ltmp[0-9]+]]: 35; CHECK-NEXT: brcl 0, [[LAB]] 36 37; 14 38; CHECK: .Ltmp 39; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 40; CHECK-NEXT: brcl 0, [[LAB]] 41; CHECK: [[LAB:.Ltmp[0-9]+]]: 42; CHECK-NEXT: brcl 0, [[LAB]] 43; CHECK: bcr 0, %r0 44 45; 16 46; CHECK: .Ltmp 47; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 48; CHECK-NEXT: brcl 0, [[LAB]] 49; CHECK: [[LAB:.Ltmp[0-9]+]]: 50; CHECK-NEXT: brcl 0, [[LAB]] 51; CHECK: bc 0, 0 52 53; 18 54; CHECK: .Ltmp 55; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 56; CHECK-NEXT: brcl 0, [[LAB]] 57; CHECK: [[LAB:.Ltmp[0-9]+]]: 58; CHECK-NEXT: brcl 0, [[LAB]] 59; CHECK: [[LAB:.Ltmp[0-9]+]]: 60; CHECK-NEXT: brcl 0, [[LAB]] 61 62; 20 63; CHECK: .Ltmp 64; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 65; CHECK-NEXT: brcl 0, [[LAB]] 66; CHECK: [[LAB:.Ltmp[0-9]+]]: 67; CHECK-NEXT: brcl 0, [[LAB]] 68; CHECK: [[LAB:.Ltmp[0-9]+]]: 69; CHECK-NEXT: brcl 0, [[LAB]] 70; CHECK: bcr 0, %r0 71 72; 22 73; CHECK: .Ltmp 74; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 75; CHECK-NEXT: brcl 0, [[LAB]] 76; CHECK: [[LAB:.Ltmp[0-9]+]]: 77; CHECK-NEXT: brcl 0, [[LAB]] 78; CHECK: [[LAB:.Ltmp[0-9]+]]: 79; CHECK-NEXT: brcl 0, [[LAB]] 80; CHECK: bc 0, 0 81 82; 24 83; CHECK: .Ltmp 84; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 85; CHECK-NEXT: brcl 0, [[LAB]] 86; CHECK: [[LAB:.Ltmp[0-9]+]]: 87; CHECK-NEXT: brcl 0, [[LAB]] 88; CHECK: [[LAB:.Ltmp[0-9]+]]: 89; CHECK-NEXT: brcl 0, [[LAB]] 90; CHECK: [[LAB:.Ltmp[0-9]+]]: 91; CHECK-NEXT: brcl 0, [[LAB]] 92 93; 26 94; CHECK: .Ltmp 95; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 96; CHECK-NEXT: brcl 0, [[LAB]] 97; CHECK: [[LAB:.Ltmp[0-9]+]]: 98; CHECK-NEXT: brcl 0, [[LAB]] 99; CHECK: [[LAB:.Ltmp[0-9]+]]: 100; CHECK-NEXT: brcl 0, [[LAB]] 101; CHECK: [[LAB:.Ltmp[0-9]+]]: 102; CHECK-NEXT: brcl 0, [[LAB]] 103; CHECK: bcr 0, %r0 104 105; 28 106; CHECK: .Ltmp 107; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 108; CHECK-NEXT: brcl 0, [[LAB]] 109; CHECK: [[LAB:.Ltmp[0-9]+]]: 110; CHECK-NEXT: brcl 0, [[LAB]] 111; CHECK: [[LAB:.Ltmp[0-9]+]]: 112; CHECK-NEXT: brcl 0, [[LAB]] 113; CHECK: [[LAB:.Ltmp[0-9]+]]: 114; CHECK-NEXT: brcl 0, [[LAB]] 115; CHECK: bc 0, 0 116 117; 30 118; CHECK: .Ltmp 119; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]: 120; CHECK-NEXT: brcl 0, [[LAB]] 121; CHECK: [[LAB:.Ltmp[0-9]+]]: 122; CHECK-NEXT: brcl 0, [[LAB]] 123; CHECK: [[LAB:.Ltmp[0-9]+]]: 124; CHECK-NEXT: brcl 0, [[LAB]] 125; CHECK: [[LAB:.Ltmp[0-9]+]]: 126; CHECK-NEXT: brcl 0, [[LAB]] 127; CHECK: [[LAB:.Ltmp[0-9]+]]: 128; CHECK-NEXT: brcl 0, [[LAB]] 129 130 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 0) 131 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 2, i32 2) 132 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4, i32 4) 133 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 6, i32 6) 134 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 8, i32 8) 135 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 10) 136 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 12) 137 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 14) 138 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 16) 139 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 18, i32 18) 140 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 20, i32 20) 141 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 22, i32 22) 142 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 24, i32 24) 143 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 26, i32 26) 144 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 28, i32 28) 145 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 30, i32 30) 146; Add an extra stackmap with a zero-length shadow to thwart the shadow 147; optimization. This will force all bytes of the previous shadow to be 148; padded with nops. 149 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0) 150 ret void 151} 152 153declare void @llvm.experimental.stackmap(i64, i32, ...) 154