1 # Test cases where we spill from one frame index to another, both of which
2 # would be out of range of MVC. At present we don't use MVC in this case.
3 # RUN: python %s | llc -mtriple=s390x-linux-gnu | FileCheck %s
5 # There are 8 usable call-saved GPRs. The first 160 bytes of the frame
6 # are needed for the ABI call frame, and a further 8 bytes are needed
7 # for the emergency spill slot. That means we will have at least one
8 # out-of-range slot if:
10 # count == (4096 - 168) / 8 + 8 + 1 == 500
12 # Add in some extra just to be sure.
19 print 'declare void @foo(i64 *%base0, i64 *%base1)'
21 print 'define void @f1() {'
24 print ' %%alloc%d = alloca [%d x i64]' % (i, count / 2)
25 print (' %%base%d = getelementptr [%d x i64] * %%alloc%d, i64 0, i64 0'
28 print ' call void @foo(i64 *%base0, i64 *%base1)'
31 for i in range(count):
32 print ' %%ptr%d = getelementptr i64 *%%base%d, i64 %d' % (i, i % 2, i / 2)
33 print ' %%val%d = load i64 *%%ptr%d' % (i, i)
36 print ' call void @foo(i64 *%base0, i64 *%base1)'
39 for i in range (count):
40 print ' store i64 %%val%d, i64 *%%ptr%d' % (i, i)
43 print ' call void @foo(i64 *%base0, i64 *%base1)'