# RUN: llvm-mc -arch=hexagon -mv65 -mhvx -filetype=obj %s | llvm-objdump --mv65 --mhvx -d - | FileCheck %s

// Warning: This file is auto generated by mktest.py.  Do not edit!
// Created on:  2016-06-01 @ 17:33:01
// Created using:
//   /usr2/mlambert/Tags/iset.py.v65_20160513


//   V6_vmpyuhe_acc
//   Vx32.uw+=vmpye(Vu32.uh,Rt32.uh)
     V0.uw+=vmpye(V0.uh,R0.uh)
# CHECK: 1980e060 { v0.uw += vmpye(v0.uh,r0.uh) }

//   V6_vgathermwq
//   if (Qs4) vtmp.w=vgather(Rt32,Mu2,Vv32.w).w
     if (Q0) vtmp.w=vgather(R0,M0,V0.w).w
# CHECK: 2f00c400 { if (q0) vtmp.w = vgather(r0,m0,v0.w).w }

//   V6_vscattermw
//   vscatter(Rt32,Mu2,Vv32.w).w=Vw32
     vscatter(R0,M0,V0.w).w=V0
# CHECK: 2f20c000 { vscatter(r0,m0,v0.w).w = v0 }

//   V6_vscattermh
//   vscatter(Rt32,Mu2,Vv32.h).h=Vw32
     vscatter(R0,M0,V0.h).h=V0
# CHECK: 2f20c020 { vscatter(r0,m0,v0.h).h = v0 }

//   V6_vlut4
//   Vd32.h=vlut4(Vu32.uh,Rtt32.h)
     V0.h=vlut4(V0.uh,R1:0.h)
# CHECK: 1960c080 { v0.h = vlut4(v0.uh,r1:0.h) }

//   V6_vgathermhwq
//   if (Qs4) vtmp.h=vgather(Rt32,Mu2,Vvv32.w).h
     if (Q0) vtmp.h=vgather(R0,M0,V1:0.w).h
# CHECK: 2f00c600 { if (q0) vtmp.h = vgather(r0,m0,v1:0.w).h }

//   V6_vS32b_srls_ai
//   vmem(Rt32+#s4):scatter_release
     vmem(R0+#0):scatter_release
# CHECK: 2820c028 { vmem(r0+#0):scatter_release }

//   V6_vgathermh
//   vtmp.h=vgather(Rt32,Mu2,Vv32.h).h
     vtmp.h=vgather(R0,M0,V0.h).h
# CHECK: 2f00c100 { vtmp.h = vgather(r0,m0,v0.h).h }

//   V6_vscattermhw
//   vscatter(Rt32,Mu2,Vvv32.w).h=Vw32
     vscatter(R0,M0,V1:0.w).h=V0
# CHECK: 2f20c040 { vscatter(r0,m0,v1:0.w).h = v0 }

//   V6_vS32b_srls_ppu
//   vmem(Rx32++Mu2):scatter_release
     vmem(R0++M0):scatter_release
# CHECK: 2b20c028 { vmem(r0++m0):scatter_release }

//   V6_vscattermhw_add
//   vscatter(Rt32,Mu2,Vvv32.w).h+=Vw32
     vscatter(R0,M0,V1:0.w).h+=V0
# CHECK: 2f20c0c0 { vscatter(r0,m0,v1:0.w).h += v0 }

//   V6_vmpabuu
//   Vdd32.h=vmpa(Vuu32.ub,Rt32.ub)
     V1:0.h=vmpa(V1:0.ub,R0.ub)
# CHECK: 1960c060 { v1:0.h = vmpa(v1:0.ub,r0.ub) }

//   V6_vasruhubrndsat
//   Vd32.ub=vasr(Vu32.uh,Vv32.uh,Rt8):rnd:sat
     V0.ub=vasr(V0.uh,V0.uh,R0):rnd:sat
# CHECK: 1800c0e0 { v0.ub = vasr(v0.uh,v0.uh,r0):rnd:sat }

//   V6_vscattermh_add
//   vscatter(Rt32,Mu2,Vv32.h).h+=Vw32
     vscatter(R0,M0,V0.h).h+=V0
# CHECK: 2f20c0a0 { vscatter(r0,m0,v0.h).h += v0 }

//   V6_vgathermw
//   vtmp.w=vgather(Rt32,Mu2,Vv32.w).w
     vtmp.w=vgather(R0,M0,V0.w).w
# CHECK: 2f00c000 { vtmp.w = vgather(r0,m0,v0.w).w }

//   V6_vasruhubsat
//   Vd32.ub=vasr(Vu32.uh,Vv32.uh,Rt8):sat
     V0.ub=vasr(V0.uh,V0.uh,R0):sat
# CHECK: 1800e0a0 { v0.ub = vasr(v0.uh,v0.uh,r0):sat }

//   V6_vscattermhwq
//   if (Qs4) vscatter(Rt32,Mu2,Vvv32.w).h=Vw32
     if (Q0) vscatter(R0,M0,V1:0.w).h=V0
# CHECK: 2fa0c000 { if (q0) vscatter(r0,m0,v1:0.w).h = v0 }

//   V6_vgathermhq
//   if (Qs4) vtmp.h=vgather(Rt32,Mu2,Vv32.h).h
     if (Q0) vtmp.h=vgather(R0,M0,V0.h).h
# CHECK: 2f00c500 { if (q0) vtmp.h = vgather(r0,m0,v0.h).h }

//   V6_vmpsuhuhsat
//   Vx32.h=vmps(Vx32.h,Vu32.uh,Rtt32.uh):sat
     V0.h=vmps(V0.h,V0.uh,R1:0.uh):sat
# CHECK: 1980e0c0 { v0.h = vmps(v0.h,v0.uh,r1:0.uh):sat }

//   V6_vS32b_srls_pi
//   vmem(Rx32++#s3):scatter_release
     vmem(R0++#0):scatter_release
# CHECK: 2920c028 { vmem(r0++#0):scatter_release }

//   V6_vgathermhw
//   vtmp.h=vgather(Rt32,Mu2,Vvv32.w).h
     vtmp.h=vgather(R0,M0,V1:0.w).h
# CHECK: 2f00c200 { vtmp.h = vgather(r0,m0,v1:0.w).h }

//   V6_vmpyuhe
//   Vd32.uw=vmpye(Vu32.uh,Rt32.uh)
     V0.uw=vmpye(V0.uh,R0.uh)
# CHECK: 1960c040 { v0.uw = vmpye(v0.uh,r0.uh) }

//   V6_vscattermwq
//   if (Qs4) vscatter(Rt32,Mu2,Vv32.w).w=Vw32
     if (Q0) vscatter(R0,M0,V0.w).w=V0
# CHECK: 2f80c000 { if (q0) vscatter(r0,m0,v0.w).w = v0 }

//   V6_vasruwuhsat
//   Vd32.uh=vasr(Vu32.uw,Vv32.uw,Rt8):sat
     V0.uh=vasr(V0.uw,V0.uw,R0):sat
# CHECK: 1800e080 { v0.uh = vasr(v0.uw,v0.uw,r0):sat }

//   V6_vprefixqh
//   Vd32.h=prefixsum(Qv4)
     V0.h=prefixsum(Q0)
# CHECK: 1e03e140 { v0.h = prefixsum(q0) }

//   V6_vmpabuu_acc
//   Vxx32.h+=vmpa(Vuu32.ub,Rt32.ub)
     V1:0.h+=vmpa(V1:0.ub,R0.ub)
# CHECK: 19a0e080 { v1:0.h += vmpa(v1:0.ub,r0.ub) }

//   V6_vprefixqw
//   Vd32.w=prefixsum(Qv4)
     V0.w=prefixsum(Q0)
# CHECK: 1e03e240 { v0.w = prefixsum(q0) }

//   V6_vprefixqb
//   Vd32.b=prefixsum(Qv4)
     V0.b=prefixsum(Q0)
# CHECK: 1e03e040 { v0.b = prefixsum(q0) }

//   V6_vabsb
//   Vd32.b=vabs(Vu32.b)
     V0.b=vabs(V0.b)
# CHECK: 1e01c080 { v0.b = vabs(v0.b) }

//   V6_vscattermw_add
//   vscatter(Rt32,Mu2,Vv32.w).w+=Vw32
     vscatter(R0,M0,V0.w).w+=V0
# CHECK: 2f20c080 { vscatter(r0,m0,v0.w).w += v0 }

//   V6_vscattermhq
//   if (Qs4) vscatter(Rt32,Mu2,Vv32.h).h=Vw32
     if (Q0) vscatter(R0,M0,V0.h).h=V0
# CHECK: 2f80c080 { if (q0) vscatter(r0,m0,v0.h).h = v0 }

//   V6_vmpauhuhsat
//   Vx32.h=vmpa(Vx32.h,Vu32.uh,Rtt32.uh):sat
     V0.h=vmpa(V0.h,V0.uh,R1:0.uh):sat
# CHECK: 1980e0a0 { v0.h = vmpa(v0.h,v0.uh,r1:0.uh):sat }

//   V6_vabsb_sat
//   Vd32.b=vabs(Vu32.b):sat
     V0.b=vabs(V0.b):sat
# CHECK: 1e01c0a0 { v0.b = vabs(v0.b):sat }

v1:0.w+=vrmpy(v0.b, r1:0.ub)
# CHECK: 19a0e000 { v1:0.w += vrmpy(v0.b,r1:0.ub) }

V1:0.uw+=vrmpy(v0.ub,r1:0.ub)
# CHECK: 19a0e0e0 { v1:0.uw += vrmpy(v0.ub,r1:0.ub) }

v1:0.uw=vrmpy(v1.ub,r1:0.ub)
# CHECK: 19c0c180 { v1:0.uw = vrmpy(v1.ub,r1:0.ub) }

v1:0.w=vrmpy(v1.b,r1:0.ub)
# CHECK: 19c0c1a0 { v1:0.w = vrmpy(v1.b,r1:0.ub) }
