diff options
| author | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2018-03-02 20:39:30 +0000 |
|---|---|---|
| committer | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2018-03-02 20:39:30 +0000 |
| commit | 5eb64110d241cf2506f54ade3c2693beed42dd8f (patch) | |
| tree | 7ae56e435fdaeb9440ac5068e1317ad465f6130a /llvm/test/CodeGen/SystemZ/stackmap-nops.ll | |
| parent | 32063888700f57bf57ede4f24efb727fd3f284c5 (diff) | |
| download | bcm5719-llvm-5eb64110d241cf2506f54ade3c2693beed42dd8f.tar.gz bcm5719-llvm-5eb64110d241cf2506f54ade3c2693beed42dd8f.zip | |
[SystemZ] Support stackmaps and patchpoints
This adds back-end support for the @llvm.experimental.stackmap and
@llvm.experimental.patchpoint intrinsics.
llvm-svn: 326611
Diffstat (limited to 'llvm/test/CodeGen/SystemZ/stackmap-nops.ll')
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/stackmap-nops.ll | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SystemZ/stackmap-nops.ll b/llvm/test/CodeGen/SystemZ/stackmap-nops.ll new file mode 100644 index 00000000000..066d7f61324 --- /dev/null +++ b/llvm/test/CodeGen/SystemZ/stackmap-nops.ll @@ -0,0 +1,140 @@ +; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s + +define void @nop_test() { +entry: +; CHECK-LABEL: nop_test: + +; 2 +; CHECK: bcr 0, %r0 + +; 4 +; CHECK: bc 0, 0 + +; 6 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: + +; 8 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: bcr 0, %r0 + +; 10 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: bc 0, 0 + +; 12 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: + +; 14 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: bcr 0, %r0 + +; 16 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: bc 0, 0 + +; 18 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: + +; 20 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: bcr 0, %r0 + +; 22 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: bc 0, 0 + +; 24 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: + +; 26 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: bcr 0, %r0 + +; 28 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: bc 0, 0 + +; 30 +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: +; CHECK: brcl 0, [[LAB:.Ltmp[0-9]+]] +; CHECK-NEXT: [[LAB]]: + + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 0, i32 0) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 2, i32 2) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4, i32 4) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 6, i32 6) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 8, i32 8) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 10) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 12) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 14) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 16) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 18, i32 18) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 20, i32 20) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 22, i32 22) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 24, i32 24) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 26, i32 26) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 28, i32 28) + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 30, i32 30) +; Add an extra stackmap with a zero-length shadow to thwart the shadow +; optimization. This will force all bytes of the previous shadow to be +; padded with nops. + tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0) + ret void +} + +declare void @llvm.experimental.stackmap(i64, i32, ...) |

