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 - | \ 3# RUN: FileCheck %s 4 5.L0: 6 7# CHECK: 5c00c000 { if (p0) jump:nt 8if (p0) jump .L0 9 10# CHECK: 5cffe1fe { if (!p1) jump:nt 11if (!p1) jump .L0 12 13# CHECK: 5340c200 { if (p2) jumpr:nt 14if (p2) jumpr r0 15 16# CHECK: 5361c300 { if (!p3) jumpr:nt 17if (!p3) jumpr r1 18 19# CHECK: 1e64f1d7 { v23 = vlalign(v17,v4,#6) } 20v23=vlalign(v17,v4,#6) 21 22# CHECK: 1ec3c003 { q3 = and(q0,q3) } 23q3=and(q0,q3) 24 25# CHECK: 1e00ff3c { v29:28.w |= vunpacko(v31.h) } 26v29:28.w|=vunpacko(v31.h) 27 28# CHECK: 1e22e60e { v14 = valign(v6,v2,#0) } 29v14=valign(v6,v2,#0) 30 31# CHECK: 1baae196 { v23:22 = vdeal(v1,v21,r2) } 32v23:22=vdeal(v1,v21,r2) 33 34# CHECK: 1e00f80c { v13:12.h |= vunpacko(v24.b) } 35v13:12.h|=vunpacko(v24.b) 36 37# CHECK: 1b1ae609 { v9.b = vasr(v6.h,v3.h,r2):rnd:sat } 38v9.b=vasr(v6.h,v3.h,r2):rnd:sat 39 40# CHECK: 1ba8e77c { v29:28 = vshuff(v7,v21,r0) } 41v29:28=vshuff(v7,v21,r0) 42 43# CHECK: 1e43c107 { q3 = or(q1,q1) } 44q3=or(q1,q1) 45 46# CHECK: 1e03c20d { q1 = xor(q2,q0) } 47q1=xor(q2,q0) 48 49# CHECK: 1f8ecd19 { q1 = vcmp.gt(v13.w,v14.w) } 50q1=vcmp.gt(v13.w,v14.w) 51 52# CHECK: 1f9dce14 { q0 = vcmp.gt(v14.h,v29.h) } 53q0=vcmp.gt(v14.h,v29.h) 54 55# CHECK: 1e83c014 { q0 = and(q0,!q2) } 56q0=and(q0,!q2) 57 58# CHECK: 1e03c310 { q0 = or(q3,!q0) } 59q0=or(q3,!q0) 60 61# CHECK: 1e03c309 { q1 = not(q3) } 62q1=not(q3) 63 64# CHECK: 1e03c109 { q1 = not(q1) } 65q1=not(q1) 66 67# CHECK: 1f86d704 { q0 = vcmp.eq(v23.h,v6.h) } 68q0=vcmp.eq(v23.h,v6.h) 69 70# CHECK: 1f83d303 { q3 = vcmp.eq(v19.b,v3.b) } 71q3=vcmp.eq(v19.b,v3.b) 72 73# CHECK: 1f9fd110 { q0 = vcmp.gt(v17.b,v31.b) } 74q0=vcmp.gt(v17.b,v31.b) 75 76# CHECK: 1f99cd09 { q1 = vcmp.eq(v13.w,v25.w) } 77q1=vcmp.eq(v13.w,v25.w) 78 79# CHECK: 1a20d939 { if (!p1) v25 = v25 } 80if (!p1) v25=v25 81 82# CHECK: 1a00db33 { if (p1) v19 = v27 } 83if (p1) v19=v27 84 85# CHECK: 19fde252 { vdeal(v2,v18,r29) } 86vdeal(v2,v18,r29) 87 88# CHECK: 19eef43e { vshuff(v20,v30,r14) } 89vshuff(v20,v30,r14) 90 91# CHECK: 19bfd6cc { v13:12.uw = vrmpy(v23:22.ub,r31.ub,#0) } 92v13:12.uw=vrmpy(v23:22.ub,r31.ub,#0) 93 94# CHECK: 1946d4c4 { v5:4.uw = vrsad(v21:20.ub,r6.ub,#0) } 95v5:4.uw=vrsad(v21:20.ub,r6.ub,#0) 96 97# CHECK: 1941de94 { v21:20.w = vrmpy(v31:30.ub,r1.b,#0) } 98v21:20.w=vrmpy(v31:30.ub,r1.b,#0) 99 100# CHECK: 196ef8dc { v29:28.uw += vrmpy(v25:24.ub,r14.ub,#0) } 101v29:28.uw+=vrmpy(v25:24.ub,r14.ub,#0) 102 103# CHECK: 1944eaea { v11:10.uw += vrsad(v11:10.ub,r4.ub,#1) } 104v11:10.uw+=vrsad(v11:10.ub,r4.ub,#1) 105 106# CHECK: 1947fa9c { v29:28.w += vrmpy(v27:26.ub,r7.b,#0) } 107v29:28.w+=vrmpy(v27:26.ub,r7.b,#0) 108 109# CHECK: 19b4c0a5 { v5 = vand(q0,r20) } 110v5=vand(q0,r20) 111 112# CHECK: 19a3c02f { v15 = vsplat(r3) } 113v15=vsplat(r3) 114 115# CHECK: 197de377 { v23 |= vand(q3,r29) } 116v23|=vand(q3,r29) 117 118# CHECK: 196af580 { q0 |= vand(v21,r10) } 119q0|=vand(v21,r10) 120 121# CHECK: 197bf780 { q0 |= vand(v23,r27) } 122q0|=vand(v23,r27) 123 124# CHECK: 19b0c0a6 { v6 = vand(q0,r16) } 125v6=vand(q0,r16) 126 127# CHECK: 1f85d621 { q1 = vcmp.gt(v22.ub,v5.ub) } 128q1=vcmp.gt(v22.ub,v5.ub) 129 130# CHECK: 1f82dc25 { q1 = vcmp.gt(v28.uh,v2.uh) } 131q1=vcmp.gt(v28.uh,v2.uh) 132 133# CHECK: 1f80da29 { q1 = vcmp.gt(v26.uw,v0.uw) } 134q1=vcmp.gt(v26.uw,v0.uw) 135 136# CHECK: 1966e06a { v10 |= vand(q0,r6) } 137v10|=vand(q0,r6) 138 139# CHECK: 8204db68 { r9:8 -= rol(r5:4,#27) } 140r9:8-=rol(r5:4,#27) 141 142# CHECK: 8c01d47b { r27 = rol(r1,#20) } 143r27=rol(r1,#20) 144 145# CHECK: 8008ec6c { r13:12 = rol(r9:8,#44) } 146r13:12=rol(r9:8,#44) 147 148# CHECK: 19bcd349 { q1 = vand(v19,r28) } 149q1=vand(v19,r28) 150 151# CHECK: 19b1cb49 { q1 = vand(v11,r17) } 152q1=vand(v11,r17) 153 154# CHECK: 19b3c045 { q1 = vsetq(r19) } 155q1=vsetq(r19) 156 157# CHECK: 19aac044 { q0 = vsetq(r10) } 158q0=vsetq(r10) 159 160# CHECK: 19a0e034 { v20.w = vinsert(r0) } 161v20.w=vinsert(r0) 162 163# CHECK: 19b5e037 { v23.w = vinsert(r21) } 164v23.w=vinsert(r21) 165 166# CHECK: 19b1c026 { v6 = vsplat(r17) } 167v6=vsplat(r17) 168 169# CHECK: 8242e7ee { r15:14 |= rol(r3:2,#39) } 170r15:14|=rol(r3:2,#39) 171 172# CHECK: 829cc868 { r9:8 ^= rol(r29:28,#8) } 173r9:8^=rol(r29:28,#8) 174 175# CHECK: 8210cee0 { r1:0 += rol(r17:16,#14) } 176r1:0+=rol(r17:16,#14) 177 178# CHECK: 8256e17a { r27:26 &= rol(r23:22,#33) } 179r27:26&=rol(r23:22,#33) 180 181# CHECK: 8e49c97d { r29 &= rol(r9,#9) } 182r29&=rol(r9,#9) 183 184# CHECK: 8e49dde8 { r8 |= rol(r9,#29) } 185r8|=rol(r9,#29) 186 187# CHECK: 8e1ac76f { r15 -= rol(r26,#7) } 188r15-=rol(r26,#7) 189 190# CHECK: 8e06c3f0 { r16 += rol(r6,#3) } 191r16+=rol(r6,#3) 192 193# CHECK: 8e99c075 { r21 ^= rol(r25,#0) } 194r21^=rol(r25,#0) 195 196# CHECK: 9213db2e { r14 = vextract(v27,r19) } 197r14=vextract(v27,r19) 198 199# CHECK: a6a0cc00 { l2gclean(r13:12) } 200l2gclean(r13:12) 201 202# CHECK: a666c000 { l2unlocka(r6) } 203l2unlocka(r6) 204 205# CHECK: a0e8e000 { p0 = l2locka(r8) } 206p0=l2locka(r8) 207 208# CHECK: a6c0c400 { l2gcleaninv(r5:4) } 209l2gcleaninv(r5:4) 210 211# CHECK: a820c800 { l2gunlock } 212l2gunlock 213 214# CHECK: a820d800 { l2gcleaninv } 215l2gcleaninv 216 217# CHECK: a820d000 { l2gclean } 218l2gclean 219 220# CHECK: 1ea6fa00 { v1:0 = vswap(q0,v26,v6) } 221v1:0=vswap(q0,v26,v6) 222 223# CHECK: eaa8da5c { r29:28,p2 = vacsh(r9:8,r27:26) } 224r29:28,p2=vacsh(r9:8,r27:26) 225 226# CHECK: 1eeef124 { v4 = vmux(q1,v17,v14) } 227v4=vmux(q1,v17,v14) 228 229# CHECK: 1bb2e928 { v8.b = vlut32(v9.b,v22.b,r2) } 230v8.b=vlut32(v9.b,v22.b,r2) 231 232# CHECK: 1b13e0fa { v27:26.h |= vlut16(v0.b,v2.h,r3) } 233v27:26.h|=vlut16(v0.b,v2.h,r3) 234 235# CHECK: 1b8ad836 { v22 = vlalign(v24,v17,r2) } 236v22=vlalign(v24,v17,r2) 237 238# CHECK: 1b41dd14 { v20 = valign(v29,v8,r1) } 239v20=valign(v29,v8,r1) 240 241# CHECK: 1a5ed41e { if (!p0) v31:30 = vcombine(v20,v30) } 242if (!p0) v31:30=vcombine(v20,v30) 243 244# CHECK: 1a7cc216 { if (p0) v23:22 = vcombine(v2,v28) } 245if (p0) v23:22=vcombine(v2,v28) 246 247# CHECK: 1bf9d389 { v9.h = vasr(v19.w,v31.w,r1):rnd:sat } 248v9.h=vasr(v19.w,v31.w,r1):rnd:sat 249 250# CHECK: 1bc9cb56 { v22.h = vasr(v11.w,v25.w,r1) } 251v22.h=vasr(v11.w,v25.w,r1) 252 253# CHECK: 1b08d2c5 { v5.ub = vasr(v18.h,v1.h,r0):sat } 254v5.ub=vasr(v18.h,v1.h,r0):sat 255 256# CHECK: 1befd0f4 { v20.ub = vasr(v16.h,v29.h,r7):rnd:sat } 257v20.ub=vasr(v16.h,v29.h,r7):rnd:sat 258 259# CHECK: 1b86f0d2 { v19:18.h = vlut16(v16.b,v16.h,r6) } 260v19:18.h=vlut16(v16.b,v16.h,r6) 261 262# CHECK: 1b9cf6bf { v31.b |= vlut32(v22.b,v19.b,r4) } 263v31.b|=vlut32(v22.b,v19.b,r4) 264 265# CHECK: 1b76d6ab { v11.uh = vasr(v22.w,v14.w,r6):sat } 266v11.uh=vasr(v22.w,v14.w,r6):sat 267 268# CHECK: 1b14c06f { v15.h = vasr(v0.w,v2.w,r4):sat } 269v15.h=vasr(v0.w,v2.w,r4):sat 270 271# CHECK: 1c2eceee { v14 = vxor(v14,v14) } 272v14=#0 273 274# CHECK: 1c4eceee { v14.w = vsub(v14.w,v14.w) } 275v14.w=vsub(v14.w, v14.w) 276 277# CHECK: 19e8eb2a { vshuff(v11,v10,r8) } 278vtrans2x2(v11, v10, r8) 279 280# CHECK: 537ad100 { if (!p1) jumpr:t 281if (!p1) jumpr:t r26 282 283# CHECK: 5354d300 { if (p3) jumpr:t 284if (p3) jumpr:t r20 285 286# CHECK: 5c20d100 if (!p1) jump:t 287if (!p1) jump:t l579 288 289# CHECK: 5c00d100 if (p1) jump:t 290if (p1) jump:t l1143 291 292# CHECK: 1baeeb8a { v11:10 = vdeal(v11,v21,r6) } 293v11:10=vdeal(v11,v21,r6) 294 295# CHECK: 1e00e080 { vhist } 296vhist 297 298# CHECK: 1e42e080 { vhist(q1) } 299vhist(q1) 300 301# CHECK: 1f42c3e0 { v1:0 = vcombine(v3,v2) } 302v1:0=v3:2 303 304# CHECK: 1f90cf00 { q0 = vcmp.eq(v15.b,v16.b) } 305q0=vcmp.eq(v15.ub, v16.ub) 306 307# CHECK: 1c92f101 { q1 &= vcmp.eq(v17.b,v18.b) } 308q1&=vcmp.eq(v17.ub, v18.ub) 309 310# CHECK: 1c94f342 { q2 |= vcmp.eq(v19.b,v20.b) } 311q2|=vcmp.eq(v19.ub, v20.ub) 312 313# CHECK: 1c96f583 { q3 ^= vcmp.eq(v21.b,v22.b) } 314q3^=vcmp.eq(v21.ub, v22.ub) 315 316# CHECK: 1f81c004 { q0 = vcmp.eq(v0.h,v1.h) } 317q0=vcmp.eq(v0.uh, v1.uh) 318 319# CHECK: 1c83e205 { q1 &= vcmp.eq(v2.h,v3.h) } 320q1&=vcmp.eq(v2.uh, v3.uh) 321 322# CHECK: 1c85e446 { q2 |= vcmp.eq(v4.h,v5.h) } 323q2|=vcmp.eq(v4.uh, v5.uh) 324 325# CHECK: 1c87e687 { q3 ^= vcmp.eq(v6.h,v7.h) } 326q3^=vcmp.eq(v6.uh, v7.uh) 327 328# CHECK: 1f89c808 { q0 = vcmp.eq(v8.w,v9.w) } 329q0=vcmp.eq(v8.uw, v9.uw) 330 331# CHECK: 1c8aea09 { q1 &= vcmp.eq(v10.w,v10.w) } 332q1&=vcmp.eq(v10.uw, v10.uw) 333 334# CHECK: 1c8ceb46 { q2 |= vcmp.eq(v11.h,v12.h) } 335q2|=vcmp.eq(v11.uh, v12.uh) 336 337# CHECK: 1c8eed8b { q3 ^= vcmp.eq(v13.w,v14.w) } 338q3^=vcmp.eq(v13.uw, v14.uw) 339