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