xref: /llvm-project/llvm/test/MC/RISCV/rva-aliases-invalid.s (revision 0113cf193f0610bb1a5dfa0bcd29c41a8965938a)
1# RUN: not llvm-mc %s -triple=riscv32 2>&1 | FileCheck %s
2# RUN: not llvm-mc %s -triple=riscv64 2>&1 | FileCheck %s
3
4# The below tests for lr(.w), sc(.w) and amo*(.w), using `0(reg)` are actually
5# implemented using a custom parser. These tests ensure the custom parser gives
6# good error messages.
7
8lr.w a1, a0     # CHECK: :[[@LINE]]:10: error: expected '(' or optional integer offset
9lr.w a1, foo    # CHECK: :[[@LINE]]:10: error: expected '(' or optional integer offset
10lr.w a1, 1(a0)  # CHECK: :[[@LINE]]:10: error: optional integer offset must be 0
11lr.w a1, (foo)  # CHECK: :[[@LINE]]:11: error: expected register
12lr.w a1, 0(foo) # CHECK: :[[@LINE]]:12: error: expected register
13lr.w a1, (f0)   # CHECK: :[[@LINE]]:11: error: invalid operand for instruction
14lr.w a1, 0(f0)  # CHECK: :[[@LINE]]:12: error: invalid operand for instruction
15lr.w a1, 0(a0   # CHECK: :[[@LINE]]:17: error: expected ')'
16lr.w a1, (a0    # CHECK: :[[@LINE]]:17: error: expected ')'
17
18sc.w a2, a1, a0     # CHECK: :[[@LINE]]:14: error: expected '(' or optional integer offset
19sc.w a2, a1, foo    # CHECK: :[[@LINE]]:14: error: expected '(' or optional integer offset
20sc.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:14: error: optional integer offset must be 0
21sc.w a2, a1, (foo)  # CHECK: :[[@LINE]]:15: error: expected register
22sc.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:16: error: expected register
23sc.w a2, a1, (f0)   # CHECK: :[[@LINE]]:15: error: invalid operand for instruction
24sc.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:16: error: invalid operand for instruction
25sc.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:21: error: expected ')'
26sc.w a2, a1, (a0    # CHECK: :[[@LINE]]:21: error: expected ')'
27
28amoswap.w a2, a1, a0     # CHECK: :[[@LINE]]:19: error: expected '(' or optional integer offset
29amoswap.w a2, a1, foo    # CHECK: :[[@LINE]]:19: error: expected '(' or optional integer offset
30amoswap.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:19: error: optional integer offset must be 0
31amoswap.w a2, a1, (foo)  # CHECK: :[[@LINE]]:20: error: expected register
32amoswap.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:21: error: expected register
33amoswap.w a2, a1, (f0)   # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
34amoswap.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:21: error: invalid operand for instruction
35amoswap.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:26: error: expected ')'
36amoswap.w a2, a1, (a0    # CHECK: :[[@LINE]]:26: error: expected ')'
37
38amoadd.w a2, a1, a0     # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
39amoadd.w a2, a1, foo    # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
40amoadd.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:18: error: optional integer offset must be 0
41amoadd.w a2, a1, (foo)  # CHECK: :[[@LINE]]:19: error: expected register
42amoadd.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:20: error: expected register
43amoadd.w a2, a1, (f0)   # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
44amoadd.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
45amoadd.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:25: error: expected ')'
46amoadd.w a2, a1, (a0    # CHECK: :[[@LINE]]:25: error: expected ')'
47
48amoxor.w a2, a1, a0     # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
49amoxor.w a2, a1, foo    # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
50amoxor.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:18: error: optional integer offset must be 0
51amoxor.w a2, a1, (foo)  # CHECK: :[[@LINE]]:19: error: expected register
52amoxor.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:20: error: expected register
53amoxor.w a2, a1, (f0)   # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
54amoxor.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
55amoxor.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:25: error: expected ')'
56amoxor.w a2, a1, (a0    # CHECK: :[[@LINE]]:25: error: expected ')'
57
58amoand.w a2, a1, a0     # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
59amoand.w a2, a1, foo    # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
60amoand.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:18: error: optional integer offset must be 0
61amoand.w a2, a1, (foo)  # CHECK: :[[@LINE]]:19: error: expected register
62amoand.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:20: error: expected register
63amoand.w a2, a1, (f0)   # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
64amoand.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
65amoand.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:25: error: expected ')'
66amoand.w a2, a1, (a0    # CHECK: :[[@LINE]]:25: error: expected ')'
67
68amoor.w a2, a1, a0     # CHECK: :[[@LINE]]:17: error: expected '(' or optional integer offset
69amoor.w a2, a1, foo    # CHECK: :[[@LINE]]:17: error: expected '(' or optional integer offset
70amoor.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:17: error: optional integer offset must be 0
71amoor.w a2, a1, (foo)  # CHECK: :[[@LINE]]:18: error: expected register
72amoor.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:19: error: expected register
73amoor.w a2, a1, (f0)   # CHECK: :[[@LINE]]:18: error: invalid operand for instruction
74amoor.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
75amoor.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:24: error: expected ')'
76amoor.w a2, a1, (a0    # CHECK: :[[@LINE]]:24: error: expected ')'
77
78amomin.w a2, a1, a0     # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
79amomin.w a2, a1, foo    # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
80amomin.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:18: error: optional integer offset must be 0
81amomin.w a2, a1, (foo)  # CHECK: :[[@LINE]]:19: error: expected register
82amomin.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:20: error: expected register
83amomin.w a2, a1, (f0)   # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
84amomin.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
85amomin.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:25: error: expected ')'
86amomin.w a2, a1, (a0    # CHECK: :[[@LINE]]:25: error: expected ')'
87
88amomax.w a2, a1, a0     # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
89amomax.w a2, a1, foo    # CHECK: :[[@LINE]]:18: error: expected '(' or optional integer offset
90amomax.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:18: error: optional integer offset must be 0
91amomax.w a2, a1, (foo)  # CHECK: :[[@LINE]]:19: error: expected register
92amomax.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:20: error: expected register
93amomax.w a2, a1, (f0)   # CHECK: :[[@LINE]]:19: error: invalid operand for instruction
94amomax.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
95amomax.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:25: error: expected ')'
96amomax.w a2, a1, (a0    # CHECK: :[[@LINE]]:25: error: expected ')'
97
98amominu.w a2, a1, a0     # CHECK: :[[@LINE]]:19: error: expected '(' or optional integer offset
99amominu.w a2, a1, foo    # CHECK: :[[@LINE]]:19: error: expected '(' or optional integer offset
100amominu.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:19: error: optional integer offset must be 0
101amominu.w a2, a1, (foo)  # CHECK: :[[@LINE]]:20: error: expected register
102amominu.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:21: error: expected register
103amominu.w a2, a1, (f0)   # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
104amominu.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:21: error: invalid operand for instruction
105amominu.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:26: error: expected ')'
106amominu.w a2, a1, (a0    # CHECK: :[[@LINE]]:26: error: expected ')'
107
108amomaxu.w a2, a1, a0     # CHECK: :[[@LINE]]:19: error: expected '(' or optional integer offset
109amomaxu.w a2, a1, foo    # CHECK: :[[@LINE]]:19: error: expected '(' or optional integer offset
110amomaxu.w a2, a1, 1(a0)  # CHECK: :[[@LINE]]:19: error: optional integer offset must be 0
111amomaxu.w a2, a1, (foo)  # CHECK: :[[@LINE]]:20: error: expected register
112amomaxu.w a2, a1, 0(foo) # CHECK: :[[@LINE]]:21: error: expected register
113amomaxu.w a2, a1, (f0)   # CHECK: :[[@LINE]]:20: error: invalid operand for instruction
114amomaxu.w a2, a1, 0(f0)  # CHECK: :[[@LINE]]:21: error: invalid operand for instruction
115amomaxu.w a2, a1, 0(a0   # CHECK: :[[@LINE]]:26: error: expected ')'
116amomaxu.w a2, a1, (a0    # CHECK: :[[@LINE]]:26: error: expected ')'