[InstCombine] Signed saturation tests. NFC
[llvm-core.git] / test / MC / Hexagon / instructions / nv_st.s
blob46ab31ef2f75ad2a59d4cbf99ba6d5c70ebdf696
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
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(gp+#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 }
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 }
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(gp+#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 }
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 }
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(gp+#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 }
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 }