[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
This commit is contained in:
Jonas Paulsson 2020-10-23 20:45:54 +02:00
parent d96cb52830
commit 7c026a83ee
2 changed files with 43 additions and 0 deletions

View File

@ -17,6 +17,8 @@ SystemZMCAsmInfo::SystemZMCAsmInfo(const Triple &TT) {
CalleeSaveStackSlotSize = 8;
IsLittleEndian = false;
MaxInstLength = 6;
CommentString = "#";
ZeroDirective = "\t.space\t";
Data64bitsDirective = "\t.quad\t";

View File

@ -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('}')