1 #RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
2 #RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
5 #CHECK: 1ce2cbd7 { v23.w = vavg(v11.w,{{ *}}v2.w):rnd }
6 v23.w
=vavg
(v11.w
,v2.w
):rnd
8 #CHECK: 1cf4d323 { v3.h = vnavg(v19.h,{{ *}}v20.h) }
9 v3.h
=vnavg
(v19.h
,v20.h
)
11 #CHECK: 1cffce9a { v26.uh = vavg(v14.uh,{{ *}}v31.uh):rnd }
12 v26.uh
=vavg
(v14.uh
,v31.uh
):rnd
14 #CHECK: 1ce5cba1 { v1.h = vavg(v11.h,{{ *}}v5.h):rnd }
15 v1.h
=vavg
(v11.h
,v5.h
):rnd
17 #CHECK: 1cc0d012 { v18.ub = vabsdiff(v16.ub,{{ *}}v0.ub) }
18 v18.ub
=vabsdiff
(v16.ub
,v0.ub
)
20 #CHECK: 1cc2de29 { v9.uh = vabsdiff(v30.h,{{ *}}v2.h) }
21 v9.uh
=vabsdiff
(v30.h
,v2.h
)
23 #CHECK: 1ce9ca06 { v6.b = vnavg(v10.ub,{{ *}}v9.ub) }
24 v6.
b=vnavg
(v10.ub
,v9.ub
)
26 #CHECK: 1caacf90 { v17:16.w = vadd(v15.h,{{ *}}v10.h) }
27 v17
:16.w=vadd(v15.h,v10.h)
29 #CHECK: 1cb4cabe { v31:30.h = vsub(v10.ub,{{ *}}v20.ub) }
30 v31
:30.h=vsub(v10.ub,v20.ub)
32 #CHECK: 1cb8cada { v27:26.w = vsub(v10.uh,{{ *}}v24.uh) }
33 v27
:26.w=vsub(v10.uh,v24.uh)
35 #CHECK: 1cbcdbe8 { v9:8.w = vsub(v27.h,{{ *}}v28.h) }
36 v9
:8.w=vsub(v27.h,v28.h)
38 #CHECK: 1caeca00 { v1:0.h = vsub(v11:10.h,{{ *}}v15:14.h):sat }
39 v1
:0.h=vsub(v11:10.h,v15:14.h):sat
41 #CHECK: 1ca8c43e { v31:30.w = vsub(v5:4.w,{{ *}}v9:8.w):sat }
42 v31
:30.w=vsub(v5:4.w,v9:8.w):sat
44 #CHECK: 1cbad95c { v29:28.h = vadd(v25.ub,{{ *}}v26.ub) }
45 v29
:28.h=vadd(v25.ub,v26.ub)
47 #CHECK: 1ca1dc64 { v5:4.w = vadd(v28.uh,{{ *}}v1.uh) }
48 v5
:4.w=vadd(v28.uh,v1.uh)
50 #CHECK: 1c79c350 { v16.h = vsub(v3.h,{{ *}}v25.h):sat }
51 v16.h
=vsub
(v3.h
,v25.h
):sat
53 #CHECK: 1c7fd364 { v4.w = vsub(v19.w,{{ *}}v31.w):sat }
54 v4.w
=vsub
(v19.w
,v31.w
):sat
56 #CHECK: 1c67d816 { v22.ub = vsub(v24.ub,{{ *}}v7.ub):sat }
57 v22.ub
=vsub
(v24.ub
,v7.ub
):sat
59 #CHECK: 1c7ddc2f { v15.uh = vsub(v28.uh,{{ *}}v29.uh):sat }
60 v15.uh
=vsub
(v28.uh
,v29.uh
):sat
62 #CHECK: 1c5cc6d7 { v23.h = vsub(v6.h,{{ *}}v28.h) }
63 v23.h
=vsub
(v6.h
,v28.h
)
65 #CHECK: 1c54cae4 { v4.w = vsub(v10.w,{{ *}}v20.w) }
66 v4.w
=vsub
(v10.w
,v20.w
)
68 #CHECK: 1c4dc78b { v11.w = vadd(v7.w,{{ *}}v13.w):sat }
69 v11.w
=vadd
(v7.w
,v13.w
):sat
71 #CHECK: 1c48c7a4 { v4.b = vsub(v7.b,{{ *}}v8.b) }
74 #CHECK: 1cdec3b0 { v16.uh = vavg(v3.uh,{{ *}}v30.uh) }
75 v16.uh
=vavg
(v3.uh
,v30.uh
)
77 #CHECK: 1c76dc98 { v25:24.b = vadd(v29:28.b,{{ *}}v23:22.b) }
78 v25
:24.b=vadd(v29:28.b,v23:22.b)
80 #CHECK: 1c7ad4a6 { v7:6.h = vadd(v21:20.h,{{ *}}v27:26.h) }
81 v7
:6.h=vadd(v21:20.h,v27:26.h)
83 #CHECK: 1cc7c564 { v4.uw = vabsdiff(v5.w,{{ *}}v7.w) }
84 v4.uw
=vabsdiff
(v5.w
,v7.w
)
86 #CHECK: 1cd2cdc1 { v1.h = vavg(v13.h,{{ *}}v18.h) }
87 v1.h
=vavg
(v13.h
,v18.h
)
89 #CHECK: 1cd5d246 { v6.uh = vabsdiff(v18.uh,{{ *}}v21.uh) }
90 v6.uh
=vabsdiff
(v18.uh
,v21.uh
)
92 #CHECK: 1cdcd987 { v7.ub = vavg(v25.ub,{{ *}}v28.ub) }
93 v7.ub
=vavg
(v25.ub
,v28.ub
)
95 #CHECK: 1c92c6e4 { v5:4.uh = vsub(v7:6.uh,{{ *}}v19:18.uh):sat }
96 v5
:4.uh=vsub(v7:6.uh,v19:18.uh):sat
98 #CHECK: 1c86dace { v15:14.ub = vsub(v27:26.ub,{{ *}}v7:6.ub):sat }
99 v15
:14.ub=vsub(v27:26.ub,v7:6.ub):sat
101 #CHECK: 1cffc07c { v28.ub = vavg(v0.ub,{{ *}}v31.ub):rnd }
102 v28.ub
=vavg
(v0.ub
,v31.ub
):rnd
104 #CHECK: 1cf8d851 { v17.w = vnavg(v24.w,{{ *}}v24.w) }
105 v17.w
=vnavg
(v24.w
,v24.w
)
107 #CHECK: 1c70d2e6 { v7:6.ub = vadd(v19:18.ub,{{ *}}v17:16.ub):sat }
108 v7
:6.ub=vadd(v19:18.ub,v17:16.ub):sat
110 #CHECK: 1c72dec6 { v7:6.w = vadd(v31:30.w,{{ *}}v19:18.w) }
111 v7
:6.w=vadd(v31:30.w,v19:18.w)
113 #CHECK: 1c92d23e { v31:30.h = vadd(v19:18.h,{{ *}}v19:18.h):sat }
114 v31
:30.h=vadd(v19:18.h,v19:18.h):sat
116 #CHECK: 1c94de1e { v31:30.uh = vadd(v31:30.uh,{{ *}}v21:20.uh):sat }
117 v31
:30.uh=vadd(v31:30.uh,v21:20.uh):sat
119 #CHECK: 1c9ec07c { v29:28.b = vsub(v1:0.b,{{ *}}v31:30.b) }
120 v29
:28.b=vsub(v1:0.b,v31:30.b)
122 #CHECK: 1c88da56 { v23:22.w = vadd(v27:26.w,{{ *}}v9:8.w):sat }
123 v23
:22.w=vadd(v27:26.w,v9:8.w):sat
125 #CHECK: 1c9acab8 { v25:24.w = vsub(v11:10.w,{{ *}}v27:26.w) }
126 v25
:24.w=vsub(v11:10.w,v27:26.w)
128 #CHECK: 1c82d282 { v3:2.h = vsub(v19:18.h,{{ *}}v3:2.h) }
129 v3
:2.h=vsub(v19:18.h,v3:2.h)
131 #CHECK: 1c2bd9a6 { v6 = vand(v25,{{ *}}v11) }
134 #CHECK: 1c43c22d { v13.ub = vadd(v2.ub,{{ *}}v3.ub):sat }
135 v13.ub
=vadd
(v2.ub
,v3.ub
):sat
137 #CHECK: 1c59d707 { v7.w = vadd(v23.w,{{ *}}v25.w) }
138 v7.w
=vadd
(v23.w
,v25.w
)
140 #CHECK: 1c3fc9e1 { v1 = vxor(v9,{{ *}}v31) }
143 #CHECK: 1c2acbdf { v31 = vor(v11,{{ *}}v10) }
146 #CHECK: 1cdaccf6 { v22.w = vavg(v12.w,{{ *}}v26.w) }
147 v22.w
=vavg
(v12.w
,v26.w
)
149 #CHECK: 1c5ac767 { v7.h = vadd(v7.h,{{ *}}v26.h):sat }
150 v7.h
=vadd
(v7.h
,v26.h
):sat
152 #CHECK: 1c40d956 { v22.uh = vadd(v25.uh,{{ *}}v0.uh):sat }
153 v22.uh
=vadd
(v25.uh
,v0.uh
):sat
155 #CHECK: 1fbbd611 { v17.w = vasr(v22.w{{ *}},{{ *}}v27.w) }
156 v17.w
=vasr
(v22.w
,v27.w
)
158 #CHECK: 1fbad835 { v21.w = vlsr(v24.w{{ *}},{{ *}}v26.w) }
159 v21.w
=vlsr
(v24.w
,v26.w
)
161 #CHECK: 1f79cedc { v28.b = vround(v14.h{{ *}},{{ *}}v25.h):sat }
162 v28.
b=vround
(v14.h
,v25.h
):sat
164 #CHECK: 1f69c4e0 { v0.ub = vround(v4.h{{ *}},{{ *}}v9.h):sat }
165 v0.ub
=vround
(v4.h
,v9.h
):sat
167 #CHECK: 1f72c485 { v5.h = vround(v4.w{{ *}},{{ *}}v18.w):sat }
168 v5.h
=vround
(v4.w
,v18.w
):sat
170 #CHECK: 1f6bc8b1 { v17.uh = vround(v8.w{{ *}},{{ *}}v11.w):sat }
171 v17.uh
=vround
(v8.w
,v11.w
):sat
173 #CHECK: 1f71c25b { v27.ub = vsat(v2.h{{ *}},{{ *}}v17.h) }
174 v27.ub
=vsat
(v2.h
,v17.h
)
176 #CHECK: 1f66c560 { v0.h = vsat(v5.w{{ *}},{{ *}}v6.w) }
179 #CHECK: 1fb3d148 { v8.h = vlsr(v17.h{{ *}},{{ *}}v19.h) }
180 v8.h
=vlsr
(v17.h
,v19.h
)
182 #CHECK: 1fbec56e { v14.h = vasr(v5.h{{ *}},{{ *}}v30.h) }
183 v14.h
=vasr
(v5.h
,v30.h
)
185 #CHECK: 1fb2d2a2 { v2.h = vasl(v18.h{{ *}},{{ *}}v18.h) }
186 v2.h
=vasl
(v18.h
,v18.h
)
188 #CHECK: 1faccc95 { v21.w = vasl(v12.w{{ *}},{{ *}}v12.w) }
189 v21.w
=vasl
(v12.w
,v12.w
)
191 #CHECK: 1fb9c1e2 { v2.h = vadd(v1.h{{ *}},{{ *}}v25.h) }
192 v2.h
=vadd
(v1.h
,v25.h
)
194 #CHECK: 1fbbd5df { v31.b = vadd(v21.b{{ *}},{{ *}}v27.b) }
195 v31.
b=vadd
(v21.
b,v27.
b)
197 #CHECK: 1f25c578 { v24 = vrdelta(v5{{ *}},{{ *}}v5) }
200 #CHECK: 1f22c62a { v10 = vdelta(v6{{ *}},{{ *}}v2) }
203 #CHECK: 1f20d102 { v2.w = vmax(v17.w{{ *}},{{ *}}v0.w) }
204 v2.w
=vmax
(v17.w
,v0.w
)
206 #CHECK: 1f1ed6fc { v28.h = vmax(v22.h{{ *}},{{ *}}v30.h) }
207 v28.h
=vmax
(v22.h
,v30.h
)
209 #CHECK: 1f0cc8d8 { v24.uh = vmax(v8.uh{{ *}},{{ *}}v12.uh) }
210 v24.uh
=vmax
(v8.uh
,v12.uh
)
212 #CHECK: 1f00c1b0 { v16.ub = vmax(v1.ub{{ *}},{{ *}}v0.ub) }
213 v16.ub
=vmax
(v1.ub
,v0.ub
)
215 #CHECK: 1f12d08e { v14.w = vmin(v16.w{{ *}},{{ *}}v18.w) }
216 v14.w
=vmin
(v16.w
,v18.w
)
218 #CHECK: 1f1ad466 { v6.h = vmin(v20.h{{ *}},{{ *}}v26.h) }
219 v6.h
=vmin
(v20.h
,v26.h
)
221 #CHECK: 1f13df5d { v29.uh = vmin(v31.uh{{ *}},{{ *}}v19.uh) }
222 v29.uh
=vmin
(v31.uh
,v19.uh
)
224 #CHECK: 1f09c226 { v6.ub = vmin(v2.ub{{ *}},{{ *}}v9.ub) }
225 v6.ub
=vmin
(v2.ub
,v9.ub
)
227 #CHECK: 1f41d34f { v15.b = vshuffo(v19.b{{ *}},{{ *}}v1.b) }
228 v15.
b=vshuffo
(v19.
b,v1.
b)
230 #CHECK: 1f5fc72e { v14.b = vshuffe(v7.b{{ *}},{{ *}}v31.b) }
231 v14.
b=vshuffe
(v7.
b,v31.
b)
233 #CHECK: 1f34d0f7 { v23.b = vdeale(v16.b{{ *}},{{ *}}v20.b) }
234 v23.
b=vdeale
(v16.
b,v20.
b)
236 #CHECK: 1f4bd6c4 { v5:4.b = vshuffoe(v22.b{{ *}},{{ *}}v11.b) }
237 v5
:4.b=vshuffoe(v22.b,v11.b)
239 #CHECK: 1f5dcea2 { v3:2.h = vshuffoe(v14.h{{ *}},{{ *}}v29.h) }
240 v3
:2.h=vshuffoe(v14.h,v29.h)
242 #CHECK: 1f4fd186 { v6.h = vshuffo(v17.h{{ *}},{{ *}}v15.h) }
243 v6.h
=vshuffo
(v17.h
,v15.h
)
245 #CHECK: 1f5bda79 { v25.h = vshuffe(v26.h{{ *}},{{ *}}v27.h) }
246 v25.h
=vshuffe
(v26.h
,v27.h
)
248 #CHECK: 1f41d1f2 { v19:18 = vcombine(v17{{ *}},{{ *}}v1) }
249 v19
:18=vcombine
(v17
,v1
)
251 #CHECK: 1e82f432 { if (!q2) v18.b -= v20.b }
252 if
(!q2
) v18.b-
=v20.
b
254 #CHECK: 1ec2fd13 { if (q3) v19.w -= v29.w }
257 #CHECK: 1e81fef9 { if (q2) v25.h -= v30.h }
260 #CHECK: 1e81e2d3 { if (q2) v19.b -= v2.b }
263 #CHECK: 1e41ecad { if (!q1) v13.w += v12.w }
264 if
(!q1
) v13.w+
=v12.w
266 #CHECK: 1e41e789 { if (!q1) v9.h += v7.h }
269 #CHECK: 1e81e967 { if (!q2) v7.b += v9.b }
272 #CHECK: 1e41f04f { if (q1) v15.w += v16.w }
275 #CHECK: 1e01e838 { if (q0) v24.h += v8.h }
278 #CHECK: 1ec1f112 { if (q3) v18.b += v17.b }
281 #CHECK: 1e42f67b { if (!q1) v27.w -= v22.w }
282 if
(!q1
) v27.w-
=v22.w
284 #CHECK: 1e82ea5b { if (!q2) v27.h -= v10.h }
285 if
(!q2
) v27.h-
=v10.h
287 #CHECK: 1e00c586 { v6 = vnot(v5) }
290 #CHECK: 1e00df70 { v16.w = vabs(v31.w):sat }
291 v16.w
=vabs
(v31.w
):sat
293 #CHECK: 1e00d45f { v31.w = vabs(v20.w) }
296 #CHECK: 1e00db2f { v15.h = vabs(v27.h):sat }
297 v15.h
=vabs
(v27.h
):sat
299 #CHECK: 1e00d001 { v1.h = vabs(v16.h) }
302 #CHECK: 1e02c832 { v19:18.uh = vzxt(v8.ub) }
303 v19
:18.uh=vzxt(v8.ub)
305 #CHECK: 1e02c98a { v11:10.w = vsxt(v9.h) }
308 #CHECK: 1e02cf76 { v23:22.h = vsxt(v15.b) }
311 #CHECK: 1e02c258 { v25:24.uw = vzxt(v2.uh) }
312 v25
:24.uw=vzxt(v2.uh)