1 # RUN: llvm-mc -triple=hexagon -mcpu=hexagonv65 -mhvx -filetype=obj %s | \
2 # RUN: llvm-objdump --no-print-imm-hex --mcpu=hexagonv65 --mattr=+hvx -d - | \
7 # CHECK: 5c00c000 { if (p0) jump:nt
10 # CHECK: 5cffe1fe { if (!p1) jump:nt
13 # CHECK: 5340c200 { if (p2) jumpr:nt
16 # CHECK: 5361c300 { if (!p3) jumpr:nt
19 # CHECK: 1e64f1d7 { v23 = vlalign(v17,v4,#6) }
20 v23
=vlalign
(v17
,v4
,#6)
22 # CHECK: 1ec3c003 { q3 = and(q0,q3) }
25 # CHECK: 1e00ff3c { v29:28.w |= vunpacko(v31.h) }
26 v29
:28.w|=vunpacko(v31.h)
28 # CHECK: 1e22e60e { v14 = valign(v6,v2,#0) }
31 # CHECK: 1baae196 { v23:22 = vdeal(v1,v21,r2) }
32 v23
:22=vdeal
(v1
,v21
,r2)
34 # CHECK: 1e00f80c { v13:12.h |= vunpacko(v24.b) }
35 v13
:12.h|=vunpacko(v24.b)
37 # CHECK: 1b1ae609 { v9.b = vasr(v6.h,v3.h,r2):rnd:sat }
38 v9.
b=vasr
(v6.h
,v3.h
,r2):rnd
:sat
40 # CHECK: 1ba8e77c { v29:28 = vshuff(v7,v21,r0) }
41 v29
:28=vshuff
(v7
,v21
,r0)
43 # CHECK: 1e43c107 { q3 = or(q1,q1) }
46 # CHECK: 1e03c20d { q1 = xor(q2,q0) }
49 # CHECK: 1f8ecd19 { q1 = vcmp.gt(v13.w,v14.w) }
50 q1
=vcmp.gt
(v13.w
,v14.w
)
52 # CHECK: 1f9dce14 { q0 = vcmp.gt(v14.h,v29.h) }
53 q0
=vcmp.gt
(v14.h
,v29.h
)
55 # CHECK: 1e83c014 { q0 = and(q0,!q2) }
58 # CHECK: 1e03c310 { q0 = or(q3,!q0) }
61 # CHECK: 1e03c309 { q1 = not(q3) }
64 # CHECK: 1e03c109 { q1 = not(q1) }
67 # CHECK: 1f86d704 { q0 = vcmp.eq(v23.h,v6.h) }
68 q0
=vcmp.eq
(v23.h
,v6.h
)
70 # CHECK: 1f83d303 { q3 = vcmp.eq(v19.b,v3.b) }
71 q3
=vcmp.eq
(v19.
b,v3.
b)
73 # CHECK: 1f9fd110 { q0 = vcmp.gt(v17.b,v31.b) }
74 q0
=vcmp.gt
(v17.
b,v31.
b)
76 # CHECK: 1f99cd09 { q1 = vcmp.eq(v13.w,v25.w) }
77 q1
=vcmp.eq
(v13.w
,v25.w
)
79 # CHECK: 1a20d939 { if (!p1) v25 = v25 }
82 # CHECK: 1a00db33 { if (p1) v19 = v27 }
85 # CHECK: 19fde252 { vdeal(v2,v18,r29) }
88 # CHECK: 19eef43e { vshuff(v20,v30,r14) }
91 # CHECK: 19bfd6cc { v13:12.uw = vrmpy(v23:22.ub,r31.ub,#0) }
92 v13
:12.uw=vrmpy(v23:22.ub,r31.ub,#0)
94 # CHECK: 1946d4c4 { v5:4.uw = vrsad(v21:20.ub,r6.ub,#0) }
95 v5
:4.uw=vrsad(v21:20.ub,r6.ub,#0)
97 # CHECK: 1941de94 { v21:20.w = vrmpy(v31:30.ub,r1.b,#0) }
98 v21
:20.w=vrmpy(v31:30.ub,r1.b,#0)
100 # CHECK: 196ef8dc { v29:28.uw += vrmpy(v25:24.ub,r14.ub,#0) }
101 v29
:28.uw+=vrmpy(v25:24.ub,r14.ub,#0)
103 # CHECK: 1944eaea { v11:10.uw += vrsad(v11:10.ub,r4.ub,#1) }
104 v11
:10.uw+=vrsad(v11:10.ub,r4.ub,#1)
106 # CHECK: 1947fa9c { v29:28.w += vrmpy(v27:26.ub,r7.b,#0) }
107 v29
:28.w+=vrmpy(v27:26.ub,r7.b,#0)
109 # CHECK: 19b4c0a5 { v5 = vand(q0,r20) }
112 # CHECK: 19a3c02f { v15 = vsplat(r3) }
115 # CHECK: 197de377 { v23 |= vand(q3,r29) }
118 # CHECK: 196af580 { q0 |= vand(v21,r10) }
121 # CHECK: 197bf780 { q0 |= vand(v23,r27) }
124 # CHECK: 19b0c0a6 { v6 = vand(q0,r16) }
127 # CHECK: 1f85d621 { q1 = vcmp.gt(v22.ub,v5.ub) }
128 q1
=vcmp.gt
(v22.ub
,v5.ub
)
130 # CHECK: 1f82dc25 { q1 = vcmp.gt(v28.uh,v2.uh) }
131 q1
=vcmp.gt
(v28.uh
,v2.uh
)
133 # CHECK: 1f80da29 { q1 = vcmp.gt(v26.uw,v0.uw) }
134 q1
=vcmp.gt
(v26.uw
,v0.uw
)
136 # CHECK: 1966e06a { v10 |= vand(q0,r6) }
139 # CHECK: 8204db68 { r9:8 -= rol(r5:4,#27) }
142 # CHECK: 8c01d47b { r27 = rol(r1,#20) }
145 # CHECK: 8008ec6c { r13:12 = rol(r9:8,#44) }
148 # CHECK: 19bcd349 { q1 = vand(v19,r28) }
151 # CHECK: 19b1cb49 { q1 = vand(v11,r17) }
154 # CHECK: 19b3c045 { q1 = vsetq(r19) }
157 # CHECK: 19aac044 { q0 = vsetq(r10) }
160 # CHECK: 19a0e034 { v20.w = vinsert(r0) }
163 # CHECK: 19b5e037 { v23.w = vinsert(r21) }
166 # CHECK: 19b1c026 { v6 = vsplat(r17) }
169 # CHECK: 8242e7ee { r15:14 |= rol(r3:2,#39) }
170 r15:14|
=rol
(r3:2,#39)
172 # CHECK: 829cc868 { r9:8 ^= rol(r29:28,#8) }
175 # CHECK: 8210cee0 { r1:0 += rol(r17:16,#14) }
176 r1:0+=rol
(r17:16,#14)
178 # CHECK: 8256e17a { r27:26 &= rol(r23:22,#33) }
179 r27:26&=rol
(r23:22,#33)
181 # CHECK: 8e49c97d { r29 &= rol(r9,#9) }
184 # CHECK: 8e49dde8 { r8 |= rol(r9,#29) }
187 # CHECK: 8e1ac76f { r15 -= rol(r26,#7) }
190 # CHECK: 8e06c3f0 { r16 += rol(r6,#3) }
193 # CHECK: 8e99c075 { r21 ^= rol(r25,#0) }
196 # CHECK: 9213db2e { r14 = vextract(v27,r19) }
197 r14=vextract
(v27
,r19)
199 # CHECK: a6a0cc00 { l2gclean(r13:12) }
202 # CHECK: a666c000 { l2unlocka(r6) }
205 # CHECK: a0e8e000 { p0 = l2locka(r8) }
208 # CHECK: a6c0c400 { l2gcleaninv(r5:4) }
211 # CHECK: a820c800 { l2gunlock }
214 # CHECK: a820d800 { l2gcleaninv }
217 # CHECK: a820d000 { l2gclean }
220 # CHECK: 1ea6fa00 { v1:0 = vswap(q0,v26,v6) }
221 v1
:0=vswap
(q0
,v26
,v6
)
223 # CHECK: eaa8da5c { r29:28,p2 = vacsh(r9:8,r27:26) }
224 r29:28,p2
=vacsh
(r9:8,r27:26)
226 # CHECK: 1eeef124 { v4 = vmux(q1,v17,v14) }
229 # CHECK: 1bb2e928 { v8.b = vlut32(v9.b,v22.b,r2) }
230 v8.
b=vlut32
(v9.
b,v22.
b,r2)
232 # CHECK: 1b13e0fa { v27:26.h |= vlut16(v0.b,v2.h,r3) }
233 v27
:26.h|=vlut16(v0.b,v2.h,r3)
235 # CHECK: 1b8ad836 { v22 = vlalign(v24,v17,r2) }
236 v22
=vlalign
(v24
,v17
,r2)
238 # CHECK: 1b41dd14 { v20 = valign(v29,v8,r1) }
239 v20
=valign
(v29
,v8
,r1)
241 # CHECK: 1a5ed41e { if (!p0) v31:30 = vcombine(v20,v30) }
242 if
(!p0
) v31
:30=vcombine
(v20
,v30
)
244 # CHECK: 1a7cc216 { if (p0) v23:22 = vcombine(v2,v28) }
245 if
(p0
) v23
:22=vcombine
(v2
,v28
)
247 # CHECK: 1bf9d389 { v9.h = vasr(v19.w,v31.w,r1):rnd:sat }
248 v9.h
=vasr
(v19.w
,v31.w
,r1):rnd
:sat
250 # CHECK: 1bc9cb56 { v22.h = vasr(v11.w,v25.w,r1) }
251 v22.h
=vasr
(v11.w
,v25.w
,r1)
253 # CHECK: 1b08d2c5 { v5.ub = vasr(v18.h,v1.h,r0):sat }
254 v5.ub
=vasr
(v18.h
,v1.h
,r0):sat
256 # CHECK: 1befd0f4 { v20.ub = vasr(v16.h,v29.h,r7):rnd:sat }
257 v20.ub
=vasr
(v16.h
,v29.h
,r7):rnd
:sat
259 # CHECK: 1b86f0d2 { v19:18.h = vlut16(v16.b,v16.h,r6) }
260 v19
:18.h=vlut16(v16.b,v16.h,r6)
262 # CHECK: 1b9cf6bf { v31.b |= vlut32(v22.b,v19.b,r4) }
263 v31.
b|
=vlut32
(v22.
b,v19.
b,r4)
265 # CHECK: 1b76d6ab { v11.uh = vasr(v22.w,v14.w,r6):sat }
266 v11.uh
=vasr
(v22.w
,v14.w
,r6):sat
268 # CHECK: 1b14c06f { v15.h = vasr(v0.w,v2.w,r4):sat }
269 v15.h
=vasr
(v0.w
,v2.w
,r4):sat
271 # CHECK: 1c2eceee { v14 = vxor(v14,v14) }
274 # CHECK: 1c4eceee { v14.w = vsub(v14.w,v14.w) }
275 v14.w
=vsub
(v14.w
, v14.w
)
277 # CHECK: 19e8eb2a { vshuff(v11,v10,r8) }
278 vtrans2x2
(v11
, v10
, r8)
280 # CHECK: 537ad100 { if (!p1) jumpr:t
283 # CHECK: 5354d300 { if (p3) jumpr:t
286 # CHECK: 5c20d100 if (!p1) jump:t
289 # CHECK: 5c00d100 if (p1) jump:t
292 # CHECK: 1baeeb8a { v11:10 = vdeal(v11,v21,r6) }
293 v11
:10=vdeal
(v11
,v21
,r6)
295 # CHECK: 1e00e080 { vhist }
298 # CHECK: 1e42e080 { vhist(q1) }
301 # CHECK: 1f42c3e0 { v1:0 = vcombine(v3,v2) }
304 # CHECK: 1f90cf00 { q0 = vcmp.eq(v15.b,v16.b) }
305 q0
=vcmp.eq
(v15.ub
, v16.ub
)
307 # CHECK: 1c92f101 { q1 &= vcmp.eq(v17.b,v18.b) }
308 q1
&=vcmp.eq
(v17.ub
, v18.ub
)
310 # CHECK: 1c94f342 { q2 |= vcmp.eq(v19.b,v20.b) }
311 q2|
=vcmp.eq
(v19.ub
, v20.ub
)
313 # CHECK: 1c96f583 { q3 ^= vcmp.eq(v21.b,v22.b) }
314 q3^
=vcmp.eq
(v21.ub
, v22.ub
)
316 # CHECK: 1f81c004 { q0 = vcmp.eq(v0.h,v1.h) }
317 q0
=vcmp.eq
(v0.uh
, v1.uh
)
319 # CHECK: 1c83e205 { q1 &= vcmp.eq(v2.h,v3.h) }
320 q1
&=vcmp.eq
(v2.uh
, v3.uh
)
322 # CHECK: 1c85e446 { q2 |= vcmp.eq(v4.h,v5.h) }
323 q2|
=vcmp.eq
(v4.uh
, v5.uh
)
325 # CHECK: 1c87e687 { q3 ^= vcmp.eq(v6.h,v7.h) }
326 q3^
=vcmp.eq
(v6.uh
, v7.uh
)
328 # CHECK: 1f89c808 { q0 = vcmp.eq(v8.w,v9.w) }
329 q0
=vcmp.eq
(v8.uw
, v9.uw
)
331 # CHECK: 1c8aea09 { q1 &= vcmp.eq(v10.w,v10.w) }
332 q1
&=vcmp.eq
(v10.uw
, v10.uw
)
334 # CHECK: 1c8ceb46 { q2 |= vcmp.eq(v11.h,v12.h) }
335 q2|
=vcmp.eq
(v11.uh
, v12.uh
)
337 # CHECK: 1c8eed8b { q3 ^= vcmp.eq(v13.w,v14.w) }
338 q3^
=vcmp.eq
(v13.uw
, v14.uw
)