[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