xref: /llvm-project/llvm/test/MC/AArch64/shift_extend_op_w_symbol.s (revision e6ff9179cee48096e7b2e739c9a79db62fa884bb)
1// RUN: not llvm-mc -triple aarch64-none-linux-gnu < %s > %t1 2> %t2
2// RUN: FileCheck < %t1 %s
3// RUN: FileCheck --match-full-lines --strict-whitespace --check-prefix=CHECK-ERROR < %t2 %s
4
5        .globl _func
6_func:
7// CHECK-LABEL: _func
8
9        .set IMM2, 2
10        .equ IMM4, 4
11
12// Make sure we can use a symbol with the optionally shift left operand.
13
14        add w1, w2, w3, uxtb #IMM2
15        add w4, w5, w6, uxth #IMM4
16        add x7, x8, x9, lsl #IMM2
17        add w7, w8, w9, uxtw #IMM4
18        add x1, x2, x3, uxtx #IMM4
19
20// CHECK: add w1, w2, w3, uxtb #2
21// CHECK: add w4, w5, w6, uxth #4
22// CHECK: add x7, x8, x9, lsl #2
23// CHECK: add w7, w8, w9, uxtw #4
24// CHECK: add x1, x2, x3, uxtx #4
25
26        add w1, w2, w3, sxtb #IMM2
27        add w4, w5, w6, sxth #IMM4
28        add x7, x8, x9, lsl #IMM2
29        add w7, w8, w9, sxtw #IMM2
30        add x1, x2, x3, sxtx #IMM4
31
32// CHECK: add w1, w2, w3, sxtb #2
33// CHECK: add w4, w5, w6, sxth #4
34// CHECK: add x7, x8, x9, lsl #2
35// CHECK: add w7, w8, w9, sxtw #2
36// CHECK: add x1, x2, x3, sxtx #4
37
38        add w1, w2, w3, lsl #IMM3
39
40// CHECK-ERROR:{{.*}}error: expected constant '#imm' after shift specifier
41// CHECK-ERROR:        add w1, w2, w3, lsl #IMM3
42// CHECK-ERROR:                             ^
43