[Hexagon] Enabling ASM parsing on Hexagon backend and adding instruction parsing...
[oota-llvm.git] / test / MC / Hexagon / instructions / nv_st.s
1 # RUN: llvm-mc -triple=hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s
2 # Hexagon Programmer's Reference Manual 11.7.2 NV/ST
3
4 # Store new-value byte
5 # CHECK: 1f 40 7f 70
6 # CHECK-NEXT: 82 f5 b1 3b
7 { r31 = r31
8   memb(r17 + r21<<#3) = r31.new }
9 # CHECK: 1f 40 7f 70
10 # CHECK-NEXT: 11 c2 a0 48
11 { r31 = r31
12   memb(#17) = r31.new }
13 # CHECK: 1f 40 7f 70
14 # CHECK-NEXT: 15 c2 b1 a1
15 { r31 = r31
16   memb(r17+#21) = r31.new }
17 # CHECK: 1f 40 7f 70
18 # CHECK-NEXT: 02 e2 b1 a9
19 { r31 = r31
20   memb(r17 ++ I:circ(m1)) = r31.new }
21 # CHECK: 1f 40 7f 70
22 # CHECK-NEXT: 28 e2 b1 a9
23 { r31 = r31
24   memb(r17 ++ #5:circ(m1)) = r31.new }
25 # CHECK: 1f 40 7f 70
26 # CHECK-NEXT: 28 c2 b1 ab
27 { r31 = r31
28   memb(r17++#5) = r31.new }
29 # CHECK: 1f 40 7f 70
30 # CHECK-NEXT: 00 e2 b1 ad
31 { r31 = r31
32   memb(r17++m1) = r31.new }
33 # CHECK: 1f 40 7f 70
34 # CHECK-NEXT: 00 e2 b1 af
35 { r31 = r31
36   memb(r17 ++ m1:brev) = r31.new }
37
38 # Store new-value byte conditionally
39 # CHECK: 1f 40 7f 70
40 # CHECK-NEXT: e2 f5 b1 34
41 { r31 = r31
42   if (p3) memb(r17+r21<<#3) = r31.new }
43 # CHECK: 1f 40 7f 70
44 # CHECK-NEXT: e2 f5 b1 35
45 { r31 = r31
46   if (!p3) memb(r17+r21<<#3) = r31.new }
47 # CHECK: 03 40 45 85
48 # CHECK-NEXT: 1f 40 7f 70
49 # CHECK-NEXT: e2 f5 b1 36
50 { p3 = r5
51   r31 = r31
52   if (p3.new) memb(r17+r21<<#3) = r31.new }
53 # CHECK: 03 40 45 85
54 # CHECK-NEXT: 1f 40 7f 70
55 # CHECK-NEXT: e2 f5 b1 37
56 { p3 = r5
57   r31 = r31
58   if (!p3.new) memb(r17+r21<<#3) = r31.new }
59 # CHECK: 1f 40 7f 70
60 # CHECK-NEXT: ab c2 b1 40
61 { r31 = r31
62   if (p3) memb(r17+#21) = r31.new }
63 # CHECK: 1f 40 7f 70
64 # CHECK-NEXT: ab c2 b1 44
65 { r31 = r31
66   if (!p3) memb(r17+#21) = r31.new }
67 # CHECK: 03 40 45 85
68 # CHECK-NEXT: 1f 40 7f 70
69 # CHECK-NEXT: ab c2 b1 42
70 { p3 = r5
71   r31 = r31
72   if (p3.new) memb(r17+#21) = r31.new }
73 # CHECK: 03 40 45 85
74 # CHECK-NEXT: 1f 40 7f 70
75 # CHECK-NEXT: ab c2 b1 46
76 { p3 = r5
77   r31 = r31
78   if (!p3.new) memb(r17+#21) = r31.new }
79 # CHECK: 1f 40 7f 70
80 # CHECK-NEXT: 2b e2 b1 ab
81 { r31 = r31
82   if (p3) memb(r17++#5) = r31.new }
83 # CHECK: 1f 40 7f 70
84 # CHECK-NEXT: 2f e2 b1 ab
85 { r31 = r31
86   if (!p3) memb(r17++#5) = r31.new }
87 # CHECK: 03 40 45 85
88 # CHECK-NEXT: 1f 40 7f 70
89 # CHECK-NEXT: ab e2 b1 ab
90 { p3 = r5
91   r31 = r31
92   if (p3.new) memb(r17++#5) = r31.new }
93 # CHECK: 03 40 45 85
94 # CHECK-NEXT: 1f 40 7f 70
95 # CHECK-NEXT: af e2 b1 ab
96 { p3 = r5
97   r31 = r31
98   if (!p3.new) memb(r17++#5) = r31.new }
99
100 # Store new-value halfword
101 # CHECK: 1f 40 7f 70
102 # CHECK-NEXT: 8a f5 b1 3b
103 { r31 = r31
104   memh(r17 + r21<<#3) = r31.new }
105 # CHECK: 1f 40 7f 70
106 # CHECK-NEXT: 15 ca a0 48
107 { r31 = r31
108   memh(#42) = r31.new }
109 # CHECK: 1f 40 7f 70
110 # CHECK-NEXT: 15 ca b1 a1
111 { r31 = r31
112   memh(r17+#42) = r31.new }
113 # CHECK: 1f 40 7f 70
114 # CHECK-NEXT: 02 ea b1 a9
115 { r31 = r31
116   memh(r17 ++ I:circ(m1)) = r31.new }
117 # CHECK: 1f 40 7f 70
118 # CHECK-NEXT: 28 ea b1 a9
119 { r31 = r31
120   memh(r17 ++ #10:circ(m1)) = r31.new }
121 # CHECK: 1f 40 7f 70
122 # CHECK-NEXT: 28 ca b1 ab
123 { r31 = r31
124   memh(r17++#10) = r31.new }
125 # CHECK: 1f 40 7f 70
126 # CHECK-NEXT: 00 ea b1 ad
127 { r31 = r31
128   memh(r17++m1) = r31.new }
129 # CHECK: 1f 40 7f 70
130 # CHECK-NEXT: 00 ea b1 af
131 { r31 = r31
132   memh(r17 ++ m1:brev) = r31.new }
133
134 # Store new-value halfword conditionally
135 # CHECK: 1f 40 7f 70
136 # CHECK-NEXT: ea f5 b1 34
137 { r31 = r31
138   if (p3) memh(r17+r21<<#3) = r31.new }
139 # CHECK: 1f 40 7f 70
140 # CHECK-NEXT: ea f5 b1 35
141 { r31 = r31
142   if (!p3) memh(r17+r21<<#3) = r31.new }
143 # CHECK: 03 40 45 85
144 # CHECK-NEXT: 1f 40 7f 70
145 # CHECK-NEXT: ea f5 b1 36
146 { p3 = r5
147   r31 = r31
148   if (p3.new) memh(r17+r21<<#3) = r31.new }
149 # CHECK: 03 40 45 85
150 # CHECK-NEXT: 1f 40 7f 70
151 # CHECK-NEXT: ea f5 b1 37
152 { p3 = r5
153   r31 = r31
154   if (!p3.new) memh(r17+r21<<#3) = r31.new }
155 # CHECK: 1f 40 7f 70
156 # CHECK-NEXT: ab ca b1 40
157 { r31 = r31
158   if (p3) memh(r17+#42) = r31.new }
159 # CHECK: 1f 40 7f 70
160 # CHECK-NEXT: ab ca b1 44
161 { r31 = r31
162   if (!p3) memh(r17+#42) = r31.new }
163 # CHECK: 03 40 45 85
164 # CHECK-NEXT: 1f 40 7f 70
165 # CHECK-NEXT: ab ca b1 42
166 { p3 = r5
167   r31 = r31
168   if (p3.new) memh(r17+#42) = r31.new }
169 # CHECK: 03 40 45 85
170 # CHECK-NEXT: 1f 40 7f 70
171 # CHECK-NEXT: ab ca b1 46
172 { p3 = r5
173   r31 = r31
174   if (!p3.new) memh(r17+#42) = r31.new }
175 # CHECK: 1f 40 7f 70
176 # CHECK-NEXT: 2b ea b1 ab
177 { r31 = r31
178   if (p3) memh(r17++#10) = r31.new }
179 # CHECK: 1f 40 7f 70
180 # CHECK-NEXT: 2f ea b1 ab
181 { r31 = r31
182   if (!p3) memh(r17++#10) = r31.new }
183 # CHECK: 03 40 45 85
184 # CHECK-NEXT: 1f 40 7f 70
185 # CHECK-NEXT: ab ea b1 ab
186 { p3 = r5
187   r31 = r31
188   if (p3.new) memh(r17++#10) = r31.new }
189 # CHECK: 03 40 45 85
190 # CHECK-NEXT: 1f 40 7f 70
191 # CHECK-NEXT: af ea b1 ab
192 { p3 = r5
193   r31 = r31
194   if (!p3.new) memh(r17++#10) = r31.new }
195
196 # Store new-value word
197 # CHECK: 1f 40 7f 70
198 # CHECK-NEXT: 92 f5 b1 3b
199 { r31 = r31
200   memw(r17 + r21<<#3) = r31.new }
201 # CHECK: 1f 40 7f 70
202 # CHECK-NEXT: 15 d2 a0 48
203 { r31 = r31
204   memw(#84) = r31.new }
205 # CHECK: 1f 40 7f 70
206 # CHECK-NEXT: 15 d2 b1 a1
207 { r31 = r31
208   memw(r17+#84) = r31.new }
209 # CHECK: 1f 40 7f 70
210 # CHECK-NEXT: 02 f2 b1 a9
211 { r31 = r31
212   memw(r17 ++ I:circ(m1)) = r31.new }
213 # CHECK: 1f 40 7f 70
214 # CHECK-NEXT: 28 f2 b1 a9
215 { r31 = r31
216   memw(r17 ++ #20:circ(m1)) = r31.new }
217 # CHECK: 1f 40 7f 70
218 # CHECK-NEXT: 28 d2 b1 ab
219 { r31 = r31
220   memw(r17++#20) = r31.new }
221 # CHECK: 1f 40 7f 70
222 # CHECK-NEXT: 00 f2 b1 ad
223 { r31 = r31
224   memw(r17++m1) = r31.new }
225 # CHECK: 1f 40 7f 70
226 # CHECK-NEXT: 00 f2 b1 af
227 { r31 = r31
228   memw(r17 ++ m1:brev) = r31.new }
229
230 # Store new-value word conditionally
231 # CHECK: 1f 40 7f 70
232 # CHECK-NEXT: f2 f5 b1 34
233 { r31 = r31
234   if (p3) memw(r17+r21<<#3) = r31.new }
235 # CHECK: 1f 40 7f 70
236 # CHECK-NEXT: f2 f5 b1 35
237 { r31 = r31
238   if (!p3) memw(r17+r21<<#3) = r31.new }
239 # CHECK: 03 40 45 85
240 # CHECK-NEXT: 1f 40 7f 70
241 # CHECK-NEXT: f2 f5 b1 36
242 { p3 = r5
243   r31 = r31
244   if (p3.new) memw(r17+r21<<#3) = r31.new }
245 # CHECK: 03 40 45 85
246 # CHECK-NEXT: 1f 40 7f 70
247 # CHECK-NEXT: f2 f5 b1 37
248 { p3 = r5
249   r31 = r31
250   if (!p3.new) memw(r17+r21<<#3) = r31.new }
251 # CHECK: 1f 40 7f 70
252 # CHECK-NEXT: ab d2 b1 40
253 { r31 = r31
254   if (p3) memw(r17+#84) = r31.new }
255 # CHECK: 1f 40 7f 70
256 # CHECK-NEXT: ab d2 b1 44
257 { r31 = r31
258   if (!p3) memw(r17+#84) = r31.new }
259 # CHECK: 03 40 45 85
260 # CHECK-NEXT: 1f 40 7f 70
261 # CHECK-NEXT: ab d2 b1 42
262 { p3 = r5
263   r31 = r31
264   if (p3.new) memw(r17+#84) = r31.new }
265 # CHECK: 03 40 45 85
266 # CHECK-NEXT: 1f 40 7f 70
267 # CHECK-NEXT: ab d2 b1 46
268 { p3 = r5
269   r31 = r31
270   if (!p3.new) memw(r17+#84) = r31.new }
271 # CHECK: 1f 40 7f 70
272 # CHECK-NEXT: 2b f2 b1 ab
273 { r31 = r31
274   if (p3) memw(r17++#20) = r31.new }
275 # CHECK: 1f 40 7f 70
276 # CHECK-NEXT: 2f f2 b1 ab
277 { r31 = r31
278   if (!p3) memw(r17++#20) = r31.new }
279 # CHECK: 03 40 45 85
280 # CHECK-NEXT: 1f 40 7f 70
281 # CHECK-NEXT: ab f2 b1 ab
282 { p3 = r5
283   r31 = r31
284   if (p3.new) memw(r17++#20) = r31.new }
285 # CHECK: 03 40 45 85
286 # CHECK-NEXT: 1f 40 7f 70
287 # CHECK-NEXT: af f2 b1 ab
288 { p3 = r5
289   r31 = r31
290   if (!p3.new) memw(r17++#20) = r31.new }