1 # RUN: llvm-mc -triple=hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s
2 # Hexagon Programmer's Reference Manual 11.10.8 XTYPE/SHIFT
6 r17:16 = asr(r21:20, #31)
8 r17:16 = lsr(r21:20, #31)
10 r17:16 = asl(r21:20, #31)
18 # Shift by immediate and accumulate
20 r17:16 -= asr(r21:20, #31)
22 r17:16 -= lsr(r21:20, #31)
24 r17:16 -= asl(r21:20, #31)
26 r17:16 += asr(r21:20, #31)
28 r17:16 += lsr(r21:20, #31)
30 r17:16 += asl(r21:20, #31)
44 r17 = add(#21, asl(r17, #23))
46 r17 = sub(#21, asl(r17, #23))
48 r17 = add(#21, lsr(r17, #23))
50 r17 = sub(#21, lsr(r17, #23))
52 # Shift by immediate and add
54 r17 = addasl(r21, r31, #7)
56 # Shift by immediate and logical
58 r17:16 &= asr(r21:20, #31)
60 r17:16 &= lsr(r21:20, #31)
62 r17:16 &= asl(r21:20, #31)
64 r17:16 |= asr(r21:20, #31)
66 r17:16 |= lsr(r21:20, #31)
68 r17:16 |= asl(r21:20, #31)
70 r17:16 ^= lsr(r21:20, #31)
72 r17:16 ^= asl(r21:20, #31)
90 r17 = and(#21, asl(r17, #31))
92 r17 = or(#21, asl(r17, #31))
94 r17 = and(#21, lsr(r17, #31))
96 r17 = or(#21, lsr(r17, #31))
98 # Shift right by immediate with rounding
100 r17:16 = asr(r21:20, #31):rnd
102 r17 = asr(r21, #31):rnd
104 # Shift left by immediate with saturation
106 r17 = asl(r21, #31):sat
110 r17:16 = asr(r21:20, r31)
112 r17:16 = lsr(r21:20, r31)
114 r17:16 = asl(r21:20, r31)
116 r17:16 = lsl(r21:20, r31)
128 # Shift by register and accumulate
130 r17:16 -= asr(r21:20, r31)
132 r17:16 -= lsr(r21:20, r31)
134 r17:16 -= asl(r21:20, r31)
136 r17:16 -= lsl(r21:20, r31)
138 r17:16 += asr(r21:20, r31)
140 r17:16 += lsr(r21:20, r31)
142 r17:16 += asl(r21:20, r31)
144 r17:16 += lsl(r21:20, r31)
162 # Shift by register and logical
164 r17:16 |= asr(r21:20, r31)
166 r17:16 |= lsr(r21:20, r31)
168 r17:16 |= asl(r21:20, r31)
170 r17:16 |= lsl(r21:20, r31)
172 r17:16 &= asr(r21:20, r31)
174 r17:16 &= lsr(r21:20, r31)
176 r17:16 &= asl(r21:20, r31)
178 r17:16 &= lsl(r21:20, r31)
180 r17:16 ^= asr(r21:20, r31)
182 r17:16 ^= lsr(r21:20, r31)
184 r17:16 ^= asl(r21:20, r31)
186 r17:16 ^= lsl(r21:20, r31)
204 # Shift by register with saturation
206 r17 = asr(r21, r31):sat
208 r17 = asl(r21, r31):sat
210 # Vector shift halfwords by immediate
212 r17:16 = vasrh(r21:20, #5)
214 r17:16 = vlsrh(r21:20, #5)
216 r17:16 = vaslh(r21:20, #5)
218 # Vector arithmetic shift halfwords with round
220 r17:16 = vasrh(r21:20, #5):raw
222 # Vector arithmetic shift halfwords with saturate and pack
224 r17 = vasrhub(r21:20, #5):raw
226 r17 = vasrhub(r21:20, #5):sat
228 # Vector shift halfwords by register
230 r17:16 = vasrh(r21:20, r31)
232 r17:16 = vlsrh(r21:20, r31)
234 r17:16 = vaslh(r21:20, r31)
236 r17:16 = vlslh(r21:20, r31)
238 # Vector shift words by immediate
240 r17:16 = vasrw(r21:20, #31)
242 r17:16 = vlsrw(r21:20, #31)
244 r17:16 = vaslw(r21:20, #31)
246 # Vector shift words by register
248 r17:16 = vasrw(r21:20, r31)
250 r17:16 = vlsrw(r21:20, r31)
252 r17:16 = vaslw(r21:20, r31)
254 r17:16 = vlslw(r21:20, r31)
256 # Vector shift words with truncate and pack
258 r17 = vasrw(r21:20, #31)
260 r17 = vasrw(r21:20, r31)