154 lines · plain
1; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s2 3define void @nop_test() {4entry:5; CHECK-LABEL: nop_test:6 7; 28; CHECK: bcr 0, %r09 10; 411; CHECK: bc 0, 012 13; 614; CHECK: .Ltmp15; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:16; CHECK-NEXT: brcl 0, [[LAB]]17 18; 819; CHECK: .Ltmp20; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:21; CHECK-NEXT: brcl 0, [[LAB]]22; CHECK: bcr 0, %r023 24; 1025; CHECK: .Ltmp26; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:27; CHECK-NEXT: brcl 0, [[LAB]]28; CHECK: bc 0, 029 30; 1231; CHECK: .Ltmp32; 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; 1438; CHECK: .Ltmp39; 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, %r044 45; 1646; CHECK: .Ltmp47; 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, 052 53; 1854; CHECK: .Ltmp55; 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; 2063; CHECK: .Ltmp64; 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, %r071 72; 2273; CHECK: .Ltmp74; 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, 081 82; 2483; CHECK: .Ltmp84; 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; 2694; CHECK: .Ltmp95; 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, %r0104 105; 28106; CHECK: .Ltmp107; 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, 0116 117; 30118; CHECK: .Ltmp119; 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 shadow147; optimization. This will force all bytes of the previous shadow to be148; padded with nops.149 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0)150 ret void151}152 153declare void @llvm.experimental.stackmap(i64, i32, ...)154