1#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \ 2#RUN: llvm-objdump --triple=hexagon --mcpu=hexagonv60 --mattr=+hvx -d - | \ 3#RUN: FileCheck %s 4 5#CHECK: 1ce2cbd7 { v23.w = vavg(v11.w,{{ *}}v2.w):rnd } 6v23.w=vavg(v11.w,v2.w):rnd 7 8#CHECK: 1cf4d323 { v3.h = vnavg(v19.h,{{ *}}v20.h) } 9v3.h=vnavg(v19.h,v20.h) 10 11#CHECK: 1cffce9a { v26.uh = vavg(v14.uh,{{ *}}v31.uh):rnd } 12v26.uh=vavg(v14.uh,v31.uh):rnd 13 14#CHECK: 1ce5cba1 { v1.h = vavg(v11.h,{{ *}}v5.h):rnd } 15v1.h=vavg(v11.h,v5.h):rnd 16 17#CHECK: 1cc0d012 { v18.ub = vabsdiff(v16.ub,{{ *}}v0.ub) } 18v18.ub=vabsdiff(v16.ub,v0.ub) 19 20#CHECK: 1cc2de29 { v9.uh = vabsdiff(v30.h,{{ *}}v2.h) } 21v9.uh=vabsdiff(v30.h,v2.h) 22 23#CHECK: 1ce9ca06 { v6.b = vnavg(v10.ub,{{ *}}v9.ub) } 24v6.b=vnavg(v10.ub,v9.ub) 25 26#CHECK: 1caacf90 { v17:16.w = vadd(v15.h,{{ *}}v10.h) } 27v17:16.w=vadd(v15.h,v10.h) 28 29#CHECK: 1cb4cabe { v31:30.h = vsub(v10.ub,{{ *}}v20.ub) } 30v31:30.h=vsub(v10.ub,v20.ub) 31 32#CHECK: 1cb8cada { v27:26.w = vsub(v10.uh,{{ *}}v24.uh) } 33v27:26.w=vsub(v10.uh,v24.uh) 34 35#CHECK: 1cbcdbe8 { v9:8.w = vsub(v27.h,{{ *}}v28.h) } 36v9:8.w=vsub(v27.h,v28.h) 37 38#CHECK: 1caeca00 { v1:0.h = vsub(v11:10.h,{{ *}}v15:14.h):sat } 39v1:0.h=vsub(v11:10.h,v15:14.h):sat 40 41#CHECK: 1ca8c43e { v31:30.w = vsub(v5:4.w,{{ *}}v9:8.w):sat } 42v31:30.w=vsub(v5:4.w,v9:8.w):sat 43 44#CHECK: 1cbad95c { v29:28.h = vadd(v25.ub,{{ *}}v26.ub) } 45v29:28.h=vadd(v25.ub,v26.ub) 46 47#CHECK: 1ca1dc64 { v5:4.w = vadd(v28.uh,{{ *}}v1.uh) } 48v5:4.w=vadd(v28.uh,v1.uh) 49 50#CHECK: 1c79c350 { v16.h = vsub(v3.h,{{ *}}v25.h):sat } 51v16.h=vsub(v3.h,v25.h):sat 52 53#CHECK: 1c7fd364 { v4.w = vsub(v19.w,{{ *}}v31.w):sat } 54v4.w=vsub(v19.w,v31.w):sat 55 56#CHECK: 1c67d816 { v22.ub = vsub(v24.ub,{{ *}}v7.ub):sat } 57v22.ub=vsub(v24.ub,v7.ub):sat 58 59#CHECK: 1c7ddc2f { v15.uh = vsub(v28.uh,{{ *}}v29.uh):sat } 60v15.uh=vsub(v28.uh,v29.uh):sat 61 62#CHECK: 1c5cc6d7 { v23.h = vsub(v6.h,{{ *}}v28.h) } 63v23.h=vsub(v6.h,v28.h) 64 65#CHECK: 1c54cae4 { v4.w = vsub(v10.w,{{ *}}v20.w) } 66v4.w=vsub(v10.w,v20.w) 67 68#CHECK: 1c4dc78b { v11.w = vadd(v7.w,{{ *}}v13.w):sat } 69v11.w=vadd(v7.w,v13.w):sat 70 71#CHECK: 1c48c7a4 { v4.b = vsub(v7.b,{{ *}}v8.b) } 72v4.b=vsub(v7.b,v8.b) 73 74#CHECK: 1cdec3b0 { v16.uh = vavg(v3.uh,{{ *}}v30.uh) } 75v16.uh=vavg(v3.uh,v30.uh) 76 77#CHECK: 1c76dc98 { v25:24.b = vadd(v29:28.b,{{ *}}v23:22.b) } 78v25:24.b=vadd(v29:28.b,v23:22.b) 79 80#CHECK: 1c7ad4a6 { v7:6.h = vadd(v21:20.h,{{ *}}v27:26.h) } 81v7:6.h=vadd(v21:20.h,v27:26.h) 82 83#CHECK: 1cc7c564 { v4.uw = vabsdiff(v5.w,{{ *}}v7.w) } 84v4.uw=vabsdiff(v5.w,v7.w) 85 86#CHECK: 1cd2cdc1 { v1.h = vavg(v13.h,{{ *}}v18.h) } 87v1.h=vavg(v13.h,v18.h) 88 89#CHECK: 1cd5d246 { v6.uh = vabsdiff(v18.uh,{{ *}}v21.uh) } 90v6.uh=vabsdiff(v18.uh,v21.uh) 91 92#CHECK: 1cdcd987 { v7.ub = vavg(v25.ub,{{ *}}v28.ub) } 93v7.ub=vavg(v25.ub,v28.ub) 94 95#CHECK: 1c92c6e4 { v5:4.uh = vsub(v7:6.uh,{{ *}}v19:18.uh):sat } 96v5:4.uh=vsub(v7:6.uh,v19:18.uh):sat 97 98#CHECK: 1c86dace { v15:14.ub = vsub(v27:26.ub,{{ *}}v7:6.ub):sat } 99v15:14.ub=vsub(v27:26.ub,v7:6.ub):sat 100 101#CHECK: 1cffc07c { v28.ub = vavg(v0.ub,{{ *}}v31.ub):rnd } 102v28.ub=vavg(v0.ub,v31.ub):rnd 103 104#CHECK: 1cf8d851 { v17.w = vnavg(v24.w,{{ *}}v24.w) } 105v17.w=vnavg(v24.w,v24.w) 106 107#CHECK: 1c70d2e6 { v7:6.ub = vadd(v19:18.ub,{{ *}}v17:16.ub):sat } 108v7:6.ub=vadd(v19:18.ub,v17:16.ub):sat 109 110#CHECK: 1c72dec6 { v7:6.w = vadd(v31:30.w,{{ *}}v19:18.w) } 111v7:6.w=vadd(v31:30.w,v19:18.w) 112 113#CHECK: 1c92d23e { v31:30.h = vadd(v19:18.h,{{ *}}v19:18.h):sat } 114v31:30.h=vadd(v19:18.h,v19:18.h):sat 115 116#CHECK: 1c94de1e { v31:30.uh = vadd(v31:30.uh,{{ *}}v21:20.uh):sat } 117v31:30.uh=vadd(v31:30.uh,v21:20.uh):sat 118 119#CHECK: 1c9ec07c { v29:28.b = vsub(v1:0.b,{{ *}}v31:30.b) } 120v29:28.b=vsub(v1:0.b,v31:30.b) 121 122#CHECK: 1c88da56 { v23:22.w = vadd(v27:26.w,{{ *}}v9:8.w):sat } 123v23:22.w=vadd(v27:26.w,v9:8.w):sat 124 125#CHECK: 1c9acab8 { v25:24.w = vsub(v11:10.w,{{ *}}v27:26.w) } 126v25:24.w=vsub(v11:10.w,v27:26.w) 127 128#CHECK: 1c82d282 { v3:2.h = vsub(v19:18.h,{{ *}}v3:2.h) } 129v3:2.h=vsub(v19:18.h,v3:2.h) 130 131#CHECK: 1c2bd9a6 { v6 = vand(v25,{{ *}}v11) } 132v6=vand(v25,v11) 133 134#CHECK: 1c43c22d { v13.ub = vadd(v2.ub,{{ *}}v3.ub):sat } 135v13.ub=vadd(v2.ub,v3.ub):sat 136 137#CHECK: 1c59d707 { v7.w = vadd(v23.w,{{ *}}v25.w) } 138v7.w=vadd(v23.w,v25.w) 139 140#CHECK: 1c3fc9e1 { v1 = vxor(v9,{{ *}}v31) } 141v1=vxor(v9,v31) 142 143#CHECK: 1c2acbdf { v31 = vor(v11,{{ *}}v10) } 144v31=vor(v11,v10) 145 146#CHECK: 1cdaccf6 { v22.w = vavg(v12.w,{{ *}}v26.w) } 147v22.w=vavg(v12.w,v26.w) 148 149#CHECK: 1c5ac767 { v7.h = vadd(v7.h,{{ *}}v26.h):sat } 150v7.h=vadd(v7.h,v26.h):sat 151 152#CHECK: 1c40d956 { v22.uh = vadd(v25.uh,{{ *}}v0.uh):sat } 153v22.uh=vadd(v25.uh,v0.uh):sat 154 155#CHECK: 1fbbd611 { v17.w = vasr(v22.w{{ *}},{{ *}}v27.w) } 156v17.w=vasr(v22.w,v27.w) 157 158#CHECK: 1fbad835 { v21.w = vlsr(v24.w{{ *}},{{ *}}v26.w) } 159v21.w=vlsr(v24.w,v26.w) 160 161#CHECK: 1f79cedc { v28.b = vround(v14.h{{ *}},{{ *}}v25.h):sat } 162v28.b=vround(v14.h,v25.h):sat 163 164#CHECK: 1f69c4e0 { v0.ub = vround(v4.h{{ *}},{{ *}}v9.h):sat } 165v0.ub=vround(v4.h,v9.h):sat 166 167#CHECK: 1f72c485 { v5.h = vround(v4.w{{ *}},{{ *}}v18.w):sat } 168v5.h=vround(v4.w,v18.w):sat 169 170#CHECK: 1f6bc8b1 { v17.uh = vround(v8.w{{ *}},{{ *}}v11.w):sat } 171v17.uh=vround(v8.w,v11.w):sat 172 173#CHECK: 1f71c25b { v27.ub = vsat(v2.h{{ *}},{{ *}}v17.h) } 174v27.ub=vsat(v2.h,v17.h) 175 176#CHECK: 1f66c560 { v0.h = vsat(v5.w{{ *}},{{ *}}v6.w) } 177v0.h=vsat(v5.w,v6.w) 178 179#CHECK: 1fb3d148 { v8.h = vlsr(v17.h{{ *}},{{ *}}v19.h) } 180v8.h=vlsr(v17.h,v19.h) 181 182#CHECK: 1fbec56e { v14.h = vasr(v5.h{{ *}},{{ *}}v30.h) } 183v14.h=vasr(v5.h,v30.h) 184 185#CHECK: 1fb2d2a2 { v2.h = vasl(v18.h{{ *}},{{ *}}v18.h) } 186v2.h=vasl(v18.h,v18.h) 187 188#CHECK: 1faccc95 { v21.w = vasl(v12.w{{ *}},{{ *}}v12.w) } 189v21.w=vasl(v12.w,v12.w) 190 191#CHECK: 1fb9c1e2 { v2.h = vadd(v1.h{{ *}},{{ *}}v25.h) } 192v2.h=vadd(v1.h,v25.h) 193 194#CHECK: 1fbbd5df { v31.b = vadd(v21.b{{ *}},{{ *}}v27.b) } 195v31.b=vadd(v21.b,v27.b) 196 197#CHECK: 1f25c578 { v24 = vrdelta(v5{{ *}},{{ *}}v5) } 198v24=vrdelta(v5,v5) 199 200#CHECK: 1f22c62a { v10 = vdelta(v6{{ *}},{{ *}}v2) } 201v10=vdelta(v6,v2) 202 203#CHECK: 1f20d102 { v2.w = vmax(v17.w{{ *}},{{ *}}v0.w) } 204v2.w=vmax(v17.w,v0.w) 205 206#CHECK: 1f1ed6fc { v28.h = vmax(v22.h{{ *}},{{ *}}v30.h) } 207v28.h=vmax(v22.h,v30.h) 208 209#CHECK: 1f0cc8d8 { v24.uh = vmax(v8.uh{{ *}},{{ *}}v12.uh) } 210v24.uh=vmax(v8.uh,v12.uh) 211 212#CHECK: 1f00c1b0 { v16.ub = vmax(v1.ub{{ *}},{{ *}}v0.ub) } 213v16.ub=vmax(v1.ub,v0.ub) 214 215#CHECK: 1f12d08e { v14.w = vmin(v16.w{{ *}},{{ *}}v18.w) } 216v14.w=vmin(v16.w,v18.w) 217 218#CHECK: 1f1ad466 { v6.h = vmin(v20.h{{ *}},{{ *}}v26.h) } 219v6.h=vmin(v20.h,v26.h) 220 221#CHECK: 1f13df5d { v29.uh = vmin(v31.uh{{ *}},{{ *}}v19.uh) } 222v29.uh=vmin(v31.uh,v19.uh) 223 224#CHECK: 1f09c226 { v6.ub = vmin(v2.ub{{ *}},{{ *}}v9.ub) } 225v6.ub=vmin(v2.ub,v9.ub) 226 227#CHECK: 1f41d34f { v15.b = vshuffo(v19.b{{ *}},{{ *}}v1.b) } 228v15.b=vshuffo(v19.b,v1.b) 229 230#CHECK: 1f5fc72e { v14.b = vshuffe(v7.b{{ *}},{{ *}}v31.b) } 231v14.b=vshuffe(v7.b,v31.b) 232 233#CHECK: 1f34d0f7 { v23.b = vdeale(v16.b{{ *}},{{ *}}v20.b) } 234v23.b=vdeale(v16.b,v20.b) 235 236#CHECK: 1f4bd6c4 { v5:4.b = vshuffoe(v22.b{{ *}},{{ *}}v11.b) } 237v5:4.b=vshuffoe(v22.b,v11.b) 238 239#CHECK: 1f5dcea2 { v3:2.h = vshuffoe(v14.h{{ *}},{{ *}}v29.h) } 240v3:2.h=vshuffoe(v14.h,v29.h) 241 242#CHECK: 1f4fd186 { v6.h = vshuffo(v17.h{{ *}},{{ *}}v15.h) } 243v6.h=vshuffo(v17.h,v15.h) 244 245#CHECK: 1f5bda79 { v25.h = vshuffe(v26.h{{ *}},{{ *}}v27.h) } 246v25.h=vshuffe(v26.h,v27.h) 247 248#CHECK: 1f41d1f2 { v19:18 = vcombine(v17{{ *}},{{ *}}v1) } 249v19:18=vcombine(v17,v1) 250 251#CHECK: 1e82f432 { if (!q2) v18.b -= v20.b } 252if (!q2) v18.b-=v20.b 253 254#CHECK: 1ec2fd13 { if (q3) v19.w -= v29.w } 255if (q3) v19.w-=v29.w 256 257#CHECK: 1e81fef9 { if (q2) v25.h -= v30.h } 258if (q2) v25.h-=v30.h 259 260#CHECK: 1e81e2d3 { if (q2) v19.b -= v2.b } 261if (q2) v19.b-=v2.b 262 263#CHECK: 1e41ecad { if (!q1) v13.w += v12.w } 264if (!q1) v13.w+=v12.w 265 266#CHECK: 1e41e789 { if (!q1) v9.h += v7.h } 267if (!q1) v9.h+=v7.h 268 269#CHECK: 1e81e967 { if (!q2) v7.b += v9.b } 270if (!q2) v7.b+=v9.b 271 272#CHECK: 1e41f04f { if (q1) v15.w += v16.w } 273if (q1) v15.w+=v16.w 274 275#CHECK: 1e01e838 { if (q0) v24.h += v8.h } 276if (q0) v24.h+=v8.h 277 278#CHECK: 1ec1f112 { if (q3) v18.b += v17.b } 279if (q3) v18.b+=v17.b 280 281#CHECK: 1e42f67b { if (!q1) v27.w -= v22.w } 282if (!q1) v27.w-=v22.w 283 284#CHECK: 1e82ea5b { if (!q2) v27.h -= v10.h } 285if (!q2) v27.h-=v10.h 286 287#CHECK: 1e00c586 { v6 = vnot(v5) } 288v6=vnot(v5) 289 290#CHECK: 1e00df70 { v16.w = vabs(v31.w):sat } 291v16.w=vabs(v31.w):sat 292 293#CHECK: 1e00d45f { v31.w = vabs(v20.w) } 294v31.w=vabs(v20.w) 295 296#CHECK: 1e00db2f { v15.h = vabs(v27.h):sat } 297v15.h=vabs(v27.h):sat 298 299#CHECK: 1e00d001 { v1.h = vabs(v16.h) } 300v1.h=vabs(v16.h) 301 302#CHECK: 1e02c832 { v19:18.uh = vzxt(v8.ub) } 303v19:18.uh=vzxt(v8.ub) 304 305#CHECK: 1e02c98a { v11:10.w = vsxt(v9.h) } 306v11:10.w=vsxt(v9.h) 307 308#CHECK: 1e02cf76 { v23:22.h = vsxt(v15.b) } 309v23:22.h=vsxt(v15.b) 310 311#CHECK: 1e02c258 { v25:24.uw = vzxt(v2.uh) } 312v25:24.uw=vzxt(v2.uh) 313