xref: /llvm-project/llvm/test/MC/RISCV/rvzabha-valid.s (revision 4b3d439e7e7b4e794e523caea9863d67ff8cf85f)
1# RUN: llvm-mc %s -triple=riscv32 -mattr=+a,+zabha -M no-aliases -show-encoding \
2# RUN:     | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s
3# RUN: llvm-mc %s -triple=riscv64 -mattr=+a,+zabha -M no-aliases -show-encoding \
4# RUN:     | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s
5# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+a,+zabha < %s \
6# RUN:     | llvm-objdump --mattr=+a,+zabha -M no-aliases -d -r - \
7# RUN:     | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s
8# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+a,+zabha < %s \
9# RUN:     | llvm-objdump --mattr=+a,+zabha -M no-aliases -d -r - \
10# RUN:     | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s
11
12# CHECK-ASM-AND-OBJ: amoswap.b a4, ra, (s0)
13# CHECK-ASM: encoding: [0x2f,0x07,0x14,0x08]
14amoswap.b a4, ra, (s0)
15# CHECK-ASM-AND-OBJ: amoadd.b a1, a2, (a3)
16# CHECK-ASM: encoding: [0xaf,0x85,0xc6,0x00]
17amoadd.b a1, a2, (a3)
18# CHECK-ASM-AND-OBJ: amoxor.b a2, a3, (a4)
19# CHECK-ASM: encoding: [0x2f,0x06,0xd7,0x20]
20amoxor.b a2, a3, (a4)
21# CHECK-ASM-AND-OBJ: amoand.b a3, a4, (a5)
22# CHECK-ASM: encoding: [0xaf,0x86,0xe7,0x60]
23amoand.b a3, a4, (a5)
24# CHECK-ASM-AND-OBJ: amoor.b a4, a5, (a6)
25# CHECK-ASM: encoding: [0x2f,0x07,0xf8,0x40]
26amoor.b a4, a5, (a6)
27# CHECK-ASM-AND-OBJ: amomin.b a5, a6, (a7)
28# CHECK-ASM: encoding: [0xaf,0x87,0x08,0x81]
29amomin.b a5, a6, (a7)
30# CHECK-ASM-AND-OBJ: amomax.b s7, s6, (s5)
31# CHECK-ASM: encoding: [0xaf,0x8b,0x6a,0xa1]
32amomax.b s7, s6, (s5)
33# CHECK-ASM-AND-OBJ: amominu.b s6, s5, (s4)
34# CHECK-ASM: encoding: [0x2f,0x0b,0x5a,0xc1]
35amominu.b s6, s5, (s4)
36# CHECK-ASM-AND-OBJ: amomaxu.b s5, s4, (s3)
37# CHECK-ASM: encoding: [0xaf,0x8a,0x49,0xe1]
38amomaxu.b s5, s4, (s3)
39
40# CHECK-ASM-AND-OBJ: amoswap.b.aq a4, ra, (s0)
41# CHECK-ASM: encoding: [0x2f,0x07,0x14,0x0c]
42amoswap.b.aq a4, ra, (s0)
43# CHECK-ASM-AND-OBJ: amoadd.b.aq a1, a2, (a3)
44# CHECK-ASM: encoding: [0xaf,0x85,0xc6,0x04]
45amoadd.b.aq a1, a2, (a3)
46# CHECK-ASM-AND-OBJ: amoxor.b.aq a2, a3, (a4)
47# CHECK-ASM: encoding: [0x2f,0x06,0xd7,0x24]
48amoxor.b.aq a2, a3, (a4)
49# CHECK-ASM-AND-OBJ: amoand.b.aq a3, a4, (a5)
50# CHECK-ASM: encoding: [0xaf,0x86,0xe7,0x64]
51amoand.b.aq a3, a4, (a5)
52# CHECK-ASM-AND-OBJ: amoor.b.aq a4, a5, (a6)
53# CHECK-ASM: encoding: [0x2f,0x07,0xf8,0x44]
54amoor.b.aq a4, a5, (a6)
55# CHECK-ASM-AND-OBJ: amomin.b.aq a5, a6, (a7)
56# CHECK-ASM: encoding: [0xaf,0x87,0x08,0x85]
57amomin.b.aq a5, a6, (a7)
58# CHECK-ASM-AND-OBJ: amomax.b.aq s7, s6, (s5)
59# CHECK-ASM: encoding: [0xaf,0x8b,0x6a,0xa5]
60amomax.b.aq s7, s6, (s5)
61# CHECK-ASM-AND-OBJ: amominu.b.aq s6, s5, (s4)
62# CHECK-ASM: encoding: [0x2f,0x0b,0x5a,0xc5]
63amominu.b.aq s6, s5, (s4)
64# CHECK-ASM-AND-OBJ: amomaxu.b.aq s5, s4, (s3)
65# CHECK-ASM: encoding: [0xaf,0x8a,0x49,0xe5]
66amomaxu.b.aq s5, s4, (s3)
67
68# CHECK-ASM-AND-OBJ: amoswap.b.rl a4, ra, (s0)
69# CHECK-ASM: encoding: [0x2f,0x07,0x14,0x0a]
70amoswap.b.rl a4, ra, (s0)
71# CHECK-ASM-AND-OBJ: amoadd.b.rl a1, a2, (a3)
72# CHECK-ASM: encoding: [0xaf,0x85,0xc6,0x02]
73amoadd.b.rl a1, a2, (a3)
74# CHECK-ASM-AND-OBJ: amoxor.b.rl a2, a3, (a4)
75# CHECK-ASM: encoding: [0x2f,0x06,0xd7,0x22]
76amoxor.b.rl a2, a3, (a4)
77# CHECK-ASM-AND-OBJ: amoand.b.rl a3, a4, (a5)
78# CHECK-ASM: encoding: [0xaf,0x86,0xe7,0x62]
79amoand.b.rl a3, a4, (a5)
80# CHECK-ASM-AND-OBJ: amoor.b.rl a4, a5, (a6)
81# CHECK-ASM: encoding: [0x2f,0x07,0xf8,0x42]
82amoor.b.rl a4, a5, (a6)
83# CHECK-ASM-AND-OBJ: amomin.b.rl a5, a6, (a7)
84# CHECK-ASM: encoding: [0xaf,0x87,0x08,0x83]
85amomin.b.rl a5, a6, (a7)
86# CHECK-ASM-AND-OBJ: amomax.b.rl s7, s6, (s5)
87# CHECK-ASM: encoding: [0xaf,0x8b,0x6a,0xa3]
88amomax.b.rl s7, s6, (s5)
89# CHECK-ASM-AND-OBJ: amominu.b.rl s6, s5, (s4)
90# CHECK-ASM: encoding: [0x2f,0x0b,0x5a,0xc3]
91amominu.b.rl s6, s5, (s4)
92# CHECK-ASM-AND-OBJ: amomaxu.b.rl s5, s4, (s3)
93# CHECK-ASM: encoding: [0xaf,0x8a,0x49,0xe3]
94amomaxu.b.rl s5, s4, (s3)
95
96# CHECK-ASM-AND-OBJ: amoswap.b.aqrl a4, ra, (s0)
97# CHECK-ASM: encoding: [0x2f,0x07,0x14,0x0e]
98amoswap.b.aqrl a4, ra, (s0)
99# CHECK-ASM-AND-OBJ: amoadd.b.aqrl a1, a2, (a3)
100# CHECK-ASM: encoding: [0xaf,0x85,0xc6,0x06]
101amoadd.b.aqrl a1, a2, (a3)
102# CHECK-ASM-AND-OBJ: amoxor.b.aqrl a2, a3, (a4)
103# CHECK-ASM: encoding: [0x2f,0x06,0xd7,0x26]
104amoxor.b.aqrl a2, a3, (a4)
105# CHECK-ASM-AND-OBJ: amoand.b.aqrl a3, a4, (a5)
106# CHECK-ASM: encoding: [0xaf,0x86,0xe7,0x66]
107amoand.b.aqrl a3, a4, (a5)
108# CHECK-ASM-AND-OBJ: amoor.b.aqrl a4, a5, (a6)
109# CHECK-ASM: encoding: [0x2f,0x07,0xf8,0x46]
110amoor.b.aqrl a4, a5, (a6)
111# CHECK-ASM-AND-OBJ: amomin.b.aqrl a5, a6, (a7)
112# CHECK-ASM: encoding: [0xaf,0x87,0x08,0x87]
113amomin.b.aqrl a5, a6, (a7)
114# CHECK-ASM-AND-OBJ: amomax.b.aqrl s7, s6, (s5)
115# CHECK-ASM: encoding: [0xaf,0x8b,0x6a,0xa7]
116amomax.b.aqrl s7, s6, (s5)
117# CHECK-ASM-AND-OBJ: amominu.b.aqrl s6, s5, (s4)
118# CHECK-ASM: encoding: [0x2f,0x0b,0x5a,0xc7]
119amominu.b.aqrl s6, s5, (s4)
120# CHECK-ASM-AND-OBJ: amomaxu.b.aqrl s5, s4, (s3)
121# CHECK-ASM: encoding: [0xaf,0x8a,0x49,0xe7]
122amomaxu.b.aqrl s5, s4, (s3)
123
124
125# CHECK-ASM-AND-OBJ: amoswap.h a4, ra, (s0)
126# CHECK-ASM: encoding: [0x2f,0x17,0x14,0x08]
127amoswap.h a4, ra, (s0)
128# CHECK-ASM-AND-OBJ: amoadd.h a1, a2, (a3)
129# CHECK-ASM: encoding: [0xaf,0x95,0xc6,0x00]
130amoadd.h a1, a2, (a3)
131# CHECK-ASM-AND-OBJ: amoxor.h a2, a3, (a4)
132# CHECK-ASM: encoding: [0x2f,0x16,0xd7,0x20]
133amoxor.h a2, a3, (a4)
134# CHECK-ASM-AND-OBJ: amoand.h a3, a4, (a5)
135# CHECK-ASM: encoding: [0xaf,0x96,0xe7,0x60]
136amoand.h a3, a4, (a5)
137# CHECK-ASM-AND-OBJ: amoor.h a4, a5, (a6)
138# CHECK-ASM: encoding: [0x2f,0x17,0xf8,0x40]
139amoor.h a4, a5, (a6)
140# CHECK-ASM-AND-OBJ: amomin.h a5, a6, (a7)
141# CHECK-ASM: encoding: [0xaf,0x97,0x08,0x81]
142amomin.h a5, a6, (a7)
143# CHECK-ASM-AND-OBJ: amomax.h s7, s6, (s5)
144# CHECK-ASM: encoding: [0xaf,0x9b,0x6a,0xa1]
145amomax.h s7, s6, (s5)
146# CHECK-ASM-AND-OBJ: amominu.h s6, s5, (s4)
147# CHECK-ASM: encoding: [0x2f,0x1b,0x5a,0xc1]
148amominu.h s6, s5, (s4)
149# CHECK-ASM-AND-OBJ: amomaxu.h s5, s4, (s3)
150# CHECK-ASM: encoding: [0xaf,0x9a,0x49,0xe1]
151amomaxu.h s5, s4, (s3)
152
153# CHECK-ASM-AND-OBJ: amoswap.h.aq a4, ra, (s0)
154# CHECK-ASM: encoding: [0x2f,0x17,0x14,0x0c]
155amoswap.h.aq a4, ra, (s0)
156# CHECK-ASM-AND-OBJ: amoadd.h.aq a1, a2, (a3)
157# CHECK-ASM: encoding: [0xaf,0x95,0xc6,0x04]
158amoadd.h.aq a1, a2, (a3)
159# CHECK-ASM-AND-OBJ: amoxor.h.aq a2, a3, (a4)
160# CHECK-ASM: encoding: [0x2f,0x16,0xd7,0x24]
161amoxor.h.aq a2, a3, (a4)
162# CHECK-ASM-AND-OBJ: amoand.h.aq a3, a4, (a5)
163# CHECK-ASM: encoding: [0xaf,0x96,0xe7,0x64]
164amoand.h.aq a3, a4, (a5)
165# CHECK-ASM-AND-OBJ: amoor.h.aq a4, a5, (a6)
166# CHECK-ASM: encoding: [0x2f,0x17,0xf8,0x44]
167amoor.h.aq a4, a5, (a6)
168# CHECK-ASM-AND-OBJ: amomin.h.aq a5, a6, (a7)
169# CHECK-ASM: encoding: [0xaf,0x97,0x08,0x85]
170amomin.h.aq a5, a6, (a7)
171# CHECK-ASM-AND-OBJ: amomax.h.aq s7, s6, (s5)
172# CHECK-ASM: encoding: [0xaf,0x9b,0x6a,0xa5]
173amomax.h.aq s7, s6, (s5)
174# CHECK-ASM-AND-OBJ: amominu.h.aq s6, s5, (s4)
175# CHECK-ASM: encoding: [0x2f,0x1b,0x5a,0xc5]
176amominu.h.aq s6, s5, (s4)
177# CHECK-ASM-AND-OBJ: amomaxu.h.aq s5, s4, (s3)
178# CHECK-ASM: encoding: [0xaf,0x9a,0x49,0xe5]
179amomaxu.h.aq s5, s4, (s3)
180
181# CHECK-ASM-AND-OBJ: amoswap.h.rl a4, ra, (s0)
182# CHECK-ASM: encoding: [0x2f,0x17,0x14,0x0a]
183amoswap.h.rl a4, ra, (s0)
184# CHECK-ASM-AND-OBJ: amoadd.h.rl a1, a2, (a3)
185# CHECK-ASM: encoding: [0xaf,0x95,0xc6,0x02]
186amoadd.h.rl a1, a2, (a3)
187# CHECK-ASM-AND-OBJ: amoxor.h.rl a2, a3, (a4)
188# CHECK-ASM: encoding: [0x2f,0x16,0xd7,0x22]
189amoxor.h.rl a2, a3, (a4)
190# CHECK-ASM-AND-OBJ: amoand.h.rl a3, a4, (a5)
191# CHECK-ASM: encoding: [0xaf,0x96,0xe7,0x62]
192amoand.h.rl a3, a4, (a5)
193# CHECK-ASM-AND-OBJ: amoor.h.rl a4, a5, (a6)
194# CHECK-ASM: encoding: [0x2f,0x17,0xf8,0x42]
195amoor.h.rl a4, a5, (a6)
196# CHECK-ASM-AND-OBJ: amomin.h.rl a5, a6, (a7)
197# CHECK-ASM: encoding: [0xaf,0x97,0x08,0x83]
198amomin.h.rl a5, a6, (a7)
199# CHECK-ASM-AND-OBJ: amomax.h.rl s7, s6, (s5)
200# CHECK-ASM: encoding: [0xaf,0x9b,0x6a,0xa3]
201amomax.h.rl s7, s6, (s5)
202# CHECK-ASM-AND-OBJ: amominu.h.rl s6, s5, (s4)
203# CHECK-ASM: encoding: [0x2f,0x1b,0x5a,0xc3]
204amominu.h.rl s6, s5, (s4)
205# CHECK-ASM-AND-OBJ: amomaxu.h.rl s5, s4, (s3)
206# CHECK-ASM: encoding: [0xaf,0x9a,0x49,0xe3]
207amomaxu.h.rl s5, s4, (s3)
208
209# CHECK-ASM-AND-OBJ: amoswap.h.aqrl a4, ra, (s0)
210# CHECK-ASM: encoding: [0x2f,0x17,0x14,0x0e]
211amoswap.h.aqrl a4, ra, (s0)
212# CHECK-ASM-AND-OBJ: amoadd.h.aqrl a1, a2, (a3)
213# CHECK-ASM: encoding: [0xaf,0x95,0xc6,0x06]
214amoadd.h.aqrl a1, a2, (a3)
215# CHECK-ASM-AND-OBJ: amoxor.h.aqrl a2, a3, (a4)
216# CHECK-ASM: encoding: [0x2f,0x16,0xd7,0x26]
217amoxor.h.aqrl a2, a3, (a4)
218# CHECK-ASM-AND-OBJ: amoand.h.aqrl a3, a4, (a5)
219# CHECK-ASM: encoding: [0xaf,0x96,0xe7,0x66]
220amoand.h.aqrl a3, a4, (a5)
221# CHECK-ASM-AND-OBJ: amoor.h.aqrl a4, a5, (a6)
222# CHECK-ASM: encoding: [0x2f,0x17,0xf8,0x46]
223amoor.h.aqrl a4, a5, (a6)
224# CHECK-ASM-AND-OBJ: amomin.h.aqrl a5, a6, (a7)
225# CHECK-ASM: encoding: [0xaf,0x97,0x08,0x87]
226amomin.h.aqrl a5, a6, (a7)
227# CHECK-ASM-AND-OBJ: amomax.h.aqrl s7, s6, (s5)
228# CHECK-ASM: encoding: [0xaf,0x9b,0x6a,0xa7]
229amomax.h.aqrl s7, s6, (s5)
230# CHECK-ASM-AND-OBJ: amominu.h.aqrl s6, s5, (s4)
231# CHECK-ASM: encoding: [0x2f,0x1b,0x5a,0xc7]
232amominu.h.aqrl s6, s5, (s4)
233# CHECK-ASM-AND-OBJ: amomaxu.h.aqrl s5, s4, (s3)
234# CHECK-ASM: encoding: [0xaf,0x9a,0x49,0xe7]
235amomaxu.h.aqrl s5, s4, (s3)
236