1 # RUN: llvm-mc %s -triple=riscv64 -mattr=+a -riscv-no-aliases \
2 # RUN: | FileCheck -check-prefix=CHECK-INST %s
3 # RUN: llvm-mc %s -triple=riscv64 -mattr=+a \
4 # RUN: | FileCheck -check-prefix=CHECK-ALIAS %s
5 # RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+a < %s \
6 # RUN: | llvm-objdump -d -mattr=+a -M no-aliases - \
7 # RUN: | FileCheck -check-prefix=CHECK-INST %s
8 # RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+a < %s \
9 # RUN: | llvm-objdump -d -mattr=+a - \
10 # RUN: | FileCheck -check-prefix=CHECK-ALIAS %s
12 # The below tests for lr.d, sc.d and amo*.d, using `0(reg)` are actually
13 # implemented using a custom parser, but we test them as if they're aliases.
15 # CHECK-INST: lr.d a1, (a0)
16 # CHECK-ALIAS: lr.d a1, (a0)
19 # CHECK-INST: lr.d.aq a1, (a0)
20 # CHECK-ALIAS: lr.d.aq a1, (a0)
23 # CHECK-INST: lr.d.rl a1, (a0)
24 # CHECK-ALIAS: lr.d.rl a1, (a0)
27 # CHECK-INST: lr.d.aqrl a1, (a0)
28 # CHECK-ALIAS: lr.d.aqrl a1, (a0)
31 # CHECK-INST: sc.d a2, a1, (a0)
32 # CHECK-ALIAS: sc.d a2, a1, (a0)
35 # CHECK-INST: sc.d.aq a2, a1, (a0)
36 # CHECK-ALIAS: sc.d.aq a2, a1, (a0)
39 # CHECK-INST: sc.d.rl a2, a1, (a0)
40 # CHECK-ALIAS: sc.d.rl a2, a1, (a0)
43 # CHECK-INST: sc.d.aqrl a2, a1, (a0)
44 # CHECK-ALIAS: sc.d.aqrl a2, a1, (a0)
45 sc.d.aqrl a2
, a1
, 0(a0
)
47 # CHECK-INST: amoswap.d a2, a1, (a0)
48 # CHECK-ALIAS: amoswap.d a2, a1, (a0)
49 amoswap.d a2
, a1
, 0(a0
)
51 # CHECK-INST: amoswap.d.aq a2, a1, (a0)
52 # CHECK-ALIAS: amoswap.d.aq a2, a1, (a0)
53 amoswap.d.aq a2
, a1
, 0(a0
)
55 # CHECK-INST: amoswap.d.rl a2, a1, (a0)
56 # CHECK-ALIAS: amoswap.d.rl a2, a1, (a0)
57 amoswap.d.rl a2
, a1
, 0(a0
)
59 # CHECK-INST: amoswap.d.aqrl a2, a1, (a0)
60 # CHECK-ALIAS: amoswap.d.aqrl a2, a1, (a0)
61 amoswap.d.aqrl a2
, a1
, 0(a0
)
63 # CHECK-INST: amoadd.d a2, a1, (a0)
64 # CHECK-ALIAS: amoadd.d a2, a1, (a0)
65 amoadd.d a2
, a1
, 0(a0
)
67 # CHECK-INST: amoadd.d.aq a2, a1, (a0)
68 # CHECK-ALIAS: amoadd.d.aq a2, a1, (a0)
69 amoadd.d.aq a2
, a1
, 0(a0
)
71 # CHECK-INST: amoadd.d.rl a2, a1, (a0)
72 # CHECK-ALIAS: amoadd.d.rl a2, a1, (a0)
73 amoadd.d.rl a2
, a1
, 0(a0
)
75 # CHECK-INST: amoadd.d.aqrl a2, a1, (a0)
76 # CHECK-ALIAS: amoadd.d.aqrl a2, a1, (a0)
77 amoadd.d.aqrl a2
, a1
, 0(a0
)
79 # CHECK-INST: amoxor.d a2, a1, (a0)
80 # CHECK-ALIAS: amoxor.d a2, a1, (a0)
81 amoxor.d a2
, a1
, 0(a0
)
83 # CHECK-INST: amoxor.d.aq a2, a1, (a0)
84 # CHECK-ALIAS: amoxor.d.aq a2, a1, (a0)
85 amoxor.d.aq a2
, a1
, 0(a0
)
87 # CHECK-INST: amoxor.d.rl a2, a1, (a0)
88 # CHECK-ALIAS: amoxor.d.rl a2, a1, (a0)
89 amoxor.d.rl a2
, a1
, 0(a0
)
91 # CHECK-INST: amoxor.d.aqrl a2, a1, (a0)
92 # CHECK-ALIAS: amoxor.d.aqrl a2, a1, (a0)
93 amoxor.d.aqrl a2
, a1
, 0(a0
)
95 # CHECK-INST: amoand.d a2, a1, (a0)
96 # CHECK-ALIAS: amoand.d a2, a1, (a0)
97 amoand.d a2
, a1
, 0(a0
)
99 # CHECK-INST: amoand.d.aq a2, a1, (a0)
100 # CHECK-ALIAS: amoand.d.aq a2, a1, (a0)
101 amoand.d.aq a2
, a1
, 0(a0
)
103 # CHECK-INST: amoand.d.rl a2, a1, (a0)
104 # CHECK-ALIAS: amoand.d.rl a2, a1, (a0)
105 amoand.d.rl a2
, a1
, 0(a0
)
107 # CHECK-INST: amoand.d.aqrl a2, a1, (a0)
108 # CHECK-ALIAS: amoand.d.aqrl a2, a1, (a0)
109 amoand.d.aqrl a2
, a1
, 0(a0
)
111 # CHECK-INST: amoor.d a2, a1, (a0)
112 # CHECK-ALIAS: amoor.d a2, a1, (a0)
113 amoor.d a2
, a1
, 0(a0
)
115 # CHECK-INST: amoor.d.aq a2, a1, (a0)
116 # CHECK-ALIAS: amoor.d.aq a2, a1, (a0)
117 amoor.d.aq a2
, a1
, 0(a0
)
119 # CHECK-INST: amoor.d.rl a2, a1, (a0)
120 # CHECK-ALIAS: amoor.d.rl a2, a1, (a0)
121 amoor.d.rl a2
, a1
, 0(a0
)
123 # CHECK-INST: amoor.d.aqrl a2, a1, (a0)
124 # CHECK-ALIAS: amoor.d.aqrl a2, a1, (a0)
125 amoor.d.aqrl a2
, a1
, 0(a0
)
127 # CHECK-INST: amomin.d a2, a1, (a0)
128 # CHECK-ALIAS: amomin.d a2, a1, (a0)
129 amomin.d a2
, a1
, 0(a0
)
131 # CHECK-INST: amomin.d.aq a2, a1, (a0)
132 # CHECK-ALIAS: amomin.d.aq a2, a1, (a0)
133 amomin.d.aq a2
, a1
, 0(a0
)
135 # CHECK-INST: amomin.d.rl a2, a1, (a0)
136 # CHECK-ALIAS: amomin.d.rl a2, a1, (a0)
137 amomin.d.rl a2
, a1
, 0(a0
)
139 # CHECK-INST: amomin.d.aqrl a2, a1, (a0)
140 # CHECK-ALIAS: amomin.d.aqrl a2, a1, (a0)
141 amomin.d.aqrl a2
, a1
, 0(a0
)
143 # CHECK-INST: amomax.d a2, a1, (a0)
144 # CHECK-ALIAS: amomax.d a2, a1, (a0)
145 amomax.d a2
, a1
, 0(a0
)
147 # CHECK-INST: amomax.d.aq a2, a1, (a0)
148 # CHECK-ALIAS: amomax.d.aq a2, a1, (a0)
149 amomax.d.aq a2
, a1
, 0(a0
)
151 # CHECK-INST: amomax.d.rl a2, a1, (a0)
152 # CHECK-ALIAS: amomax.d.rl a2, a1, (a0)
153 amomax.d.rl a2
, a1
, 0(a0
)
155 # CHECK-INST: amomax.d.aqrl a2, a1, (a0)
156 # CHECK-ALIAS: amomax.d.aqrl a2, a1, (a0)
157 amomax.d.aqrl a2
, a1
, 0(a0
)
159 # CHECK-INST: amominu.d a2, a1, (a0)
160 # CHECK-ALIAS: amominu.d a2, a1, (a0)
161 amominu.d a2
, a1
, 0(a0
)
163 # CHECK-INST: amominu.d.aq a2, a1, (a0)
164 # CHECK-ALIAS: amominu.d.aq a2, a1, (a0)
165 amominu.d.aq a2
, a1
, 0(a0
)
167 # CHECK-INST: amominu.d.rl a2, a1, (a0)
168 # CHECK-ALIAS: amominu.d.rl a2, a1, (a0)
169 amominu.d.rl a2
, a1
, 0(a0
)
171 # CHECK-INST: amominu.d.aqrl a2, a1, (a0)
172 # CHECK-ALIAS: amominu.d.aqrl a2, a1, (a0)
173 amominu.d.aqrl a2
, a1
, 0(a0
)
175 # CHECK-INST: amomaxu.d a2, a1, (a0)
176 # CHECK-ALIAS: amomaxu.d a2, a1, (a0)
177 amomaxu.d a2
, a1
, 0(a0
)
179 # CHECK-INST: amomaxu.d.aq a2, a1, (a0)
180 # CHECK-ALIAS: amomaxu.d.aq a2, a1, (a0)
181 amomaxu.d.aq a2
, a1
, 0(a0
)
183 # CHECK-INST: amomaxu.d.rl a2, a1, (a0)
184 # CHECK-ALIAS: amomaxu.d.rl a2, a1, (a0)
185 amomaxu.d.rl a2
, a1
, 0(a0
)
187 # CHECK-INST: amomaxu.d.aqrl a2, a1, (a0)
188 # CHECK-ALIAS: amomaxu.d.aqrl a2, a1, (a0)
189 amomaxu.d.aqrl a2
, a1
, 0(a0
)