| # RUN: not llvm-mc -triple s390x-unknown-unknown -filetype=obj -mcpu=zEC12 \ |
| # RUN: -o /dev/null %s 2>&1 | FileCheck %s |
| |
| .text |
| |
| # Test fixup ranges, which are encoded as half-words. |
| |
| # 12-bit |
| # CHECK: error: operand out of range (4096 not between -4096 and 4094) |
| # CHECK-NEXT: bprp 0, .Lab1, 0 |
| # CHECK-NEXT: ^ |
| # CHECK-NEXT: error: operand out of range (-4098 not between -4096 and 4094) |
| # CHECK-NEXT: bprp 0, .Lab0, 0 |
| # CHECK-NEXT: ^ |
| bprp 0, .Lab1, 0 |
| .Lab0: |
| bprp 0, .Lab1, 0 |
| .space 4084 |
| .Lab1: |
| nopr |
| bprp 0, .Lab0, 0 |
| bprp 0, .Lab0, 0 |
| |
| # 24-bit |
| # CHECK-NEXT: error: operand out of range (16777220 not between -16777216 and 16777214) |
| # CHECK-NEXT: bprp 0, 0, .Lab3 |
| # CHECK-NEXT: ^ |
| # CHECK-NEXT: error: operand out of range (-16777222 not between -16777216 and 16777214) |
| # CHECK-NEXT: bprp 0, 0, .Lab2 |
| # CHECK-NEXT: ^ |
| bprp 0, 0, .Lab3 |
| .Lab2: |
| bprp 0, 0, .Lab3 |
| .space 16777208 |
| .Lab3: |
| nopr |
| bprp 0, 0, .Lab2 |
| bprp 0, 0, .Lab2 |
| |
| # 16-bit |
| # CHECK-NEXT: error: operand out of range (65540 not between -65536 and 65534) |
| # CHECK-NEXT: cij %r1, 0, 0, .Lab5 |
| # CHECK-NEXT: ^ |
| # CHECK-NEXT: error: operand out of range (-65542 not between -65536 and 65534) |
| # CHECK-NEXT: cij %r1, 0, 0, .Lab4 |
| # CHECK-NEXT: ^ |
| cij %r1, 0, 0, .Lab5 |
| .Lab4: |
| cij %r1, 0, 0, .Lab5 |
| .space 65528 |
| .Lab5: |
| nopr |
| cij %r1, 0, 0, .Lab4 |
| cij %r1, 0, 0, .Lab4 |
| |
| # 32-bit |
| # Unfortunately there is no support for offsets greater than 32 bits, so we have |
| # to for now assume they are in range. |
| |
| # CHECK-NOT: error |