[Hexagon] Adding vector shift instructions and tests.
[oota-llvm.git] / test / MC / Disassembler / Hexagon / xtype_shift.txt
1 # RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s
2 # Hexagon Programmer's Reference Manual 11.10.8 XTYPE/SHIFT
3
4 # Shift by immediate
5 0x10 0xdf 0x14 0x80
6 # CHECK: r17:16 = asr(r21:20, #31)
7 0x30 0xdf 0x14 0x80
8 # CHECK: r17:16 = lsr(r21:20, #31)
9 0x50 0xdf 0x14 0x80
10 # CHECK: r17:16 = asl(r21:20, #31)
11 0x11 0xdf 0x15 0x8c
12 # CHECK: r17 = asr(r21, #31)
13 0x31 0xdf 0x15 0x8c
14 # CHECK: r17 = lsr(r21, #31)
15 0x51 0xdf 0x15 0x8c
16 # CHECK: r17 = asl(r21, #31)
17
18 # Shift by immediate and accumulate
19 0x10 0xdf 0x14 0x82
20 # CHECK: r17:16 -= asr(r21:20, #31)
21 0x30 0xdf 0x14 0x82
22 # CHECK: r17:16 -= lsr(r21:20, #31)
23 0x50 0xdf 0x14 0x82
24 # CHECK: r17:16 -= asl(r21:20, #31)
25 0x90 0xdf 0x14 0x82
26 # CHECK: r17:16 += asr(r21:20, #31)
27 0xb0 0xdf 0x14 0x82
28 # CHECK: r17:16 += lsr(r21:20, #31)
29 0xd0 0xdf 0x14 0x82
30 # CHECK: r17:16 += asl(r21:20, #31)
31 0x11 0xdf 0x15 0x8e
32 # CHECK: r17 -= asr(r21, #31)
33 0x31 0xdf 0x15 0x8e
34 # CHECK: r17 -= lsr(r21, #31)
35 0x51 0xdf 0x15 0x8e
36 # CHECK: r17 -= asl(r21, #31)
37 0x91 0xdf 0x15 0x8e
38 # CHECK: r17 += asr(r21, #31)
39 0xb1 0xdf 0x15 0x8e
40 # CHECK: r17 += lsr(r21, #31)
41 0xd1 0xdf 0x15 0x8e
42 # CHECK: r17 += asl(r21, #31)
43 0x4c 0xf7 0x11 0xde
44 # CHECK: r17 = add(#21, asl(r17, #23))
45 0x4e 0xf7 0x11 0xde
46 # CHECK: r17 = sub(#21, asl(r17, #23))
47 0x5c 0xf7 0x11 0xde
48 # CHECK: r17 = add(#21, lsr(r17, #23))
49 0x5e 0xf7 0x11 0xde
50 # CHECK: r17 = sub(#21, lsr(r17, #23))
51
52 # Shift by immediate and add
53 0xf1 0xd5 0x1f 0xc4
54 # CHECK: r17 = addasl(r21, r31, #7)
55
56 # Shift by immediate and logical
57 0x10 0xdf 0x54 0x82
58 # CHECK: r17:16 &= asr(r21:20, #31)
59 0x30 0xdf 0x54 0x82
60 # CHECK: r17:16 &= lsr(r21:20, #31)
61 0x50 0xdf 0x54 0x82
62 # CHECK: r17:16 &= asl(r21:20, #31)
63 0x90 0xdf 0x54 0x82
64 # CHECK: r17:16 |= asr(r21:20, #31)
65 0xb0 0xdf 0x54 0x82
66 # CHECK: r17:16 |= lsr(r21:20, #31)
67 0xd0 0xdf 0x54 0x82
68 # CHECK: r17:16 |= asl(r21:20, #31)
69 0x30 0xdf 0x94 0x82
70 # CHECK: r17:16 ^= lsr(r21:20, #31)
71 0x50 0xdf 0x94 0x82
72 # CHECK: r17:16 ^= asl(r21:20, #31)
73 0x11 0xdf 0x55 0x8e
74 # CHECK: r17 &= asr(r21, #31)
75 0x31 0xdf 0x55 0x8e
76 # CHECK: r17 &= lsr(r21, #31)
77 0x51 0xdf 0x55 0x8e
78 # CHECK: r17 &= asl(r21, #31)
79 0x91 0xdf 0x55 0x8e
80 # CHECK: r17 |= asr(r21, #31)
81 0xb1 0xdf 0x55 0x8e
82 # CHECK: r17 |= lsr(r21, #31)
83 0xd1 0xdf 0x55 0x8e
84 # CHECK: r17 |= asl(r21, #31)
85 0x31 0xdf 0x95 0x8e
86 # CHECK: r17 ^= lsr(r21, #31)
87 0x51 0xdf 0x95 0x8e
88 # CHECK: r17 ^= asl(r21, #31)
89 0x48 0xff 0x11 0xde
90 # CHECK: r17 = and(#21, asl(r17, #31))
91 0x4a 0xff 0x11 0xde
92 # CHECK: r17 = or(#21, asl(r17, #31))
93 0x58 0xff 0x11 0xde
94 # CHECK: r17 = and(#21, lsr(r17, #31))
95 0x5a 0xff 0x11 0xde
96 # CHECK: r17 = or(#21, lsr(r17, #31))
97
98 # Shift right by immediate with rounding
99 0xf0 0xdf 0xd4 0x80
100 # CHECK: r17:16 = asr(r21:20, #31):rnd
101 0x11 0xdf 0x55 0x8c
102 # CHECK: r17 = asr(r21, #31):rnd
103
104 # Shift left by immediate with saturation
105 0x51 0xdf 0x55 0x8c
106 # CHECK: r17 = asl(r21, #31):sat
107
108 # Shift by register
109 0x10 0xdf 0x94 0xc3
110 # CHECK: r17:16 = asr(r21:20, r31)
111 0x50 0xdf 0x94 0xc3
112 # CHECK: r17:16 = lsr(r21:20, r31)
113 0x90 0xdf 0x94 0xc3
114 # CHECK: r17:16 = asl(r21:20, r31)
115 0xd0 0xdf 0x94 0xc3
116 # CHECK: r17:16 = lsl(r21:20, r31)
117 0x11 0xdf 0x55 0xc6
118 # CHECK: r17 = asr(r21, r31)
119 0x51 0xdf 0x55 0xc6
120 # CHECK: r17 = lsr(r21, r31)
121 0x91 0xdf 0x55 0xc6
122 # CHECK: r17 = asl(r21, r31)
123 0xd1 0xdf 0x55 0xc6
124 # CHECK: r17 = lsl(r21, r31)
125 0xf1 0xdf 0x8a 0xc6
126 # CHECK: r17 = lsl(#21, r31)
127
128 # Shift by register and accumulate
129 0x10 0xdf 0x94 0xcb
130 # CHECK: r17:16 -= asr(r21:20, r31)
131 0x50 0xdf 0x94 0xcb
132 # CHECK: r17:16 -= lsr(r21:20, r31)
133 0x90 0xdf 0x94 0xcb
134 # CHECK: r17:16 -= asl(r21:20, r31)
135 0xd0 0xdf 0x94 0xcb
136 # CHECK: r17:16 -= lsl(r21:20, r31)
137 0x10 0xdf 0xd4 0xcb
138 # CHECK: r17:16 += asr(r21:20, r31)
139 0x50 0xdf 0xd4 0xcb
140 # CHECK: r17:16 += lsr(r21:20, r31)
141 0x90 0xdf 0xd4 0xcb
142 # CHECK: r17:16 += asl(r21:20, r31)
143 0xd0 0xdf 0xd4 0xcb
144 # CHECK: r17:16 += lsl(r21:20, r31)
145 0x11 0xdf 0x95 0xcc
146 # CHECK: r17 -= asr(r21, r31)
147 0x51 0xdf 0x95 0xcc
148 # CHECK: r17 -= lsr(r21, r31)
149 0x91 0xdf 0x95 0xcc
150 # CHECK: r17 -= asl(r21, r31)
151 0xd1 0xdf 0x95 0xcc
152 # CHECK: r17 -= lsl(r21, r31)
153 0x11 0xdf 0xd5 0xcc
154 # CHECK: r17 += asr(r21, r31)
155 0x51 0xdf 0xd5 0xcc
156 # CHECK: r17 += lsr(r21, r31)
157 0x91 0xdf 0xd5 0xcc
158 # CHECK: r17 += asl(r21, r31)
159 0xd1 0xdf 0xd5 0xcc
160 # CHECK: r17 += lsl(r21, r31)
161
162 # Shift by register and logical
163 0x10 0xdf 0x14 0xcb
164 # CHECK: r17:16 |= asr(r21:20, r31)
165 0x50 0xdf 0x14 0xcb
166 # CHECK: r17:16 |= lsr(r21:20, r31)
167 0x90 0xdf 0x14 0xcb
168 # CHECK: r17:16 |= asl(r21:20, r31)
169 0xd0 0xdf 0x14 0xcb
170 # CHECK: r17:16 |= lsl(r21:20, r31)
171 0x10 0xdf 0x54 0xcb
172 # CHECK: r17:16 &= asr(r21:20, r31)
173 0x50 0xdf 0x54 0xcb
174 # CHECK: r17:16 &= lsr(r21:20, r31)
175 0x90 0xdf 0x54 0xcb
176 # CHECK: r17:16 &= asl(r21:20, r31)
177 0xd0 0xdf 0x54 0xcb
178 # CHECK: r17:16 &= lsl(r21:20, r31)
179 0x10 0xdf 0x74 0xcb
180 # CHECK: r17:16 ^= asr(r21:20, r31)
181 0x50 0xdf 0x74 0xcb
182 # CHECK: r17:16 ^= lsr(r21:20, r31)
183 0x90 0xdf 0x74 0xcb
184 # CHECK: r17:16 ^= asl(r21:20, r31)
185 0xd0 0xdf 0x74 0xcb
186 # CHECK: r17:16 ^= lsl(r21:20, r31)
187 0x11 0xdf 0x15 0xcc
188 # CHECK: r17 |= asr(r21, r31)
189 0x51 0xdf 0x15 0xcc
190 # CHECK: r17 |= lsr(r21, r31)
191 0x91 0xdf 0x15 0xcc
192 # CHECK: r17 |= asl(r21, r31)
193 0xd1 0xdf 0x15 0xcc
194 # CHECK: r17 |= lsl(r21, r31)
195 0x11 0xdf 0x55 0xcc
196 # CHECK: r17 &= asr(r21, r31)
197 0x51 0xdf 0x55 0xcc
198 # CHECK: r17 &= lsr(r21, r31)
199 0x91 0xdf 0x55 0xcc
200 # CHECK: r17 &= asl(r21, r31)
201 0xd1 0xdf 0x55 0xcc
202 # CHECK: r17 &= lsl(r21, r31)
203
204 # Shift by register with saturation
205 0x11 0xdf 0x15 0xc6
206 # CHECK: r17 = asr(r21, r31):sat
207 0x91 0xdf 0x15 0xc6
208 # CHECK: r17 = asl(r21, r31):sat
209
210 # Vector shift halfwords by immediate
211 0x10 0xc5 0x94 0x80
212 # CHECK: r17:16 = vasrh(r21:20, #5)
213 0x30 0xc5 0x94 0x80
214 # CHECK: r17:16 = vlsrh(r21:20, #5)
215 0x50 0xc5 0x94 0x80
216 # CHECK: r17:16 = vaslh(r21:20, #5)
217
218 # Vector arithmetic shift halfwords with round
219 0x10 0xc5 0x34 0x80
220 # CHECK: r17:16 = vasrh(r21:20, #5):raw
221
222 # Vector arithmetic shift halfwords with saturate and pack
223 0x91 0xc5 0x74 0x88
224 # CHECK: r17 = vasrhub(r21:20, #5):raw
225 0xb1 0xc5 0x74 0x88
226 # CHECK: r17 = vasrhub(r21:20, #5):sat
227
228 # Vector shift halfwords by register
229 0x10 0xdf 0x54 0xc3
230 # CHECK: r17:16 = vasrh(r21:20, r31)
231 0x50 0xdf 0x54 0xc3
232 # CHECK: r17:16 = vlsrh(r21:20, r31)
233 0x90 0xdf 0x54 0xc3
234 # CHECK: r17:16 = vaslh(r21:20, r31)
235 0xd0 0xdf 0x54 0xc3
236 # CHECK: r17:16 = vlslh(r21:20, r31)
237
238 # Vector shift words by immediate
239 0x10 0xdf 0x54 0x80
240 # CHECK: r17:16 = vasrw(r21:20, #31)
241 0x30 0xdf 0x54 0x80
242 # CHECK: r17:16 = vlsrw(r21:20, #31)
243 0x50 0xdf 0x54 0x80
244 # CHECK: r17:16 = vaslw(r21:20, #31)
245
246 # Vector shift words by register
247 0x10 0xdf 0x14 0xc3
248 # CHECK: r17:16 = vasrw(r21:20, r31)
249 0x50 0xdf 0x14 0xc3
250 # CHECK: r17:16 = vlsrw(r21:20, r31)
251 0x90 0xdf 0x14 0xc3
252 # CHECK: r17:16 = vaslw(r21:20, r31)
253 0xd0 0xdf 0x14 0xc3
254 # CHECK: r17:16 = vlslw(r21:20, r31)
255
256 # Vector shift words with truncate and pack
257 0x51 0xdf 0xd4 0x88
258 # CHECK: r17 = vasrw(r21:20, #31)
259 0x51 0xdf 0x14 0xc5
260 # CHECK: r17 = vasrw(r21:20, r31)