[PATCH] D90065: [SystemZ] Define MaxInstLength to have the value of 6.

Jonas Paulsson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 23 11:51:47 PDT 2020


jonpa created this revision.
jonpa added a reviewer: uweigand.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.
jonpa requested review of this revision.

This value had the default value of 4 which caused branch relaxation to fail.

Note: The python tests show up as UNSUPPORTED when I try to run them with llvm-lit. I could not find out how to enable them. The test case I made takes 1.2 secs to execute on a fast machine. Perhaps it could be faster with a huge .mir test starting after regalloc...?


https://reviews.llvm.org/D90065

Files:
  llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp
  llvm/test/CodeGen/SystemZ/Large/branch-range-13.py


Index: llvm/test/CodeGen/SystemZ/Large/branch-range-13.py
===================================================================
--- /dev/null
+++ 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('}')
Index: llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp
===================================================================
--- llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp
+++ llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp
@@ -17,6 +17,8 @@
   CalleeSaveStackSlotSize = 8;
   IsLittleEndian = false;
 
+  MaxInstLength = 6;
+
   CommentString = "#";
   ZeroDirective = "\t.space\t";
   Data64bitsDirective = "\t.quad\t";


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90065.300363.patch
Type: text/x-patch
Size: 1499 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201023/8e908cd6/attachment.bin>


More information about the llvm-commits mailing list