xref: /llvm-project/llvm/test/MC/SystemZ/fixups-out-of-range-02.s (revision 5bf4f2acb8d658904304460a937f24a071d9c9a7)
1# RUN: not llvm-mc -triple s390x-unknown-unknown -filetype=obj -mcpu=zEC12 \
2# RUN:   -o /dev/null %s 2>&1 | FileCheck %s
3
4	.text
5
6# Test fixup ranges, which are encoded as half-words.
7
8# 12-bit
9# CHECK:      error: operand out of range (4096 not between -4096 and 4094)
10# CHECK-NEXT:        bprp 0, .Lab1, 0
11# CHECK-NEXT:        ^
12# CHECK-NEXT: error: operand out of range (-4098 not between -4096 and 4094)
13# CHECK-NEXT:        bprp 0, .Lab0, 0
14# CHECK-NEXT:        ^
15        bprp 0, .Lab1, 0
16.Lab0:
17        bprp 0, .Lab1, 0
18        .space 4084
19.Lab1:
20	nopr
21        bprp 0, .Lab0, 0
22        bprp 0, .Lab0, 0
23
24# 24-bit
25# CHECK-NEXT: error: operand out of range (16777220 not between -16777216 and 16777214)
26# CHECK-NEXT:        bprp 0, 0, .Lab3
27# CHECK-NEXT:        ^
28# CHECK-NEXT: error: operand out of range (-16777222 not between -16777216 and 16777214)
29# CHECK-NEXT:        bprp 0, 0, .Lab2
30# CHECK-NEXT:        ^
31        bprp 0, 0, .Lab3
32.Lab2:
33        bprp 0, 0, .Lab3
34        .space 16777208
35.Lab3:
36	nopr
37        bprp 0, 0, .Lab2
38        bprp 0, 0, .Lab2
39
40# 16-bit
41# CHECK-NEXT: error: operand out of range (65540 not between -65536 and 65534)
42# CHECK-NEXT:        cij %r1, 0, 0, .Lab5
43# CHECK-NEXT:        ^
44# CHECK-NEXT: error: operand out of range (-65542 not between -65536 and 65534)
45# CHECK-NEXT:        cij %r1, 0, 0, .Lab4
46# CHECK-NEXT:        ^
47        cij %r1, 0, 0, .Lab5
48.Lab4:
49        cij %r1, 0, 0, .Lab5
50        .space 65528
51.Lab5:
52	nopr
53        cij %r1, 0, 0, .Lab4
54        cij %r1, 0, 0, .Lab4
55
56# 32-bit
57# Unfortunately there is no support for offsets greater than 32 bits, so we have
58# to for now assume they are in range.
59
60# CHECK-NOT: error
61