[llvm] 7c026a8 - [SystemZ] Define MaxInstLength to have the value of 6.
Jonas Paulsson via llvm-commits
llvm-commits at lists.llvm.org
Sat Oct 24 00:21:09 PDT 2020
Author: Jonas Paulsson
Date: 2020-10-24T09:19:34+02:00
New Revision: 7c026a83ee903f00cb0a2827519ccd6f16b6ed03
URL: https://github.com/llvm/llvm-project/commit/7c026a83ee903f00cb0a2827519ccd6f16b6ed03
DIFF: https://github.com/llvm/llvm-project/commit/7c026a83ee903f00cb0a2827519ccd6f16b6ed03.diff
LOG: [SystemZ] Define MaxInstLength to have the value of 6.
This value had the default value of 4 which caused branch relaxation to fail.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D90065
Added:
llvm/test/CodeGen/SystemZ/Large/branch-range-13.py
Modified:
llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp
index e540ff4e4811..76df8cf0f3b2 100644
--- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp
+++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp
@@ -17,6 +17,8 @@ SystemZMCAsmInfo::SystemZMCAsmInfo(const Triple &TT) {
CalleeSaveStackSlotSize = 8;
IsLittleEndian = false;
+ MaxInstLength = 6;
+
CommentString = "#";
ZeroDirective = "\t.space\t";
Data64bitsDirective = "\t.quad\t";
diff --git a/llvm/test/CodeGen/SystemZ/Large/branch-range-13.py b/llvm/test/CodeGen/SystemZ/Large/branch-range-13.py
new file mode 100644
index 000000000000..13543a7d1ac5
--- /dev/null
+++ b/llvm/test/CodeGen/SystemZ/Large/branch-range-13.py
@@ -0,0 +1,41 @@
+# Test that inline assembly get the right size value so that a branch across
+# a block containing them gets relaxed.
+
+# RUN: python %s | llc -mtriple=s390x-linux-gnu -mcpu=z196 -enable-post-misched=false \
+# RUN: | FileCheck %s
+
+# Construct:
+#
+# entry:
+# branch to block
+#
+# block:
+# sequence of call asm
+# unconditional branch to block
+#
+# exit:
+# ret void
+
+# CHECK-LABEL: f1
+# CHECK: jg
+# CHECK-NEXT: .Lfunc_end0:
+
+from __future__ import print_function
+
+num = 11000
+
+print('define void @f1() {')
+print('entry:')
+print(' br label %block')
+print('')
+print('block:')
+
+for i in range(num):
+ print(' tail call i64 asm "lang\\09$0,$2,$1\\0A", "=d,=*Q,d,*Q"(i32* undef, i32 undef, i32* undef)')
+
+print(' br label %block')
+
+print('')
+print('exit:')
+print(' ret void')
+print('}')
More information about the llvm-commits
mailing list