# RUN: llvm-mc -arch=hexagon -mcpu=hexagonv67 -mhvx -filetype=obj %s | llvm-objdump --mcpu=hexagonv67 --mattr=+hvx -d - | FileCheck --implicit-check-not='{' %s



// Warning: This file is auto generated by mktest.py.  Do not edit!
// Created at Wed Aug 22 11:17:37 2018
// Created using:
//  Arch: v67, commit: 324e85a78e99759c3643d207f9d9b42bbfaf00f6

//  V6_extractw
//  Rd32=vextract(Vu32,Rs32)
    r0=vextract(v0,r0)
# CHECK: 9200c020 { r0 = vextract(v0,r0) }

//  V6_lvsplatb
//  Vd32.b=vsplat(Rt32)
    v0.b=vsplat(r0)
# CHECK-NEXT: 19c0c040 { v0.b = vsplat(r0) }

//  V6_lvsplath
//  Vd32.h=vsplat(Rt32)
    v0.h=vsplat(r0)
# CHECK-NEXT: 19c0c020 { v0.h = vsplat(r0) }

//  V6_lvsplatw
//  Vd32=vsplat(Rt32)
    v0=vsplat(r0)
# CHECK-NEXT: 19a0c020 { v0 = vsplat(r0) }

//  V6_pred_and
//  Qd4=and(Qs4,Qt4)
    q0=and(q0,q0)
# CHECK-NEXT: 1e03c000 { q0 = and(q0,q0) }

//  V6_pred_and_n
//  Qd4=and(Qs4,!Qt4)
    q0=and(q0,!q0)
# CHECK-NEXT: 1e03c014 { q0 = and(q0,!q0) }

//  V6_pred_not
//  Qd4=not(Qs4)
    q0=not(q0)
# CHECK-NEXT: 1e03c008 { q0 = not(q0) }

//  V6_pred_or
//  Qd4=or(Qs4,Qt4)
    q0=or(q0,q0)
# CHECK-NEXT: 1e03c004 { q0 = or(q0,q0) }

//  V6_pred_or_n
//  Qd4=or(Qs4,!Qt4)
    q0=or(q0,!q0)
# CHECK-NEXT: 1e03c010 { q0 = or(q0,!q0) }

//  V6_pred_scalar2
//  Qd4=vsetq(Rt32)
    q0=vsetq(r0)
# CHECK-NEXT: 19a0c044 { q0 = vsetq(r0) }

//  V6_pred_scalar2v2
//  Qd4=vsetq2(Rt32)
    q0=vsetq2(r0)
# CHECK-NEXT: 19a0c04c { q0 = vsetq2(r0) }

//  V6_pred_xor
//  Qd4=xor(Qs4,Qt4)
    q0=xor(q0,q0)
# CHECK-NEXT: 1e03c00c { q0 = xor(q0,q0) }

//  V6_shuffeqh
//  Qd4.b=vshuffe(Qs4.h,Qt4.h)
    q0.b=vshuffe(q0.h,q0.h)
# CHECK-NEXT: 1e03c018 { q0.b = vshuffe(q0.h,q0.h) }

//  V6_shuffeqw
//  Qd4.h=vshuffe(Qs4.w,Qt4.w)
    q0.h=vshuffe(q0.w,q0.w)
# CHECK-NEXT: 1e03c01c { q0.h = vshuffe(q0.w,q0.w) }

//  V6_vL32Ub_ai
//  Vd32=vmemu(Rt32+#s4)
    v0=vmemu(r0+#0)
# CHECK-NEXT: 2800c0e0 { v0 = vmemu(r0+#0) }

//  V6_vL32Ub_pi
//  Vd32=vmemu(Rx32++#s3)
    v0=vmemu(r0++#0)
# CHECK-NEXT: 2900c0e0 { v0 = vmemu(r0++#0) }

//  V6_vL32Ub_ppu
//  Vd32=vmemu(Rx32++Mu2)
    v0=vmemu(r0++m0)
# CHECK-NEXT: 2b00c0e0 { v0 = vmemu(r0++m0) }

//  V6_vL32b_ai
//  Vd32=vmem(Rt32+#s4)
    v0=vmem(r0+#0)
# CHECK-NEXT: 2800c000 { v0 = vmem(r0+#0) }

//  V6_vL32b_cur_ai
//  Vd32.cur=vmem(Rt32+#s4)
    v0.cur=vmem(r0+#0)
# CHECK-NEXT: 2800c020 { v0.cur = vmem(r0+#0) }

//  V6_vL32b_cur_npred_ai
//  if (!Pv4) Vd32.cur=vmem(Rt32+#s4)
    if (!p0) v0.cur=vmem(r0+#0)
# CHECK-NEXT: 2880c0a0 { if (!p0) v0.cur = vmem(r0+#0) }

//  V6_vL32b_cur_npred_pi
//  if (!Pv4) Vd32.cur=vmem(Rx32++#s3)
    if (!p0) v0.cur=vmem(r0++#0)
# CHECK-NEXT: 2980c0a0 { if (!p0) v0.cur = vmem(r0++#0) }

//  V6_vL32b_cur_npred_ppu
//  if (!Pv4) Vd32.cur=vmem(Rx32++Mu2)
    if (!p0) v0.cur=vmem(r0++m0)
# CHECK-NEXT: 2b80c0a0 { if (!p0) v0.cur = vmem(r0++m0) }

//  V6_vL32b_cur_pi
//  Vd32.cur=vmem(Rx32++#s3)
    v0.cur=vmem(r0++#0)
# CHECK-NEXT: 2900c020 { v0.cur = vmem(r0++#0) }

//  V6_vL32b_cur_ppu
//  Vd32.cur=vmem(Rx32++Mu2)
    v0.cur=vmem(r0++m0)
# CHECK-NEXT: 2b00c020 { v0.cur = vmem(r0++m0) }

//  V6_vL32b_cur_pred_ai
//  if (Pv4) Vd32.cur=vmem(Rt32+#s4)
    if (p0) v0.cur=vmem(r0+#0)
# CHECK-NEXT: 2880c080 { if (p0) v0.cur = vmem(r0+#0) }

//  V6_vL32b_cur_pred_pi
//  if (Pv4) Vd32.cur=vmem(Rx32++#s3)
    if (p0) v0.cur=vmem(r0++#0)
# CHECK-NEXT: 2980c080 { if (p0) v0.cur = vmem(r0++#0) }

//  V6_vL32b_cur_pred_ppu
//  if (Pv4) Vd32.cur=vmem(Rx32++Mu2)
    if (p0) v0.cur=vmem(r0++m0)
# CHECK-NEXT: 2b80c080 { if (p0) v0.cur = vmem(r0++m0) }

//  V6_vL32b_npred_ai
//  if (!Pv4) Vd32=vmem(Rt32+#s4)
    if (!p0) v0=vmem(r0+#0)
# CHECK-NEXT: 2880c060 { if (!p0) v0 = vmem(r0+#0) }

//  V6_vL32b_npred_pi
//  if (!Pv4) Vd32=vmem(Rx32++#s3)
    if (!p0) v0=vmem(r0++#0)
# CHECK-NEXT: 2980c060 { if (!p0) v0 = vmem(r0++#0) }

//  V6_vL32b_npred_ppu
//  if (!Pv4) Vd32=vmem(Rx32++Mu2)
    if (!p0) v0=vmem(r0++m0)
# CHECK-NEXT: 2b80c060 { if (!p0) v0 = vmem(r0++m0) }

//  V6_vL32b_nt_ai
//  Vd32=vmem(Rt32+#s4):nt
    v0=vmem(r0+#0):nt
# CHECK-NEXT: 2840c000 { v0 = vmem(r0+#0):nt }

//  V6_vL32b_nt_cur_ai
//  Vd32.cur=vmem(Rt32+#s4):nt
    v0.cur=vmem(r0+#0):nt
# CHECK-NEXT: 2840c020 { v0.cur = vmem(r0+#0):nt }

//  V6_vL32b_nt_cur_npred_ai
//  if (!Pv4) Vd32.cur=vmem(Rt32+#s4):nt
    if (!p0) v0.cur=vmem(r0+#0):nt
# CHECK-NEXT: 28c0c0a0 { if (!p0) v0.cur = vmem(r0+#0):nt }

//  V6_vL32b_nt_cur_npred_pi
//  if (!Pv4) Vd32.cur=vmem(Rx32++#s3):nt
    if (!p0) v0.cur=vmem(r0++#0):nt
# CHECK-NEXT: 29c0c0a0 { if (!p0) v0.cur = vmem(r0++#0):nt }

//  V6_vL32b_nt_cur_npred_ppu
//  if (!Pv4) Vd32.cur=vmem(Rx32++Mu2):nt
    if (!p0) v0.cur=vmem(r0++m0):nt
# CHECK-NEXT: 2bc0c0a0 { if (!p0) v0.cur = vmem(r0++m0):nt }

//  V6_vL32b_nt_cur_pi
//  Vd32.cur=vmem(Rx32++#s3):nt
    v0.cur=vmem(r0++#0):nt
# CHECK-NEXT: 2940c020 { v0.cur = vmem(r0++#0):nt }

//  V6_vL32b_nt_cur_ppu
//  Vd32.cur=vmem(Rx32++Mu2):nt
    v0.cur=vmem(r0++m0):nt
# CHECK-NEXT: 2b40c020 { v0.cur = vmem(r0++m0):nt }

//  V6_vL32b_nt_cur_pred_ai
//  if (Pv4) Vd32.cur=vmem(Rt32+#s4):nt
    if (p0) v0.cur=vmem(r0+#0):nt
# CHECK-NEXT: 28c0c080 { if (p0) v0.cur = vmem(r0+#0):nt }

//  V6_vL32b_nt_cur_pred_pi
//  if (Pv4) Vd32.cur=vmem(Rx32++#s3):nt
    if (p0) v0.cur=vmem(r0++#0):nt
# CHECK-NEXT: 29c0c080 { if (p0) v0.cur = vmem(r0++#0):nt }

//  V6_vL32b_nt_cur_pred_ppu
//  if (Pv4) Vd32.cur=vmem(Rx32++Mu2):nt
    if (p0) v0.cur=vmem(r0++m0):nt
# CHECK-NEXT: 2bc0c080 { if (p0) v0.cur = vmem(r0++m0):nt }

//  V6_vL32b_nt_npred_ai
//  if (!Pv4) Vd32=vmem(Rt32+#s4):nt
    if (!p0) v0=vmem(r0+#0):nt
# CHECK-NEXT: 28c0c060 { if (!p0) v0 = vmem(r0+#0):nt }

//  V6_vL32b_nt_npred_pi
//  if (!Pv4) Vd32=vmem(Rx32++#s3):nt
    if (!p0) v0=vmem(r0++#0):nt
# CHECK-NEXT: 29c0c060 { if (!p0) v0 = vmem(r0++#0):nt }

//  V6_vL32b_nt_npred_ppu
//  if (!Pv4) Vd32=vmem(Rx32++Mu2):nt
    if (!p0) v0=vmem(r0++m0):nt
# CHECK-NEXT: 2bc0c060 { if (!p0) v0 = vmem(r0++m0):nt }

//  V6_vL32b_nt_pi
//  Vd32=vmem(Rx32++#s3):nt
    v0=vmem(r0++#0):nt
# CHECK-NEXT: 2940c000 { v0 = vmem(r0++#0):nt }

//  V6_vL32b_nt_ppu
//  Vd32=vmem(Rx32++Mu2):nt
    v0=vmem(r0++m0):nt
# CHECK-NEXT: 2b40c000 { v0 = vmem(r0++m0):nt }

//  V6_vL32b_nt_pred_ai
//  if (Pv4) Vd32=vmem(Rt32+#s4):nt
    if (p0) v0=vmem(r0+#0):nt
# CHECK-NEXT: 28c0c040 { if (p0) v0 = vmem(r0+#0):nt }

//  V6_vL32b_nt_pred_pi
//  if (Pv4) Vd32=vmem(Rx32++#s3):nt
    if (p0) v0=vmem(r0++#0):nt
# CHECK-NEXT: 29c0c040 { if (p0) v0 = vmem(r0++#0):nt }

//  V6_vL32b_nt_pred_ppu
//  if (Pv4) Vd32=vmem(Rx32++Mu2):nt
    if (p0) v0=vmem(r0++m0):nt
# CHECK-NEXT: 2bc0c040 { if (p0) v0 = vmem(r0++m0):nt }

//  V6_vL32b_nt_tmp_ai
//  Vd32.tmp=vmem(Rt32+#s4):nt
    v0.tmp=vmem(r0+#0):nt
# CHECK-NEXT: 2840c040 { v0.tmp = vmem(r0+#0):nt }

//  V6_vL32b_nt_tmp_npred_ai
//  if (!Pv4) Vd32.tmp=vmem(Rt32+#s4):nt
    if (!p0) v0.tmp=vmem(r0+#0):nt
# CHECK-NEXT: 28c0c0e0 { if (!p0) v0.tmp = vmem(r0+#0):nt }

//  V6_vL32b_nt_tmp_npred_pi
//  if (!Pv4) Vd32.tmp=vmem(Rx32++#s3):nt
    if (!p0) v0.tmp=vmem(r0++#0):nt
# CHECK-NEXT: 29c0c0e0 { if (!p0) v0.tmp = vmem(r0++#0):nt }

//  V6_vL32b_nt_tmp_npred_ppu
//  if (!Pv4) Vd32.tmp=vmem(Rx32++Mu2):nt
    if (!p0) v0.tmp=vmem(r0++m0):nt
# CHECK-NEXT: 2bc0c0e0 { if (!p0) v0.tmp = vmem(r0++m0):nt }

//  V6_vL32b_nt_tmp_pi
//  Vd32.tmp=vmem(Rx32++#s3):nt
    v0.tmp=vmem(r0++#0):nt
# CHECK-NEXT: 2940c040 { v0.tmp = vmem(r0++#0):nt }

//  V6_vL32b_nt_tmp_ppu
//  Vd32.tmp=vmem(Rx32++Mu2):nt
    v0.tmp=vmem(r0++m0):nt
# CHECK-NEXT: 2b40c040 { v0.tmp = vmem(r0++m0):nt }

//  V6_vL32b_nt_tmp_pred_ai
//  if (Pv4) Vd32.tmp=vmem(Rt32+#s4):nt
    if (p0) v0.tmp=vmem(r0+#0):nt
# CHECK-NEXT: 28c0c0c0 { if (p0) v0.tmp = vmem(r0+#0):nt }

//  V6_vL32b_nt_tmp_pred_pi
//  if (Pv4) Vd32.tmp=vmem(Rx32++#s3):nt
    if (p0) v0.tmp=vmem(r0++#0):nt
# CHECK-NEXT: 29c0c0c0 { if (p0) v0.tmp = vmem(r0++#0):nt }

//  V6_vL32b_nt_tmp_pred_ppu
//  if (Pv4) Vd32.tmp=vmem(Rx32++Mu2):nt
    if (p0) v0.tmp=vmem(r0++m0):nt
# CHECK-NEXT: 2bc0c0c0 { if (p0) v0.tmp = vmem(r0++m0):nt }

//  V6_vL32b_pi
//  Vd32=vmem(Rx32++#s3)
    v0=vmem(r0++#0)
# CHECK-NEXT: 2900c000 { v0 = vmem(r0++#0) }

//  V6_vL32b_ppu
//  Vd32=vmem(Rx32++Mu2)
    v0=vmem(r0++m0)
# CHECK-NEXT: 2b00c000 { v0 = vmem(r0++m0) }

//  V6_vL32b_pred_ai
//  if (Pv4) Vd32=vmem(Rt32+#s4)
    if (p0) v0=vmem(r0+#0)
# CHECK-NEXT: 2880c040 { if (p0) v0 = vmem(r0+#0) }

//  V6_vL32b_pred_pi
//  if (Pv4) Vd32=vmem(Rx32++#s3)
    if (p0) v0=vmem(r0++#0)
# CHECK-NEXT: 2980c040 { if (p0) v0 = vmem(r0++#0) }

//  V6_vL32b_pred_ppu
//  if (Pv4) Vd32=vmem(Rx32++Mu2)
    if (p0) v0=vmem(r0++m0)
# CHECK-NEXT: 2b80c040 { if (p0) v0 = vmem(r0++m0) }

//  V6_vL32b_tmp_ai
//  Vd32.tmp=vmem(Rt32+#s4)
    v0.tmp=vmem(r0+#0)
# CHECK-NEXT: 2800c040 { v0.tmp = vmem(r0+#0) }

//  V6_vL32b_tmp_npred_ai
//  if (!Pv4) Vd32.tmp=vmem(Rt32+#s4)
    if (!p0) v0.tmp=vmem(r0+#0)
# CHECK-NEXT: 2880c0e0 { if (!p0) v0.tmp = vmem(r0+#0) }

//  V6_vL32b_tmp_npred_pi
//  if (!Pv4) Vd32.tmp=vmem(Rx32++#s3)
    if (!p0) v0.tmp=vmem(r0++#0)
# CHECK-NEXT: 2980c0e0 { if (!p0) v0.tmp = vmem(r0++#0) }

//  V6_vL32b_tmp_npred_ppu
//  if (!Pv4) Vd32.tmp=vmem(Rx32++Mu2)
    if (!p0) v0.tmp=vmem(r0++m0)
# CHECK-NEXT: 2b80c0e0 { if (!p0) v0.tmp = vmem(r0++m0) }

//  V6_vL32b_tmp_pi
//  Vd32.tmp=vmem(Rx32++#s3)
    v0.tmp=vmem(r0++#0)
# CHECK-NEXT: 2900c040 { v0.tmp = vmem(r0++#0) }

//  V6_vL32b_tmp_ppu
//  Vd32.tmp=vmem(Rx32++Mu2)
    v0.tmp=vmem(r0++m0)
# CHECK-NEXT: 2b00c040 { v0.tmp = vmem(r0++m0) }

//  V6_vL32b_tmp_pred_ai
//  if (Pv4) Vd32.tmp=vmem(Rt32+#s4)
    if (p0) v0.tmp=vmem(r0+#0)
# CHECK-NEXT: 2880c0c0 { if (p0) v0.tmp = vmem(r0+#0) }

//  V6_vL32b_tmp_pred_pi
//  if (Pv4) Vd32.tmp=vmem(Rx32++#s3)
    if (p0) v0.tmp=vmem(r0++#0)
# CHECK-NEXT: 2980c0c0 { if (p0) v0.tmp = vmem(r0++#0) }

//  V6_vL32b_tmp_pred_ppu
//  if (Pv4) Vd32.tmp=vmem(Rx32++Mu2)
    if (p0) v0.tmp=vmem(r0++m0)
# CHECK-NEXT: 2b80c0c0 { if (p0) v0.tmp = vmem(r0++m0) }

//  V6_vS32Ub_ai
//  vmemu(Rt32+#s4)=Vs32
    vmemu(r0+#0)=v0
# CHECK-NEXT: 2820c0e0 { vmemu(r0+#0) = v0 }

//  V6_vS32Ub_npred_ai
//  if (!Pv4) vmemu(Rt32+#s4)=Vs32
    if (!p0) vmemu(r0+#0)=v0
# CHECK-NEXT: 28a0c0e0 { if (!p0) vmemu(r0+#0) = v0 }

//  V6_vS32Ub_npred_pi
//  if (!Pv4) vmemu(Rx32++#s3)=Vs32
    if (!p0) vmemu(r0++#0)=v0
# CHECK-NEXT: 29a0c0e0 { if (!p0) vmemu(r0++#0) = v0 }

//  V6_vS32Ub_npred_ppu
//  if (!Pv4) vmemu(Rx32++Mu2)=Vs32
    if (!p0) vmemu(r0++m0)=v0
# CHECK-NEXT: 2ba0c0e0 { if (!p0) vmemu(r0++m0) = v0 }

//  V6_vS32Ub_pi
//  vmemu(Rx32++#s3)=Vs32
    vmemu(r0++#0)=v0
# CHECK-NEXT: 2920c0e0 { vmemu(r0++#0) = v0 }

//  V6_vS32Ub_ppu
//  vmemu(Rx32++Mu2)=Vs32
    vmemu(r0++m0)=v0
# CHECK-NEXT: 2b20c0e0 { vmemu(r0++m0) = v0 }

//  V6_vS32Ub_pred_ai
//  if (Pv4) vmemu(Rt32+#s4)=Vs32
    if (p0) vmemu(r0+#0)=v0
# CHECK-NEXT: 28a0c0c0 { if (p0) vmemu(r0+#0) = v0 }

//  V6_vS32Ub_pred_pi
//  if (Pv4) vmemu(Rx32++#s3)=Vs32
    if (p0) vmemu(r0++#0)=v0
# CHECK-NEXT: 29a0c0c0 { if (p0) vmemu(r0++#0) = v0 }

//  V6_vS32Ub_pred_ppu
//  if (Pv4) vmemu(Rx32++Mu2)=Vs32
    if (p0) vmemu(r0++m0)=v0
# CHECK-NEXT: 2ba0c0c0 { if (p0) vmemu(r0++m0) = v0 }

//  V6_vS32b_ai
//  vmem(Rt32+#s4)=Vs32
    vmem(r0+#0)=v0
# CHECK-NEXT: 2820c000 { vmem(r0+#0) = v0 }

//  V6_vS32b_new_ai
//  vmem(Rt32+#s4)=Os8.new
{
   v0 = v1
   vmem(r0+#0)=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2820c022   vmem(r0+#0) = v0.new }

//  V6_vS32b_new_npred_ai
//  if (!Pv4) vmem(Rt32+#s4)=Os8.new
{
   v0 = v1
   if (!p0) vmem(r0+#0)=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 28a0c06a   if (!p0) vmem(r0+#0) = v0.new }

//  V6_vS32b_new_npred_pi
//  if (!Pv4) vmem(Rx32++#s3)=Os8.new
{
   v0 = v1
   if (!p0) vmem(r0++#0)=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 29a0c06a   if (!p0) vmem(r0++#0) = v0.new }

//  V6_vS32b_new_npred_ppu
//  if (!Pv4) vmem(Rx32++Mu2)=Os8.new
{
   v0 = v1
   if (!p0) vmem(r0++m0)=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2ba0c06a   if (!p0) vmem(r0++m0) = v0.new }

//  V6_vS32b_new_pi
//  vmem(Rx32++#s3)=Os8.new
{
   v0 = v1
   vmem(r0++#0)=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2920c022   vmem(r0++#0) = v0.new }

//  V6_vS32b_new_ppu
//  vmem(Rx32++Mu2)=Os8.new
{
   v0 = v1
   vmem(r0++m0)=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2b20c022   vmem(r0++m0) = v0.new }

//  V6_vS32b_new_pred_ai
//  if (Pv4) vmem(Rt32+#s4)=Os8.new
{
   v0 = v1
   if (p0) vmem(r0+#0)=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 28a0c042   if (p0) vmem(r0+#0) = v0.new }

//  V6_vS32b_new_pred_pi
//  if (Pv4) vmem(Rx32++#s3)=Os8.new
{
   v0 = v1
   if (p0) vmem(r0++#0)=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 29a0c042   if (p0) vmem(r0++#0) = v0.new }

//  V6_vS32b_new_pred_ppu
//  if (Pv4) vmem(Rx32++Mu2)=Os8.new
{
   v0 = v1
   if (p0) vmem(r0++m0)=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2ba0c042   if (p0) vmem(r0++m0) = v0.new }

//  V6_vS32b_npred_ai
//  if (!Pv4) vmem(Rt32+#s4)=Vs32
    if (!p0) vmem(r0+#0)=v0
# CHECK-NEXT: 28a0c020 { if (!p0) vmem(r0+#0) = v0 }

//  V6_vS32b_npred_pi
//  if (!Pv4) vmem(Rx32++#s3)=Vs32
    if (!p0) vmem(r0++#0)=v0
# CHECK-NEXT: 29a0c020 { if (!p0) vmem(r0++#0) = v0 }

//  V6_vS32b_npred_ppu
//  if (!Pv4) vmem(Rx32++Mu2)=Vs32
    if (!p0) vmem(r0++m0)=v0
# CHECK-NEXT: 2ba0c020 { if (!p0) vmem(r0++m0) = v0 }

//  V6_vS32b_nqpred_ai
//  if (!Qv4) vmem(Rt32+#s4)=Vs32
    if (!q0) vmem(r0+#0)=v0
# CHECK-NEXT: 2880c020 { if (!q0) vmem(r0+#0) = v0 }

//  V6_vS32b_nqpred_pi
//  if (!Qv4) vmem(Rx32++#s3)=Vs32
    if (!q0) vmem(r0++#0)=v0
# CHECK-NEXT: 2980c020 { if (!q0) vmem(r0++#0) = v0 }

//  V6_vS32b_nqpred_ppu
//  if (!Qv4) vmem(Rx32++Mu2)=Vs32
    if (!q0) vmem(r0++m0)=v0
# CHECK-NEXT: 2b80c020 { if (!q0) vmem(r0++m0) = v0 }

//  V6_vS32b_nt_ai
//  vmem(Rt32+#s4):nt=Vs32
    vmem(r0+#0):nt=v0
# CHECK-NEXT: 2860c000 { vmem(r0+#0):nt = v0 }

//  V6_vS32b_nt_new_ai
//  vmem(Rt32+#s4):nt=Os8.new
{
   v0 = v1
   vmem(r0+#0):nt=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2860c022   vmem(r0+#0):nt = v0.new }

//  V6_vS32b_nt_new_npred_ai
//  if (!Pv4) vmem(Rt32+#s4):nt=Os8.new
{
   v0 = v1
   if (!p0) vmem(r0+#0):nt=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 28e0c07a   if (!p0) vmem(r0+#0):nt = v0.new }

//  V6_vS32b_nt_new_npred_pi
//  if (!Pv4) vmem(Rx32++#s3):nt=Os8.new
{
   v0 = v1
   if (!p0) vmem(r0++#0):nt=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 29e0c07a   if (!p0) vmem(r0++#0):nt = v0.new }

//  V6_vS32b_nt_new_npred_ppu
//  if (!Pv4) vmem(Rx32++Mu2):nt=Os8.new
{
   v0 = v1
   if (!p0) vmem(r0++m0):nt=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2be0c07a   if (!p0) vmem(r0++m0):nt = v0.new }

//  V6_vS32b_nt_new_pi
//  vmem(Rx32++#s3):nt=Os8.new
{
   v0 = v1
   vmem(r0++#0):nt=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2960c022   vmem(r0++#0):nt = v0.new }

//  V6_vS32b_nt_new_ppu
//  vmem(Rx32++Mu2):nt=Os8.new
{
   v0 = v1
   vmem(r0++m0):nt=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2b60c022   vmem(r0++m0):nt = v0.new }

//  V6_vS32b_nt_new_pred_ai
//  if (Pv4) vmem(Rt32+#s4):nt=Os8.new
{
   v0 = v1
   if (p0) vmem(r0+#0):nt=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 28e0c052   if (p0) vmem(r0+#0):nt = v0.new }

//  V6_vS32b_nt_new_pred_pi
//  if (Pv4) vmem(Rx32++#s3):nt=Os8.new
{
   v0 = v1
   if (p0) vmem(r0++#0):nt=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 29e0c052   if (p0) vmem(r0++#0):nt = v0.new }

//  V6_vS32b_nt_new_pred_ppu
//  if (Pv4) vmem(Rx32++Mu2):nt=Os8.new
{
   v0 = v1
   if (p0) vmem(r0++m0):nt=v0.new
}
# CHECK-NEXT: 1e0361e0 { v0 = v1
# CHECK-NEXT: 2be0c052   if (p0) vmem(r0++m0):nt = v0.new }

//  V6_vS32b_nt_npred_ai
//  if (!Pv4) vmem(Rt32+#s4):nt=Vs32
    if (!p0) vmem(r0+#0):nt=v0
# CHECK-NEXT: 28e0c020 { if (!p0) vmem(r0+#0):nt = v0 }

//  V6_vS32b_nt_npred_pi
//  if (!Pv4) vmem(Rx32++#s3):nt=Vs32
    if (!p0) vmem(r0++#0):nt=v0
# CHECK-NEXT: 29e0c020 { if (!p0) vmem(r0++#0):nt = v0 }

//  V6_vS32b_nt_npred_ppu
//  if (!Pv4) vmem(Rx32++Mu2):nt=Vs32
    if (!p0) vmem(r0++m0):nt=v0
# CHECK-NEXT: 2be0c020 { if (!p0) vmem(r0++m0):nt = v0 }

//  V6_vS32b_nt_nqpred_ai
//  if (!Qv4) vmem(Rt32+#s4):nt=Vs32
    if (!q0) vmem(r0+#0):nt=v0
# CHECK-NEXT: 28c0c020 { if (!q0) vmem(r0+#0):nt = v0 }

//  V6_vS32b_nt_nqpred_pi
//  if (!Qv4) vmem(Rx32++#s3):nt=Vs32
    if (!q0) vmem(r0++#0):nt=v0
# CHECK-NEXT: 29c0c020 { if (!q0) vmem(r0++#0):nt = v0 }

//  V6_vS32b_nt_nqpred_ppu
//  if (!Qv4) vmem(Rx32++Mu2):nt=Vs32
    if (!q0) vmem(r0++m0):nt=v0
# CHECK-NEXT: 2bc0c020 { if (!q0) vmem(r0++m0):nt = v0 }

//  V6_vS32b_nt_pi
//  vmem(Rx32++#s3):nt=Vs32
    vmem(r0++#0):nt=v0
# CHECK-NEXT: 2960c000 { vmem(r0++#0):nt = v0 }

//  V6_vS32b_nt_ppu
//  vmem(Rx32++Mu2):nt=Vs32
    vmem(r0++m0):nt=v0
# CHECK-NEXT: 2b60c000 { vmem(r0++m0):nt = v0 }

//  V6_vS32b_nt_pred_ai
//  if (Pv4) vmem(Rt32+#s4):nt=Vs32
    if (p0) vmem(r0+#0):nt=v0
# CHECK-NEXT: 28e0c000 { if (p0) vmem(r0+#0):nt = v0 }

//  V6_vS32b_nt_pred_pi
//  if (Pv4) vmem(Rx32++#s3):nt=Vs32
    if (p0) vmem(r0++#0):nt=v0
# CHECK-NEXT: 29e0c000 { if (p0) vmem(r0++#0):nt = v0 }

//  V6_vS32b_nt_pred_ppu
//  if (Pv4) vmem(Rx32++Mu2):nt=Vs32
    if (p0) vmem(r0++m0):nt=v0
# CHECK-NEXT: 2be0c000 { if (p0) vmem(r0++m0):nt = v0 }

//  V6_vS32b_nt_qpred_ai
//  if (Qv4) vmem(Rt32+#s4):nt=Vs32
    if (q0) vmem(r0+#0):nt=v0
# CHECK-NEXT: 28c0c000 { if (q0) vmem(r0+#0):nt = v0 }

//  V6_vS32b_nt_qpred_pi
//  if (Qv4) vmem(Rx32++#s3):nt=Vs32
    if (q0) vmem(r0++#0):nt=v0
# CHECK-NEXT: 29c0c000 { if (q0) vmem(r0++#0):nt = v0 }

//  V6_vS32b_nt_qpred_ppu
//  if (Qv4) vmem(Rx32++Mu2):nt=Vs32
    if (q0) vmem(r0++m0):nt=v0
# CHECK-NEXT: 2bc0c000 { if (q0) vmem(r0++m0):nt = v0 }

//  V6_vS32b_pi
//  vmem(Rx32++#s3)=Vs32
    vmem(r0++#0)=v0
# CHECK-NEXT: 2920c000 { vmem(r0++#0) = v0 }

//  V6_vS32b_ppu
//  vmem(Rx32++Mu2)=Vs32
    vmem(r0++m0)=v0
# CHECK-NEXT: 2b20c000 { vmem(r0++m0) = v0 }

//  V6_vS32b_pred_ai
//  if (Pv4) vmem(Rt32+#s4)=Vs32
    if (p0) vmem(r0+#0)=v0
# CHECK-NEXT: 28a0c000 { if (p0) vmem(r0+#0) = v0 }

//  V6_vS32b_pred_pi
//  if (Pv4) vmem(Rx32++#s3)=Vs32
    if (p0) vmem(r0++#0)=v0
# CHECK-NEXT: 29a0c000 { if (p0) vmem(r0++#0) = v0 }

//  V6_vS32b_pred_ppu
//  if (Pv4) vmem(Rx32++Mu2)=Vs32
    if (p0) vmem(r0++m0)=v0
# CHECK-NEXT: 2ba0c000 { if (p0) vmem(r0++m0) = v0 }

//  V6_vS32b_qpred_ai
//  if (Qv4) vmem(Rt32+#s4)=Vs32
    if (q0) vmem(r0+#0)=v0
# CHECK-NEXT: 2880c000 { if (q0) vmem(r0+#0) = v0 }

//  V6_vS32b_qpred_pi
//  if (Qv4) vmem(Rx32++#s3)=Vs32
    if (q0) vmem(r0++#0)=v0
# CHECK-NEXT: 2980c000 { if (q0) vmem(r0++#0) = v0 }

//  V6_vS32b_qpred_ppu
//  if (Qv4) vmem(Rx32++Mu2)=Vs32
    if (q0) vmem(r0++m0)=v0
# CHECK-NEXT: 2b80c000 { if (q0) vmem(r0++m0) = v0 }

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

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

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

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

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

//  V6_vabsdiffh
//  Vd32.uh=vabsdiff(Vu32.h,Vv32.h)
    v0.uh=vabsdiff(v0.h,v0.h)
# CHECK-NEXT: 1cc0c020 { v0.uh = vabsdiff(v0.h,v0.h) }

//  V6_vabsdiffub
//  Vd32.ub=vabsdiff(Vu32.ub,Vv32.ub)
    v0.ub=vabsdiff(v0.ub,v0.ub)
# CHECK-NEXT: 1cc0c000 { v0.ub = vabsdiff(v0.ub,v0.ub) }

//  V6_vabsdiffuh
//  Vd32.uh=vabsdiff(Vu32.uh,Vv32.uh)
    v0.uh=vabsdiff(v0.uh,v0.uh)
# CHECK-NEXT: 1cc0c040 { v0.uh = vabsdiff(v0.uh,v0.uh) }

//  V6_vabsdiffw
//  Vd32.uw=vabsdiff(Vu32.w,Vv32.w)
    v0.uw=vabsdiff(v0.w,v0.w)
# CHECK-NEXT: 1cc0c060 { v0.uw = vabsdiff(v0.w,v0.w) }

//  V6_vabsh
//  Vd32.h=vabs(Vu32.h)
    v0.h=vabs(v0.h)
# CHECK-NEXT: 1e00c000 { v0.h = vabs(v0.h) }

//  V6_vabsh_sat
//  Vd32.h=vabs(Vu32.h):sat
    v0.h=vabs(v0.h):sat
# CHECK-NEXT: 1e00c020 { v0.h = vabs(v0.h):sat }

//  V6_vabsw
//  Vd32.w=vabs(Vu32.w)
    v0.w=vabs(v0.w)
# CHECK-NEXT: 1e00c040 { v0.w = vabs(v0.w) }

//  V6_vabsw_sat
//  Vd32.w=vabs(Vu32.w):sat
    v0.w=vabs(v0.w):sat
# CHECK-NEXT: 1e00c060 { v0.w = vabs(v0.w):sat }

//  V6_vaddb
//  Vd32.b=vadd(Vu32.b,Vv32.b)
    v0.b=vadd(v0.b,v0.b)
# CHECK-NEXT: 1fa0c0c0 { v0.b = vadd(v0.b,v0.b) }

//  V6_vaddb_dv
//  Vdd32.b=vadd(Vuu32.b,Vvv32.b)
    v1:0.b=vadd(v1:0.b,v1:0.b)
# CHECK-NEXT: 1c60c080 { v1:0.b = vadd(v1:0.b,v1:0.b) }

//  V6_vaddbnq
//  if (!Qv4) Vx32.b+=Vu32.b
    if (!q0) v0.b+=v0.b
# CHECK-NEXT: 1e01e060 { if (!q0) v0.b += v0.b }

//  V6_vaddbq
//  if (Qv4) Vx32.b+=Vu32.b
    if (q0) v0.b+=v0.b
# CHECK-NEXT: 1e01e000 { if (q0) v0.b += v0.b }

//  V6_vaddbsat
//  Vd32.b=vadd(Vu32.b,Vv32.b):sat
    v0.b=vadd(v0.b,v0.b):sat
# CHECK-NEXT: 1f00c000 { v0.b = vadd(v0.b,v0.b):sat }

//  V6_vaddbsat_dv
//  Vdd32.b=vadd(Vuu32.b,Vvv32.b):sat
    v1:0.b=vadd(v1:0.b,v1:0.b):sat
# CHECK-NEXT: 1ea0c000 { v1:0.b = vadd(v1:0.b,v1:0.b):sat }

//  V6_vaddcarry
//  Vd32.w=vadd(Vu32.w,Vv32.w,Qx4):carry
    v0.w=vadd(v0.w,v0.w,q0):carry
# CHECK-NEXT: 1ca0e000 { v0.w = vadd(v0.w,v0.w,q0):carry }

//  V6_vaddcarryo
//  Vd32.w,Qe4=vadd(Vu32.w,Vv32.w):carry
    v0.w,q0=vadd(v0.w,v0.w):carry
# CHECK-NEXT: 1da0e000 { v0.w,q0 = vadd(v0.w,v0.w):carry }

//  V6_vaddcarrysat
//  Vd32.w=vadd(Vu32.w,Vv32.w,Qs4):carry:sat
    v0.w=vadd(v0.w,v0.w,q0):carry:sat
# CHECK-NEXT: 1d80e000 { v0.w = vadd(v0.w,v0.w,q0):carry:sat }

//  V6_vaddclbh
//  Vd32.h=vadd(vclb(Vu32.h),Vv32.h)
    v0.h=vadd(vclb(v0.h),v0.h)
# CHECK-NEXT: 1f00e000 { v0.h = vadd(vclb(v0.h),v0.h) }

//  V6_vaddclbw
//  Vd32.w=vadd(vclb(Vu32.w),Vv32.w)
    v0.w=vadd(vclb(v0.w),v0.w)
# CHECK-NEXT: 1f00e020 { v0.w = vadd(vclb(v0.w),v0.w) }

//  V6_vaddh
//  Vd32.h=vadd(Vu32.h,Vv32.h)
    v0.h=vadd(v0.h,v0.h)
# CHECK-NEXT: 1fa0c0e0 { v0.h = vadd(v0.h,v0.h) }

//  V6_vaddh_dv
//  Vdd32.h=vadd(Vuu32.h,Vvv32.h)
    v1:0.h=vadd(v1:0.h,v1:0.h)
# CHECK-NEXT: 1c60c0a0 { v1:0.h = vadd(v1:0.h,v1:0.h) }

//  V6_vaddhnq
//  if (!Qv4) Vx32.h+=Vu32.h
    if (!q0) v0.h+=v0.h
# CHECK-NEXT: 1e01e080 { if (!q0) v0.h += v0.h }

//  V6_vaddhq
//  if (Qv4) Vx32.h+=Vu32.h
    if (q0) v0.h+=v0.h
# CHECK-NEXT: 1e01e020 { if (q0) v0.h += v0.h }

//  V6_vaddhsat
//  Vd32.h=vadd(Vu32.h,Vv32.h):sat
    v0.h=vadd(v0.h,v0.h):sat
# CHECK-NEXT: 1c40c060 { v0.h = vadd(v0.h,v0.h):sat }

//  V6_vaddhsat_dv
//  Vdd32.h=vadd(Vuu32.h,Vvv32.h):sat
    v1:0.h=vadd(v1:0.h,v1:0.h):sat
# CHECK-NEXT: 1c80c020 { v1:0.h = vadd(v1:0.h,v1:0.h):sat }

//  V6_vaddhw
//  Vdd32.w=vadd(Vu32.h,Vv32.h)
    v1:0.w=vadd(v0.h,v0.h)
# CHECK-NEXT: 1ca0c080 { v1:0.w = vadd(v0.h,v0.h) }

//  V6_vaddhw_acc
//  Vxx32.w+=vadd(Vu32.h,Vv32.h)
    v1:0.w+=vadd(v0.h,v0.h)
# CHECK-NEXT: 1c20e040 { v1:0.w += vadd(v0.h,v0.h) }

//  V6_vaddubh
//  Vdd32.h=vadd(Vu32.ub,Vv32.ub)
    v1:0.h=vadd(v0.ub,v0.ub)
# CHECK-NEXT: 1ca0c040 { v1:0.h = vadd(v0.ub,v0.ub) }

//  V6_vaddubh_acc
//  Vxx32.h+=vadd(Vu32.ub,Vv32.ub)
    v1:0.h+=vadd(v0.ub,v0.ub)
# CHECK-NEXT: 1c40e0a0 { v1:0.h += vadd(v0.ub,v0.ub) }

//  V6_vaddubsat
//  Vd32.ub=vadd(Vu32.ub,Vv32.ub):sat
    v0.ub=vadd(v0.ub,v0.ub):sat
# CHECK-NEXT: 1c40c020 { v0.ub = vadd(v0.ub,v0.ub):sat }

//  V6_vaddubsat_dv
//  Vdd32.ub=vadd(Vuu32.ub,Vvv32.ub):sat
    v1:0.ub=vadd(v1:0.ub,v1:0.ub):sat
# CHECK-NEXT: 1c60c0e0 { v1:0.ub = vadd(v1:0.ub,v1:0.ub):sat }

//  V6_vaddububb_sat
//  Vd32.ub=vadd(Vu32.ub,Vv32.b):sat
    v0.ub=vadd(v0.ub,v0.b):sat
# CHECK-NEXT: 1ea0c080 { v0.ub = vadd(v0.ub,v0.b):sat }

//  V6_vadduhsat
//  Vd32.uh=vadd(Vu32.uh,Vv32.uh):sat
    v0.uh=vadd(v0.uh,v0.uh):sat
# CHECK-NEXT: 1c40c040 { v0.uh = vadd(v0.uh,v0.uh):sat }

//  V6_vadduhsat_dv
//  Vdd32.uh=vadd(Vuu32.uh,Vvv32.uh):sat
    v1:0.uh=vadd(v1:0.uh,v1:0.uh):sat
# CHECK-NEXT: 1c80c000 { v1:0.uh = vadd(v1:0.uh,v1:0.uh):sat }

//  V6_vadduhw
//  Vdd32.w=vadd(Vu32.uh,Vv32.uh)
    v1:0.w=vadd(v0.uh,v0.uh)
# CHECK-NEXT: 1ca0c060 { v1:0.w = vadd(v0.uh,v0.uh) }

//  V6_vadduhw_acc
//  Vxx32.w+=vadd(Vu32.uh,Vv32.uh)
    v1:0.w+=vadd(v0.uh,v0.uh)
# CHECK-NEXT: 1c40e080 { v1:0.w += vadd(v0.uh,v0.uh) }

//  V6_vadduwsat
//  Vd32.uw=vadd(Vu32.uw,Vv32.uw):sat
    v0.uw=vadd(v0.uw,v0.uw):sat
# CHECK-NEXT: 1f60c020 { v0.uw = vadd(v0.uw,v0.uw):sat }

//  V6_vadduwsat_dv
//  Vdd32.uw=vadd(Vuu32.uw,Vvv32.uw):sat
    v1:0.uw=vadd(v1:0.uw,v1:0.uw):sat
# CHECK-NEXT: 1ea0c040 { v1:0.uw = vadd(v1:0.uw,v1:0.uw):sat }

//  V6_vaddw
//  Vd32.w=vadd(Vu32.w,Vv32.w)
    v0.w=vadd(v0.w,v0.w)
# CHECK-NEXT: 1c40c000 { v0.w = vadd(v0.w,v0.w) }

//  V6_vaddw_dv
//  Vdd32.w=vadd(Vuu32.w,Vvv32.w)
    v1:0.w=vadd(v1:0.w,v1:0.w)
# CHECK-NEXT: 1c60c0c0 { v1:0.w = vadd(v1:0.w,v1:0.w) }

//  V6_vaddwnq
//  if (!Qv4) Vx32.w+=Vu32.w
    if (!q0) v0.w+=v0.w
# CHECK-NEXT: 1e01e0a0 { if (!q0) v0.w += v0.w }

//  V6_vaddwq
//  if (Qv4) Vx32.w+=Vu32.w
    if (q0) v0.w+=v0.w
# CHECK-NEXT: 1e01e040 { if (q0) v0.w += v0.w }

//  V6_vaddwsat
//  Vd32.w=vadd(Vu32.w,Vv32.w):sat
    v0.w=vadd(v0.w,v0.w):sat
# CHECK-NEXT: 1c40c080 { v0.w = vadd(v0.w,v0.w):sat }

//  V6_vaddwsat_dv
//  Vdd32.w=vadd(Vuu32.w,Vvv32.w):sat
    v1:0.w=vadd(v1:0.w,v1:0.w):sat
# CHECK-NEXT: 1c80c040 { v1:0.w = vadd(v1:0.w,v1:0.w):sat }

//  V6_valignb
//  Vd32=valign(Vu32,Vv32,Rt8)
    v0=valign(v0,v0,r0)
# CHECK-NEXT: 1b00c000 { v0 = valign(v0,v0,r0) }

//  V6_valignbi
//  Vd32=valign(Vu32,Vv32,#u3)
    v0=valign(v0,v0,#0)
# CHECK-NEXT: 1e20e000 { v0 = valign(v0,v0,#0) }

//  V6_vand
//  Vd32=vand(Vu32,Vv32)
    v0=vand(v0,v0)
# CHECK-NEXT: 1c20c0a0 { v0 = vand(v0,v0) }

//  V6_vandnqrt
//  Vd32=vand(!Qu4,Rt32)
    v0=vand(!q0,r0)
# CHECK-NEXT: 19a0c4a0 { v0 = vand(!q0,r0) }

//  V6_vandnqrt_acc
//  Vx32|=vand(!Qu4,Rt32)
    v0|=vand(!q0,r0)
# CHECK-NEXT: 1960e460 { v0 |= vand(!q0,r0) }

//  V6_vandqrt
//  Vd32=vand(Qu4,Rt32)
    v0=vand(q0,r0)
# CHECK-NEXT: 19a0c0a0 { v0 = vand(q0,r0) }

//  V6_vandqrt_acc
//  Vx32|=vand(Qu4,Rt32)
    v0|=vand(q0,r0)
# CHECK-NEXT: 1960e060 { v0 |= vand(q0,r0) }

//  V6_vandvnqv
//  Vd32=vand(!Qv4,Vu32)
    v0=vand(!q0,v0)
# CHECK-NEXT: 1e03e020 { v0 = vand(!q0,v0) }

//  V6_vandvqv
//  Vd32=vand(Qv4,Vu32)
    v0=vand(q0,v0)
# CHECK-NEXT: 1e03e000 { v0 = vand(q0,v0) }

//  V6_vandvrt
//  Qd4=vand(Vu32,Rt32)
    q0=vand(v0,r0)
# CHECK-NEXT: 19a0c048 { q0 = vand(v0,r0) }

//  V6_vandvrt_acc
//  Qx4|=vand(Vu32,Rt32)
    q0|=vand(v0,r0)
# CHECK-NEXT: 1960e080 { q0 |= vand(v0,r0) }

//  V6_vaslh
//  Vd32.h=vasl(Vu32.h,Rt32)
    v0.h=vasl(v0.h,r0)
# CHECK-NEXT: 1980c000 { v0.h = vasl(v0.h,r0) }

//  V6_vaslh_acc
//  Vx32.h+=vasl(Vu32.h,Rt32)
    v0.h+=vasl(v0.h,r0)
# CHECK-NEXT: 19a0e0a0 { v0.h += vasl(v0.h,r0) }

//  V6_vaslhv
//  Vd32.h=vasl(Vu32.h,Vv32.h)
    v0.h=vasl(v0.h,v0.h)
# CHECK-NEXT: 1fa0c0a0 { v0.h = vasl(v0.h,v0.h) }

//  V6_vaslw
//  Vd32.w=vasl(Vu32.w,Rt32)
    v0.w=vasl(v0.w,r0)
# CHECK-NEXT: 1960c0e0 { v0.w = vasl(v0.w,r0) }

//  V6_vaslw_acc
//  Vx32.w+=vasl(Vu32.w,Rt32)
    v0.w+=vasl(v0.w,r0)
# CHECK-NEXT: 1960e040 { v0.w += vasl(v0.w,r0) }

//  V6_vaslwv
//  Vd32.w=vasl(Vu32.w,Vv32.w)
    v0.w=vasl(v0.w,v0.w)
# CHECK-NEXT: 1fa0c080 { v0.w = vasl(v0.w,v0.w) }

//  V6_vasr_into
//  Vxx32.w=vasrinto(Vu32.w,Vv32.w)
    v1:0.w=vasrinto(v0.w,v0.w)
# CHECK-NEXT: 1aa0e0e0 { v1:0.w = vasrinto(v0.w,v0.w) }

//  V6_vasrh
//  Vd32.h=vasr(Vu32.h,Rt32)
    v0.h=vasr(v0.h,r0)
# CHECK-NEXT: 1960c0c0 { v0.h = vasr(v0.h,r0) }

//  V6_vasrh_acc
//  Vx32.h+=vasr(Vu32.h,Rt32)
    v0.h+=vasr(v0.h,r0)
# CHECK-NEXT: 1980e0e0 { v0.h += vasr(v0.h,r0) }

//  V6_vasrhbrndsat
//  Vd32.b=vasr(Vu32.h,Vv32.h,Rt8):rnd:sat
    v0.b=vasr(v0.h,v0.h,r0):rnd:sat
# CHECK-NEXT: 1b00e000 { v0.b = vasr(v0.h,v0.h,r0):rnd:sat }

//  V6_vasrhbsat
//  Vd32.b=vasr(Vu32.h,Vv32.h,Rt8):sat
    v0.b=vasr(v0.h,v0.h,r0):sat
# CHECK-NEXT: 1800c000 { v0.b = vasr(v0.h,v0.h,r0):sat }

//  V6_vasrhubrndsat
//  Vd32.ub=vasr(Vu32.h,Vv32.h,Rt8):rnd:sat
    v0.ub=vasr(v0.h,v0.h,r0):rnd:sat
# CHECK-NEXT: 1b00c0e0 { v0.ub = vasr(v0.h,v0.h,r0):rnd:sat }

//  V6_vasrhubsat
//  Vd32.ub=vasr(Vu32.h,Vv32.h,Rt8):sat
    v0.ub=vasr(v0.h,v0.h,r0):sat
# CHECK-NEXT: 1b00c0c0 { v0.ub = vasr(v0.h,v0.h,r0):sat }

//  V6_vasrhv
//  Vd32.h=vasr(Vu32.h,Vv32.h)
    v0.h=vasr(v0.h,v0.h)
# CHECK-NEXT: 1fa0c060 { v0.h = vasr(v0.h,v0.h) }

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

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

//  V6_vasruwuhrndsat
//  Vd32.uh=vasr(Vu32.uw,Vv32.uw,Rt8):rnd:sat
    v0.uh=vasr(v0.uw,v0.uw,r0):rnd:sat
# CHECK-NEXT: 1800c020 { v0.uh = vasr(v0.uw,v0.uw,r0):rnd:sat }

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

//  V6_vasrw
//  Vd32.w=vasr(Vu32.w,Rt32)
    v0.w=vasr(v0.w,r0)
# CHECK-NEXT: 1960c0a0 { v0.w = vasr(v0.w,r0) }

//  V6_vasrw_acc
//  Vx32.w+=vasr(Vu32.w,Rt32)
    v0.w+=vasr(v0.w,r0)
# CHECK-NEXT: 1960e0a0 { v0.w += vasr(v0.w,r0) }

//  V6_vasrwh
//  Vd32.h=vasr(Vu32.w,Vv32.w,Rt8)
    v0.h=vasr(v0.w,v0.w,r0)
# CHECK-NEXT: 1b00c040 { v0.h = vasr(v0.w,v0.w,r0) }

//  V6_vasrwhrndsat
//  Vd32.h=vasr(Vu32.w,Vv32.w,Rt8):rnd:sat
    v0.h=vasr(v0.w,v0.w,r0):rnd:sat
# CHECK-NEXT: 1b00c080 { v0.h = vasr(v0.w,v0.w,r0):rnd:sat }

//  V6_vasrwhsat
//  Vd32.h=vasr(Vu32.w,Vv32.w,Rt8):sat
    v0.h=vasr(v0.w,v0.w,r0):sat
# CHECK-NEXT: 1b00c060 { v0.h = vasr(v0.w,v0.w,r0):sat }

//  V6_vasrwuhrndsat
//  Vd32.uh=vasr(Vu32.w,Vv32.w,Rt8):rnd:sat
    v0.uh=vasr(v0.w,v0.w,r0):rnd:sat
# CHECK-NEXT: 1800c040 { v0.uh = vasr(v0.w,v0.w,r0):rnd:sat }

//  V6_vasrwuhsat
//  Vd32.uh=vasr(Vu32.w,Vv32.w,Rt8):sat
    v0.uh=vasr(v0.w,v0.w,r0):sat
# CHECK-NEXT: 1b00c0a0 { v0.uh = vasr(v0.w,v0.w,r0):sat }

//  V6_vasrwv
//  Vd32.w=vasr(Vu32.w,Vv32.w)
    v0.w=vasr(v0.w,v0.w)
# CHECK-NEXT: 1fa0c000 { v0.w = vasr(v0.w,v0.w) }

//  V6_vassign
//  Vd32=Vu32
    v0=v0
# CHECK-NEXT: 1e03e0e0 { v0 = v0 }

//  V6_vavgb
//  Vd32.b=vavg(Vu32.b,Vv32.b)
    v0.b=vavg(v0.b,v0.b)
# CHECK-NEXT: 1f00e080 { v0.b = vavg(v0.b,v0.b) }

//  V6_vavgbrnd
//  Vd32.b=vavg(Vu32.b,Vv32.b):rnd
    v0.b=vavg(v0.b,v0.b):rnd
# CHECK-NEXT: 1f00e0a0 { v0.b = vavg(v0.b,v0.b):rnd }

//  V6_vavgh
//  Vd32.h=vavg(Vu32.h,Vv32.h)
    v0.h=vavg(v0.h,v0.h)
# CHECK-NEXT: 1cc0c0c0 { v0.h = vavg(v0.h,v0.h) }

//  V6_vavghrnd
//  Vd32.h=vavg(Vu32.h,Vv32.h):rnd
    v0.h=vavg(v0.h,v0.h):rnd
# CHECK-NEXT: 1ce0c0a0 { v0.h = vavg(v0.h,v0.h):rnd }

//  V6_vavgub
//  Vd32.ub=vavg(Vu32.ub,Vv32.ub)
    v0.ub=vavg(v0.ub,v0.ub)
# CHECK-NEXT: 1cc0c080 { v0.ub = vavg(v0.ub,v0.ub) }

//  V6_vavgubrnd
//  Vd32.ub=vavg(Vu32.ub,Vv32.ub):rnd
    v0.ub=vavg(v0.ub,v0.ub):rnd
# CHECK-NEXT: 1ce0c060 { v0.ub = vavg(v0.ub,v0.ub):rnd }

//  V6_vavguh
//  Vd32.uh=vavg(Vu32.uh,Vv32.uh)
    v0.uh=vavg(v0.uh,v0.uh)
# CHECK-NEXT: 1cc0c0a0 { v0.uh = vavg(v0.uh,v0.uh) }

//  V6_vavguhrnd
//  Vd32.uh=vavg(Vu32.uh,Vv32.uh):rnd
    v0.uh=vavg(v0.uh,v0.uh):rnd
# CHECK-NEXT: 1ce0c080 { v0.uh = vavg(v0.uh,v0.uh):rnd }

//  V6_vavguw
//  Vd32.uw=vavg(Vu32.uw,Vv32.uw)
    v0.uw=vavg(v0.uw,v0.uw)
# CHECK-NEXT: 1f00e040 { v0.uw = vavg(v0.uw,v0.uw) }

//  V6_vavguwrnd
//  Vd32.uw=vavg(Vu32.uw,Vv32.uw):rnd
    v0.uw=vavg(v0.uw,v0.uw):rnd
# CHECK-NEXT: 1f00e060 { v0.uw = vavg(v0.uw,v0.uw):rnd }

//  V6_vavgw
//  Vd32.w=vavg(Vu32.w,Vv32.w)
    v0.w=vavg(v0.w,v0.w)
# CHECK-NEXT: 1cc0c0e0 { v0.w = vavg(v0.w,v0.w) }

//  V6_vavgwrnd
//  Vd32.w=vavg(Vu32.w,Vv32.w):rnd
    v0.w=vavg(v0.w,v0.w):rnd
# CHECK-NEXT: 1ce0c0c0 { v0.w = vavg(v0.w,v0.w):rnd }

//  V6_vccombine
//  if (Ps4) Vdd32=vcombine(Vu32,Vv32)
    if (p0) v1:0=vcombine(v0,v0)
# CHECK-NEXT: 1a60c000 { if (p0) v1:0 = vcombine(v0,v0) }

//  V6_vcl0h
//  Vd32.uh=vcl0(Vu32.uh)
    v0.uh=vcl0(v0.uh)
# CHECK-NEXT: 1e02c0e0 { v0.uh = vcl0(v0.uh) }

//  V6_vcl0w
//  Vd32.uw=vcl0(Vu32.uw)
    v0.uw=vcl0(v0.uw)
# CHECK-NEXT: 1e02c0a0 { v0.uw = vcl0(v0.uw) }

//  V6_vcmov
//  if (Ps4) Vd32=Vu32
    if (p0) v0=v0
# CHECK-NEXT: 1a00c000 { if (p0) v0 = v0 }

//  V6_vcombine
//  Vdd32=vcombine(Vu32,Vv32)
    v1:0=vcombine(v0,v0)
# CHECK-NEXT: 1f40c0e0 { v1:0 = vcombine(v0,v0) }

//  V6_vdeal
//  vdeal(Vy32,Vx32,Rt32)
    vdeal(v0,v0,r0)
# CHECK-NEXT: 19e0e040 { vdeal(v0,v0,r0) }

//  V6_vdealb
//  Vd32.b=vdeal(Vu32.b)
    v0.b=vdeal(v0.b)
# CHECK-NEXT: 1e00c0e0 { v0.b = vdeal(v0.b) }

//  V6_vdealb4w
//  Vd32.b=vdeale(Vu32.b,Vv32.b)
    v0.b=vdeale(v0.b,v0.b)
# CHECK-NEXT: 1f20c0e0 { v0.b = vdeale(v0.b,v0.b) }

//  V6_vdealh
//  Vd32.h=vdeal(Vu32.h)
    v0.h=vdeal(v0.h)
# CHECK-NEXT: 1e00c0c0 { v0.h = vdeal(v0.h) }

//  V6_vdealvdd
//  Vdd32=vdeal(Vu32,Vv32,Rt8)
    v1:0=vdeal(v0,v0,r0)
# CHECK-NEXT: 1b00e080 { v1:0 = vdeal(v0,v0,r0) }

//  V6_vdelta
//  Vd32=vdelta(Vu32,Vv32)
    v0=vdelta(v0,v0)
# CHECK-NEXT: 1f20c020 { v0 = vdelta(v0,v0) }

//  V6_vdmpybus
//  Vd32.h=vdmpy(Vu32.ub,Rt32.b)
    v0.h=vdmpy(v0.ub,r0.b)
# CHECK-NEXT: 1900c0c0 { v0.h = vdmpy(v0.ub,r0.b) }

//  V6_vdmpybus_acc
//  Vx32.h+=vdmpy(Vu32.ub,Rt32.b)
    v0.h+=vdmpy(v0.ub,r0.b)
# CHECK-NEXT: 1900e0c0 { v0.h += vdmpy(v0.ub,r0.b) }

//  V6_vdmpybus_dv
//  Vdd32.h=vdmpy(Vuu32.ub,Rt32.b)
    v1:0.h=vdmpy(v1:0.ub,r0.b)
# CHECK-NEXT: 1900c0e0 { v1:0.h = vdmpy(v1:0.ub,r0.b) }

//  V6_vdmpybus_dv_acc
//  Vxx32.h+=vdmpy(Vuu32.ub,Rt32.b)
    v1:0.h+=vdmpy(v1:0.ub,r0.b)
# CHECK-NEXT: 1900e0e0 { v1:0.h += vdmpy(v1:0.ub,r0.b) }

//  V6_vdmpyhb
//  Vd32.w=vdmpy(Vu32.h,Rt32.b)
    v0.w=vdmpy(v0.h,r0.b)
# CHECK-NEXT: 1900c040 { v0.w = vdmpy(v0.h,r0.b) }

//  V6_vdmpyhb_acc
//  Vx32.w+=vdmpy(Vu32.h,Rt32.b)
    v0.w+=vdmpy(v0.h,r0.b)
# CHECK-NEXT: 1900e060 { v0.w += vdmpy(v0.h,r0.b) }

//  V6_vdmpyhb_dv
//  Vdd32.w=vdmpy(Vuu32.h,Rt32.b)
    v1:0.w=vdmpy(v1:0.h,r0.b)
# CHECK-NEXT: 1920c080 { v1:0.w = vdmpy(v1:0.h,r0.b) }

//  V6_vdmpyhb_dv_acc
//  Vxx32.w+=vdmpy(Vuu32.h,Rt32.b)
    v1:0.w+=vdmpy(v1:0.h,r0.b)
# CHECK-NEXT: 1920e080 { v1:0.w += vdmpy(v1:0.h,r0.b) }

//  V6_vdmpyhisat
//  Vd32.w=vdmpy(Vuu32.h,Rt32.h):sat
    v0.w=vdmpy(v1:0.h,r0.h):sat
# CHECK-NEXT: 1920c060 { v0.w = vdmpy(v1:0.h,r0.h):sat }

//  V6_vdmpyhisat_acc
//  Vx32.w+=vdmpy(Vuu32.h,Rt32.h):sat
    v0.w+=vdmpy(v1:0.h,r0.h):sat
# CHECK-NEXT: 1920e040 { v0.w += vdmpy(v1:0.h,r0.h):sat }

//  V6_vdmpyhsat
//  Vd32.w=vdmpy(Vu32.h,Rt32.h):sat
    v0.w=vdmpy(v0.h,r0.h):sat
# CHECK-NEXT: 1920c040 { v0.w = vdmpy(v0.h,r0.h):sat }

//  V6_vdmpyhsat_acc
//  Vx32.w+=vdmpy(Vu32.h,Rt32.h):sat
    v0.w+=vdmpy(v0.h,r0.h):sat
# CHECK-NEXT: 1920e060 { v0.w += vdmpy(v0.h,r0.h):sat }

//  V6_vdmpyhsuisat
//  Vd32.w=vdmpy(Vuu32.h,Rt32.uh,#1):sat
    v0.w=vdmpy(v1:0.h,r0.uh,#1):sat
# CHECK-NEXT: 1920c020 { v0.w = vdmpy(v1:0.h,r0.uh,#1):sat }

//  V6_vdmpyhsuisat_acc
//  Vx32.w+=vdmpy(Vuu32.h,Rt32.uh,#1):sat
    v0.w+=vdmpy(v1:0.h,r0.uh,#1):sat
# CHECK-NEXT: 1920e020 { v0.w += vdmpy(v1:0.h,r0.uh,#1):sat }

//  V6_vdmpyhsusat
//  Vd32.w=vdmpy(Vu32.h,Rt32.uh):sat
    v0.w=vdmpy(v0.h,r0.uh):sat
# CHECK-NEXT: 1920c000 { v0.w = vdmpy(v0.h,r0.uh):sat }

//  V6_vdmpyhsusat_acc
//  Vx32.w+=vdmpy(Vu32.h,Rt32.uh):sat
    v0.w+=vdmpy(v0.h,r0.uh):sat
# CHECK-NEXT: 1920e000 { v0.w += vdmpy(v0.h,r0.uh):sat }

//  V6_vdmpyhvsat
//  Vd32.w=vdmpy(Vu32.h,Vv32.h):sat
    v0.w=vdmpy(v0.h,v0.h):sat
# CHECK-NEXT: 1c00c060 { v0.w = vdmpy(v0.h,v0.h):sat }

//  V6_vdmpyhvsat_acc
//  Vx32.w+=vdmpy(Vu32.h,Vv32.h):sat
    v0.w+=vdmpy(v0.h,v0.h):sat
# CHECK-NEXT: 1c00e060 { v0.w += vdmpy(v0.h,v0.h):sat }

//  V6_vdsaduh
//  Vdd32.uw=vdsad(Vuu32.uh,Rt32.uh)
    v1:0.uw=vdsad(v1:0.uh,r0.uh)
# CHECK-NEXT: 1900c0a0 { v1:0.uw = vdsad(v1:0.uh,r0.uh) }

//  V6_vdsaduh_acc
//  Vxx32.uw+=vdsad(Vuu32.uh,Rt32.uh)
    v1:0.uw+=vdsad(v1:0.uh,r0.uh)
# CHECK-NEXT: 1960e000 { v1:0.uw += vdsad(v1:0.uh,r0.uh) }

//  V6_veqb
//  Qd4=vcmp.eq(Vu32.b,Vv32.b)
    q0=vcmp.eq(v0.b,v0.b)
# CHECK-NEXT: 1f80c000 { q0 = vcmp.eq(v0.b,v0.b) }

//  V6_veqb_and
//  Qx4&=vcmp.eq(Vu32.b,Vv32.b)
    q0&=vcmp.eq(v0.b,v0.b)
# CHECK-NEXT: 1c80e000 { q0 &= vcmp.eq(v0.b,v0.b) }

//  V6_veqb_or
//  Qx4|=vcmp.eq(Vu32.b,Vv32.b)
    q0|=vcmp.eq(v0.b,v0.b)
# CHECK-NEXT: 1c80e040 { q0 |= vcmp.eq(v0.b,v0.b) }

//  V6_veqb_xor
//  Qx4^=vcmp.eq(Vu32.b,Vv32.b)
    q0^=vcmp.eq(v0.b,v0.b)
# CHECK-NEXT: 1c80e080 { q0 ^= vcmp.eq(v0.b,v0.b) }

//  V6_veqh
//  Qd4=vcmp.eq(Vu32.h,Vv32.h)
    q0=vcmp.eq(v0.h,v0.h)
# CHECK-NEXT: 1f80c004 { q0 = vcmp.eq(v0.h,v0.h) }

//  V6_veqh_and
//  Qx4&=vcmp.eq(Vu32.h,Vv32.h)
    q0&=vcmp.eq(v0.h,v0.h)
# CHECK-NEXT: 1c80e004 { q0 &= vcmp.eq(v0.h,v0.h) }

//  V6_veqh_or
//  Qx4|=vcmp.eq(Vu32.h,Vv32.h)
    q0|=vcmp.eq(v0.h,v0.h)
# CHECK-NEXT: 1c80e044 { q0 |= vcmp.eq(v0.h,v0.h) }

//  V6_veqh_xor
//  Qx4^=vcmp.eq(Vu32.h,Vv32.h)
    q0^=vcmp.eq(v0.h,v0.h)
# CHECK-NEXT: 1c80e084 { q0 ^= vcmp.eq(v0.h,v0.h) }

//  V6_veqw
//  Qd4=vcmp.eq(Vu32.w,Vv32.w)
    q0=vcmp.eq(v0.w,v0.w)
# CHECK-NEXT: 1f80c008 { q0 = vcmp.eq(v0.w,v0.w) }

//  V6_veqw_and
//  Qx4&=vcmp.eq(Vu32.w,Vv32.w)
    q0&=vcmp.eq(v0.w,v0.w)
# CHECK-NEXT: 1c80e008 { q0 &= vcmp.eq(v0.w,v0.w) }

//  V6_veqw_or
//  Qx4|=vcmp.eq(Vu32.w,Vv32.w)
    q0|=vcmp.eq(v0.w,v0.w)
# CHECK-NEXT: 1c80e048 { q0 |= vcmp.eq(v0.w,v0.w) }

//  V6_veqw_xor
//  Qx4^=vcmp.eq(Vu32.w,Vv32.w)
    q0^=vcmp.eq(v0.w,v0.w)
# CHECK-NEXT: 1c80e088 { q0 ^= vcmp.eq(v0.w,v0.w) }

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

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

//  V6_vgathermhw
//  vtmp.h=vgather(Rt32,Mu2,Vvv32.w).h
    vtmp.h=vgather(r0,m0,v1:0.w).h
# CHECK-NEXT: 2f00c200 { vtmp.h = vgather(r0,m0,v1:0.w).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-NEXT: 2f00c600 { if (q0) vtmp.h = vgather(r0,m0,v1:0.w).h }

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

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

//  V6_vgtb
//  Qd4=vcmp.gt(Vu32.b,Vv32.b)
    q0=vcmp.gt(v0.b,v0.b)
# CHECK-NEXT: 1f80c010 { q0 = vcmp.gt(v0.b,v0.b) }

//  V6_vgtb_and
//  Qx4&=vcmp.gt(Vu32.b,Vv32.b)
    q0&=vcmp.gt(v0.b,v0.b)
# CHECK-NEXT: 1c80e010 { q0 &= vcmp.gt(v0.b,v0.b) }

//  V6_vgtb_or
//  Qx4|=vcmp.gt(Vu32.b,Vv32.b)
    q0|=vcmp.gt(v0.b,v0.b)
# CHECK-NEXT: 1c80e050 { q0 |= vcmp.gt(v0.b,v0.b) }

//  V6_vgtb_xor
//  Qx4^=vcmp.gt(Vu32.b,Vv32.b)
    q0^=vcmp.gt(v0.b,v0.b)
# CHECK-NEXT: 1c80e090 { q0 ^= vcmp.gt(v0.b,v0.b) }

//  V6_vgth
//  Qd4=vcmp.gt(Vu32.h,Vv32.h)
    q0=vcmp.gt(v0.h,v0.h)
# CHECK-NEXT: 1f80c014 { q0 = vcmp.gt(v0.h,v0.h) }

//  V6_vgth_and
//  Qx4&=vcmp.gt(Vu32.h,Vv32.h)
    q0&=vcmp.gt(v0.h,v0.h)
# CHECK-NEXT: 1c80e014 { q0 &= vcmp.gt(v0.h,v0.h) }

//  V6_vgth_or
//  Qx4|=vcmp.gt(Vu32.h,Vv32.h)
    q0|=vcmp.gt(v0.h,v0.h)
# CHECK-NEXT: 1c80e054 { q0 |= vcmp.gt(v0.h,v0.h) }

//  V6_vgth_xor
//  Qx4^=vcmp.gt(Vu32.h,Vv32.h)
    q0^=vcmp.gt(v0.h,v0.h)
# CHECK-NEXT: 1c80e094 { q0 ^= vcmp.gt(v0.h,v0.h) }

//  V6_vgtub
//  Qd4=vcmp.gt(Vu32.ub,Vv32.ub)
    q0=vcmp.gt(v0.ub,v0.ub)
# CHECK-NEXT: 1f80c020 { q0 = vcmp.gt(v0.ub,v0.ub) }

//  V6_vgtub_and
//  Qx4&=vcmp.gt(Vu32.ub,Vv32.ub)
    q0&=vcmp.gt(v0.ub,v0.ub)
# CHECK-NEXT: 1c80e020 { q0 &= vcmp.gt(v0.ub,v0.ub) }

//  V6_vgtub_or
//  Qx4|=vcmp.gt(Vu32.ub,Vv32.ub)
    q0|=vcmp.gt(v0.ub,v0.ub)
# CHECK-NEXT: 1c80e060 { q0 |= vcmp.gt(v0.ub,v0.ub) }

//  V6_vgtub_xor
//  Qx4^=vcmp.gt(Vu32.ub,Vv32.ub)
    q0^=vcmp.gt(v0.ub,v0.ub)
# CHECK-NEXT: 1c80e0a0 { q0 ^= vcmp.gt(v0.ub,v0.ub) }

//  V6_vgtuh
//  Qd4=vcmp.gt(Vu32.uh,Vv32.uh)
    q0=vcmp.gt(v0.uh,v0.uh)
# CHECK-NEXT: 1f80c024 { q0 = vcmp.gt(v0.uh,v0.uh) }

//  V6_vgtuh_and
//  Qx4&=vcmp.gt(Vu32.uh,Vv32.uh)
    q0&=vcmp.gt(v0.uh,v0.uh)
# CHECK-NEXT: 1c80e024 { q0 &= vcmp.gt(v0.uh,v0.uh) }

//  V6_vgtuh_or
//  Qx4|=vcmp.gt(Vu32.uh,Vv32.uh)
    q0|=vcmp.gt(v0.uh,v0.uh)
# CHECK-NEXT: 1c80e064 { q0 |= vcmp.gt(v0.uh,v0.uh) }

//  V6_vgtuh_xor
//  Qx4^=vcmp.gt(Vu32.uh,Vv32.uh)
    q0^=vcmp.gt(v0.uh,v0.uh)
# CHECK-NEXT: 1c80e0a4 { q0 ^= vcmp.gt(v0.uh,v0.uh) }

//  V6_vgtuw
//  Qd4=vcmp.gt(Vu32.uw,Vv32.uw)
    q0=vcmp.gt(v0.uw,v0.uw)
# CHECK-NEXT: 1f80c028 { q0 = vcmp.gt(v0.uw,v0.uw) }

//  V6_vgtuw_and
//  Qx4&=vcmp.gt(Vu32.uw,Vv32.uw)
    q0&=vcmp.gt(v0.uw,v0.uw)
# CHECK-NEXT: 1c80e028 { q0 &= vcmp.gt(v0.uw,v0.uw) }

//  V6_vgtuw_or
//  Qx4|=vcmp.gt(Vu32.uw,Vv32.uw)
    q0|=vcmp.gt(v0.uw,v0.uw)
# CHECK-NEXT: 1c80e068 { q0 |= vcmp.gt(v0.uw,v0.uw) }

//  V6_vgtuw_xor
//  Qx4^=vcmp.gt(Vu32.uw,Vv32.uw)
    q0^=vcmp.gt(v0.uw,v0.uw)
# CHECK-NEXT: 1c80e0a8 { q0 ^= vcmp.gt(v0.uw,v0.uw) }

//  V6_vgtw
//  Qd4=vcmp.gt(Vu32.w,Vv32.w)
    q0=vcmp.gt(v0.w,v0.w)
# CHECK-NEXT: 1f80c018 { q0 = vcmp.gt(v0.w,v0.w) }

//  V6_vgtw_and
//  Qx4&=vcmp.gt(Vu32.w,Vv32.w)
    q0&=vcmp.gt(v0.w,v0.w)
# CHECK-NEXT: 1c80e018 { q0 &= vcmp.gt(v0.w,v0.w) }

//  V6_vgtw_or
//  Qx4|=vcmp.gt(Vu32.w,Vv32.w)
    q0|=vcmp.gt(v0.w,v0.w)
# CHECK-NEXT: 1c80e058 { q0 |= vcmp.gt(v0.w,v0.w) }

//  V6_vgtw_xor
//  Qx4^=vcmp.gt(Vu32.w,Vv32.w)
    q0^=vcmp.gt(v0.w,v0.w)
# CHECK-NEXT: 1c80e098 { q0 ^= vcmp.gt(v0.w,v0.w) }

//  V6_vhist
//  vhist
    vhist
# CHECK-NEXT: 1e00e080 { vhist }

//  V6_vhistq
//  vhist(Qv4)
    vhist(q0)
# CHECK-NEXT: 1e02e080 { vhist(q0) }

//  V6_vinsertwr
//  Vx32.w=vinsert(Rt32)
    v0.w=vinsert(r0)
# CHECK-NEXT: 19a0e020 { v0.w = vinsert(r0) }

//  V6_vlalignb
//  Vd32=vlalign(Vu32,Vv32,Rt8)
    v0=vlalign(v0,v0,r0)
# CHECK-NEXT: 1b00c020 { v0 = vlalign(v0,v0,r0) }

//  V6_vlalignbi
//  Vd32=vlalign(Vu32,Vv32,#u3)
    v0=vlalign(v0,v0,#0)
# CHECK-NEXT: 1e60e000 { v0 = vlalign(v0,v0,#0) }

//  V6_vlsrb
//  Vd32.ub=vlsr(Vu32.ub,Rt32)
    v0.ub=vlsr(v0.ub,r0)
# CHECK-NEXT: 1980c060 { v0.ub = vlsr(v0.ub,r0) }

//  V6_vlsrh
//  Vd32.uh=vlsr(Vu32.uh,Rt32)
    v0.uh=vlsr(v0.uh,r0)
# CHECK-NEXT: 1980c040 { v0.uh = vlsr(v0.uh,r0) }

//  V6_vlsrhv
//  Vd32.h=vlsr(Vu32.h,Vv32.h)
    v0.h=vlsr(v0.h,v0.h)
# CHECK-NEXT: 1fa0c040 { v0.h = vlsr(v0.h,v0.h) }

//  V6_vlsrw
//  Vd32.uw=vlsr(Vu32.uw,Rt32)
    v0.uw=vlsr(v0.uw,r0)
# CHECK-NEXT: 1980c020 { v0.uw = vlsr(v0.uw,r0) }

//  V6_vlsrwv
//  Vd32.w=vlsr(Vu32.w,Vv32.w)
    v0.w=vlsr(v0.w,v0.w)
# CHECK-NEXT: 1fa0c020 { v0.w = vlsr(v0.w,v0.w) }

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

//  V6_vlutvvb
//  Vd32.b=vlut32(Vu32.b,Vv32.b,Rt8)
    v0.b=vlut32(v0.b,v0.b,r0)
# CHECK-NEXT: 1b00e020 { v0.b = vlut32(v0.b,v0.b,r0) }

//  V6_vlutvvb_nm
//  Vd32.b=vlut32(Vu32.b,Vv32.b,Rt8):nomatch
    v0.b=vlut32(v0.b,v0.b,r0):nomatch
# CHECK-NEXT: 1800c060 { v0.b = vlut32(v0.b,v0.b,r0):nomatch }

//  V6_vlutvvb_oracc
//  Vx32.b|=vlut32(Vu32.b,Vv32.b,Rt8)
    v0.b|=vlut32(v0.b,v0.b,r0)
# CHECK-NEXT: 1b00e0a0 { v0.b |= vlut32(v0.b,v0.b,r0) }

//  V6_vlutvvb_oracci
//  Vx32.b|=vlut32(Vu32.b,Vv32.b,#u3)
    v0.b|=vlut32(v0.b,v0.b,#0)
# CHECK-NEXT: 1cc0e000 { v0.b |= vlut32(v0.b,v0.b,#0) }

//  V6_vlutvvbi
//  Vd32.b=vlut32(Vu32.b,Vv32.b,#u3)
    v0.b=vlut32(v0.b,v0.b,#0)
# CHECK-NEXT: 1e20c000 { v0.b = vlut32(v0.b,v0.b,#0) }

//  V6_vlutvwh
//  Vdd32.h=vlut16(Vu32.b,Vv32.h,Rt8)
    v1:0.h=vlut16(v0.b,v0.h,r0)
# CHECK-NEXT: 1b00e0c0 { v1:0.h = vlut16(v0.b,v0.h,r0) }

//  V6_vlutvwh_nm
//  Vdd32.h=vlut16(Vu32.b,Vv32.h,Rt8):nomatch
    v1:0.h=vlut16(v0.b,v0.h,r0):nomatch
# CHECK-NEXT: 1800c080 { v1:0.h = vlut16(v0.b,v0.h,r0):nomatch }

//  V6_vlutvwh_oracc
//  Vxx32.h|=vlut16(Vu32.b,Vv32.h,Rt8)
    v1:0.h|=vlut16(v0.b,v0.h,r0)
# CHECK-NEXT: 1b00e0e0 { v1:0.h |= vlut16(v0.b,v0.h,r0) }

//  V6_vlutvwh_oracci
//  Vxx32.h|=vlut16(Vu32.b,Vv32.h,#u3)
    v1:0.h|=vlut16(v0.b,v0.h,#0)
# CHECK-NEXT: 1ce0e000 { v1:0.h |= vlut16(v0.b,v0.h,#0) }

//  V6_vlutvwhi
//  Vdd32.h=vlut16(Vu32.b,Vv32.h,#u3)
    v1:0.h=vlut16(v0.b,v0.h,#0)
# CHECK-NEXT: 1e60c000 { v1:0.h = vlut16(v0.b,v0.h,#0) }

//  V6_vmaxb
//  Vd32.b=vmax(Vu32.b,Vv32.b)
    v0.b=vmax(v0.b,v0.b)
# CHECK-NEXT: 1f20c0a0 { v0.b = vmax(v0.b,v0.b) }

//  V6_vmaxh
//  Vd32.h=vmax(Vu32.h,Vv32.h)
    v0.h=vmax(v0.h,v0.h)
# CHECK-NEXT: 1f00c0e0 { v0.h = vmax(v0.h,v0.h) }

//  V6_vmaxub
//  Vd32.ub=vmax(Vu32.ub,Vv32.ub)
    v0.ub=vmax(v0.ub,v0.ub)
# CHECK-NEXT: 1f00c0a0 { v0.ub = vmax(v0.ub,v0.ub) }

//  V6_vmaxuh
//  Vd32.uh=vmax(Vu32.uh,Vv32.uh)
    v0.uh=vmax(v0.uh,v0.uh)
# CHECK-NEXT: 1f00c0c0 { v0.uh = vmax(v0.uh,v0.uh) }

//  V6_vmaxw
//  Vd32.w=vmax(Vu32.w,Vv32.w)
    v0.w=vmax(v0.w,v0.w)
# CHECK-NEXT: 1f20c000 { v0.w = vmax(v0.w,v0.w) }

//  V6_vminb
//  Vd32.b=vmin(Vu32.b,Vv32.b)
    v0.b=vmin(v0.b,v0.b)
# CHECK-NEXT: 1f20c080 { v0.b = vmin(v0.b,v0.b) }

//  V6_vminh
//  Vd32.h=vmin(Vu32.h,Vv32.h)
    v0.h=vmin(v0.h,v0.h)
# CHECK-NEXT: 1f00c060 { v0.h = vmin(v0.h,v0.h) }

//  V6_vminub
//  Vd32.ub=vmin(Vu32.ub,Vv32.ub)
    v0.ub=vmin(v0.ub,v0.ub)
# CHECK-NEXT: 1f00c020 { v0.ub = vmin(v0.ub,v0.ub) }

//  V6_vminuh
//  Vd32.uh=vmin(Vu32.uh,Vv32.uh)
    v0.uh=vmin(v0.uh,v0.uh)
# CHECK-NEXT: 1f00c040 { v0.uh = vmin(v0.uh,v0.uh) }

//  V6_vminw
//  Vd32.w=vmin(Vu32.w,Vv32.w)
    v0.w=vmin(v0.w,v0.w)
# CHECK-NEXT: 1f00c080 { v0.w = vmin(v0.w,v0.w) }

//  V6_vmpabus
//  Vdd32.h=vmpa(Vuu32.ub,Rt32.b)
    v1:0.h=vmpa(v1:0.ub,r0.b)
# CHECK-NEXT: 1920c0c0 { v1:0.h = vmpa(v1:0.ub,r0.b) }

//  V6_vmpabus_acc
//  Vxx32.h+=vmpa(Vuu32.ub,Rt32.b)
    v1:0.h+=vmpa(v1:0.ub,r0.b)
# CHECK-NEXT: 1920e0c0 { v1:0.h += vmpa(v1:0.ub,r0.b) }

//  V6_vmpabusv
//  Vdd32.h=vmpa(Vuu32.ub,Vvv32.b)
    v1:0.h=vmpa(v1:0.ub,v1:0.b)
# CHECK-NEXT: 1c20c060 { v1:0.h = vmpa(v1:0.ub,v1:0.b) }

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

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

//  V6_vmpabuuv
//  Vdd32.h=vmpa(Vuu32.ub,Vvv32.ub)
    v1:0.h=vmpa(v1:0.ub,v1:0.ub)
# CHECK-NEXT: 1ce0c0e0 { v1:0.h = vmpa(v1:0.ub,v1:0.ub) }

//  V6_vmpahb
//  Vdd32.w=vmpa(Vuu32.h,Rt32.b)
    v1:0.w=vmpa(v1:0.h,r0.b)
# CHECK-NEXT: 1920c0e0 { v1:0.w = vmpa(v1:0.h,r0.b) }

//  V6_vmpahb_acc
//  Vxx32.w+=vmpa(Vuu32.h,Rt32.b)
    v1:0.w+=vmpa(v1:0.h,r0.b)
# CHECK-NEXT: 1920e0e0 { v1:0.w += vmpa(v1:0.h,r0.b) }

//  V6_vmpahhsat
//  Vx32.h=vmpa(Vx32.h,Vu32.h,Rtt32.h):sat
    v0.h=vmpa(v0.h,v0.h,r1:0.h):sat
# CHECK-NEXT: 1980e080 { v0.h = vmpa(v0.h,v0.h,r1:0.h):sat }

//  V6_vmpauhb
//  Vdd32.w=vmpa(Vuu32.uh,Rt32.b)
    v1:0.w=vmpa(v1:0.uh,r0.b)
# CHECK-NEXT: 1980c0a0 { v1:0.w = vmpa(v1:0.uh,r0.b) }

//  V6_vmpauhb_acc
//  Vxx32.w+=vmpa(Vuu32.uh,Rt32.b)
    v1:0.w+=vmpa(v1:0.uh,r0.b)
# CHECK-NEXT: 1980e040 { v1:0.w += vmpa(v1:0.uh,r0.b) }

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

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

//  V6_vmpybus
//  Vdd32.h=vmpy(Vu32.ub,Rt32.b)
    v1:0.h=vmpy(v0.ub,r0.b)
# CHECK-NEXT: 1920c0a0 { v1:0.h = vmpy(v0.ub,r0.b) }

//  V6_vmpybus_acc
//  Vxx32.h+=vmpy(Vu32.ub,Rt32.b)
    v1:0.h+=vmpy(v0.ub,r0.b)
# CHECK-NEXT: 1920e0a0 { v1:0.h += vmpy(v0.ub,r0.b) }

//  V6_vmpybusv
//  Vdd32.h=vmpy(Vu32.ub,Vv32.b)
    v1:0.h=vmpy(v0.ub,v0.b)
# CHECK-NEXT: 1c00c0c0 { v1:0.h = vmpy(v0.ub,v0.b) }

//  V6_vmpybusv_acc
//  Vxx32.h+=vmpy(Vu32.ub,Vv32.b)
    v1:0.h+=vmpy(v0.ub,v0.b)
# CHECK-NEXT: 1c00e0c0 { v1:0.h += vmpy(v0.ub,v0.b) }

//  V6_vmpybv
//  Vdd32.h=vmpy(Vu32.b,Vv32.b)
    v1:0.h=vmpy(v0.b,v0.b)
# CHECK-NEXT: 1c00c080 { v1:0.h = vmpy(v0.b,v0.b) }

//  V6_vmpybv_acc
//  Vxx32.h+=vmpy(Vu32.b,Vv32.b)
    v1:0.h+=vmpy(v0.b,v0.b)
# CHECK-NEXT: 1c00e080 { v1:0.h += vmpy(v0.b,v0.b) }

//  V6_vmpyewuh
//  Vd32.w=vmpye(Vu32.w,Vv32.uh)
    v0.w=vmpye(v0.w,v0.uh)
# CHECK-NEXT: 1fe0c0a0 { v0.w = vmpye(v0.w,v0.uh) }

//  V6_vmpyewuh_64
//  Vdd32=vmpye(Vu32.w,Vv32.uh)
    v1:0=vmpye(v0.w,v0.uh)
# CHECK-NEXT: 1ea0c0c0 { v1:0 = vmpye(v0.w,v0.uh) }

//  V6_vmpyh
//  Vdd32.w=vmpy(Vu32.h,Rt32.h)
    v1:0.w=vmpy(v0.h,r0.h)
# CHECK-NEXT: 1940c000 { v1:0.w = vmpy(v0.h,r0.h) }

//  V6_vmpyh_acc
//  Vxx32.w+=vmpy(Vu32.h,Rt32.h)
    v1:0.w+=vmpy(v0.h,r0.h)
# CHECK-NEXT: 19a0e0c0 { v1:0.w += vmpy(v0.h,r0.h) }

//  V6_vmpyhsat_acc
//  Vxx32.w+=vmpy(Vu32.h,Rt32.h):sat
    v1:0.w+=vmpy(v0.h,r0.h):sat
# CHECK-NEXT: 1940e000 { v1:0.w += vmpy(v0.h,r0.h):sat }

//  V6_vmpyhsrs
//  Vd32.h=vmpy(Vu32.h,Rt32.h):<<1:rnd:sat
    v0.h=vmpy(v0.h,r0.h):<<1:rnd:sat
# CHECK-NEXT: 1940c040 { v0.h = vmpy(v0.h,r0.h):<<1:rnd:sat }

//  V6_vmpyhss
//  Vd32.h=vmpy(Vu32.h,Rt32.h):<<1:sat
    v0.h=vmpy(v0.h,r0.h):<<1:sat
# CHECK-NEXT: 1940c020 { v0.h = vmpy(v0.h,r0.h):<<1:sat }

//  V6_vmpyhus
//  Vdd32.w=vmpy(Vu32.h,Vv32.uh)
    v1:0.w=vmpy(v0.h,v0.uh)
# CHECK-NEXT: 1c20c040 { v1:0.w = vmpy(v0.h,v0.uh) }

//  V6_vmpyhus_acc
//  Vxx32.w+=vmpy(Vu32.h,Vv32.uh)
    v1:0.w+=vmpy(v0.h,v0.uh)
# CHECK-NEXT: 1c20e020 { v1:0.w += vmpy(v0.h,v0.uh) }

//  V6_vmpyhv
//  Vdd32.w=vmpy(Vu32.h,Vv32.h)
    v1:0.w=vmpy(v0.h,v0.h)
# CHECK-NEXT: 1c00c0e0 { v1:0.w = vmpy(v0.h,v0.h) }

//  V6_vmpyhv_acc
//  Vxx32.w+=vmpy(Vu32.h,Vv32.h)
    v1:0.w+=vmpy(v0.h,v0.h)
# CHECK-NEXT: 1c00e0e0 { v1:0.w += vmpy(v0.h,v0.h) }

//  V6_vmpyhvsrs
//  Vd32.h=vmpy(Vu32.h,Vv32.h):<<1:rnd:sat
    v0.h=vmpy(v0.h,v0.h):<<1:rnd:sat
# CHECK-NEXT: 1c20c020 { v0.h = vmpy(v0.h,v0.h):<<1:rnd:sat }

//  V6_vmpyieoh
//  Vd32.w=vmpyieo(Vu32.h,Vv32.h)
    v0.w=vmpyieo(v0.h,v0.h)
# CHECK-NEXT: 1f60c000 { v0.w = vmpyieo(v0.h,v0.h) }

//  V6_vmpyiewh_acc
//  Vx32.w+=vmpyie(Vu32.w,Vv32.h)
    v0.w+=vmpyie(v0.w,v0.h)
# CHECK-NEXT: 1c40e000 { v0.w += vmpyie(v0.w,v0.h) }

//  V6_vmpyiewuh
//  Vd32.w=vmpyie(Vu32.w,Vv32.uh)
    v0.w=vmpyie(v0.w,v0.uh)
# CHECK-NEXT: 1fc0c000 { v0.w = vmpyie(v0.w,v0.uh) }

//  V6_vmpyiewuh_acc
//  Vx32.w+=vmpyie(Vu32.w,Vv32.uh)
    v0.w+=vmpyie(v0.w,v0.uh)
# CHECK-NEXT: 1c20e0a0 { v0.w += vmpyie(v0.w,v0.uh) }

//  V6_vmpyih
//  Vd32.h=vmpyi(Vu32.h,Vv32.h)
    v0.h=vmpyi(v0.h,v0.h)
# CHECK-NEXT: 1c20c080 { v0.h = vmpyi(v0.h,v0.h) }

//  V6_vmpyih_acc
//  Vx32.h+=vmpyi(Vu32.h,Vv32.h)
    v0.h+=vmpyi(v0.h,v0.h)
# CHECK-NEXT: 1c20e080 { v0.h += vmpyi(v0.h,v0.h) }

//  V6_vmpyihb
//  Vd32.h=vmpyi(Vu32.h,Rt32.b)
    v0.h=vmpyi(v0.h,r0.b)
# CHECK-NEXT: 1960c000 { v0.h = vmpyi(v0.h,r0.b) }

//  V6_vmpyihb_acc
//  Vx32.h+=vmpyi(Vu32.h,Rt32.b)
    v0.h+=vmpyi(v0.h,r0.b)
# CHECK-NEXT: 1960e020 { v0.h += vmpyi(v0.h,r0.b) }

//  V6_vmpyiowh
//  Vd32.w=vmpyio(Vu32.w,Vv32.h)
    v0.w=vmpyio(v0.w,v0.h)
# CHECK-NEXT: 1fc0c020 { v0.w = vmpyio(v0.w,v0.h) }

//  V6_vmpyiwb
//  Vd32.w=vmpyi(Vu32.w,Rt32.b)
    v0.w=vmpyi(v0.w,r0.b)
# CHECK-NEXT: 19a0c000 { v0.w = vmpyi(v0.w,r0.b) }

//  V6_vmpyiwb_acc
//  Vx32.w+=vmpyi(Vu32.w,Rt32.b)
    v0.w+=vmpyi(v0.w,r0.b)
# CHECK-NEXT: 1940e040 { v0.w += vmpyi(v0.w,r0.b) }

//  V6_vmpyiwh
//  Vd32.w=vmpyi(Vu32.w,Rt32.h)
    v0.w=vmpyi(v0.w,r0.h)
# CHECK-NEXT: 1980c0e0 { v0.w = vmpyi(v0.w,r0.h) }

//  V6_vmpyiwh_acc
//  Vx32.w+=vmpyi(Vu32.w,Rt32.h)
    v0.w+=vmpyi(v0.w,r0.h)
# CHECK-NEXT: 1940e060 { v0.w += vmpyi(v0.w,r0.h) }

//  V6_vmpyiwub
//  Vd32.w=vmpyi(Vu32.w,Rt32.ub)
    v0.w=vmpyi(v0.w,r0.ub)
# CHECK-NEXT: 1980c0c0 { v0.w = vmpyi(v0.w,r0.ub) }

//  V6_vmpyiwub_acc
//  Vx32.w+=vmpyi(Vu32.w,Rt32.ub)
    v0.w+=vmpyi(v0.w,r0.ub)
# CHECK-NEXT: 1980e020 { v0.w += vmpyi(v0.w,r0.ub) }

//  V6_vmpyowh
//  Vd32.w=vmpyo(Vu32.w,Vv32.h):<<1:sat
    v0.w=vmpyo(v0.w,v0.h):<<1:sat
# CHECK-NEXT: 1fe0c0e0 { v0.w = vmpyo(v0.w,v0.h):<<1:sat }

//  V6_vmpyowh_64_acc
//  Vxx32+=vmpyo(Vu32.w,Vv32.h)
    v1:0+=vmpyo(v0.w,v0.h)
# CHECK-NEXT: 1c20e060 { v1:0 += vmpyo(v0.w,v0.h) }

//  V6_vmpyowh_rnd
//  Vd32.w=vmpyo(Vu32.w,Vv32.h):<<1:rnd:sat
    v0.w=vmpyo(v0.w,v0.h):<<1:rnd:sat
# CHECK-NEXT: 1f40c000 { v0.w = vmpyo(v0.w,v0.h):<<1:rnd:sat }

//  V6_vmpyowh_rnd_sacc
//  Vx32.w+=vmpyo(Vu32.w,Vv32.h):<<1:rnd:sat:shift
    v0.w+=vmpyo(v0.w,v0.h):<<1:rnd:sat:shift
# CHECK-NEXT: 1c20e0e0 { v0.w += vmpyo(v0.w,v0.h):<<1:rnd:sat:shift }

//  V6_vmpyowh_sacc
//  Vx32.w+=vmpyo(Vu32.w,Vv32.h):<<1:sat:shift
    v0.w+=vmpyo(v0.w,v0.h):<<1:sat:shift
# CHECK-NEXT: 1c20e0c0 { v0.w += vmpyo(v0.w,v0.h):<<1:sat:shift }

//  V6_vmpyub
//  Vdd32.uh=vmpy(Vu32.ub,Rt32.ub)
    v1:0.uh=vmpy(v0.ub,r0.ub)
# CHECK-NEXT: 19c0c000 { v1:0.uh = vmpy(v0.ub,r0.ub) }

//  V6_vmpyub_acc
//  Vxx32.uh+=vmpy(Vu32.ub,Rt32.ub)
    v1:0.uh+=vmpy(v0.ub,r0.ub)
# CHECK-NEXT: 1980e000 { v1:0.uh += vmpy(v0.ub,r0.ub) }

//  V6_vmpyubv
//  Vdd32.uh=vmpy(Vu32.ub,Vv32.ub)
    v1:0.uh=vmpy(v0.ub,v0.ub)
# CHECK-NEXT: 1c00c0a0 { v1:0.uh = vmpy(v0.ub,v0.ub) }

//  V6_vmpyubv_acc
//  Vxx32.uh+=vmpy(Vu32.ub,Vv32.ub)
    v1:0.uh+=vmpy(v0.ub,v0.ub)
# CHECK-NEXT: 1c00e0a0 { v1:0.uh += vmpy(v0.ub,v0.ub) }

//  V6_vmpyuh
//  Vdd32.uw=vmpy(Vu32.uh,Rt32.uh)
    v1:0.uw=vmpy(v0.uh,r0.uh)
# CHECK-NEXT: 1940c060 { v1:0.uw = vmpy(v0.uh,r0.uh) }

//  V6_vmpyuh_acc
//  Vxx32.uw+=vmpy(Vu32.uh,Rt32.uh)
    v1:0.uw+=vmpy(v0.uh,r0.uh)
# CHECK-NEXT: 1940e020 { v1:0.uw += vmpy(v0.uh,r0.uh) }

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

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

//  V6_vmpyuhv
//  Vdd32.uw=vmpy(Vu32.uh,Vv32.uh)
    v1:0.uw=vmpy(v0.uh,v0.uh)
# CHECK-NEXT: 1c20c000 { v1:0.uw = vmpy(v0.uh,v0.uh) }

//  V6_vmpyuhv_acc
//  Vxx32.uw+=vmpy(Vu32.uh,Vv32.uh)
    v1:0.uw+=vmpy(v0.uh,v0.uh)
# CHECK-NEXT: 1c20e000 { v1:0.uw += vmpy(v0.uh,v0.uh) }

//  V6_vmux
//  Vd32=vmux(Qt4,Vu32,Vv32)
    v0=vmux(q0,v0,v0)
# CHECK-NEXT: 1ee0e000 { v0 = vmux(q0,v0,v0) }

//  V6_vnavgb
//  Vd32.b=vnavg(Vu32.b,Vv32.b)
    v0.b=vnavg(v0.b,v0.b)
# CHECK-NEXT: 1f00e0c0 { v0.b = vnavg(v0.b,v0.b) }

//  V6_vnavgh
//  Vd32.h=vnavg(Vu32.h,Vv32.h)
    v0.h=vnavg(v0.h,v0.h)
# CHECK-NEXT: 1ce0c020 { v0.h = vnavg(v0.h,v0.h) }

//  V6_vnavgub
//  Vd32.b=vnavg(Vu32.ub,Vv32.ub)
    v0.b=vnavg(v0.ub,v0.ub)
# CHECK-NEXT: 1ce0c000 { v0.b = vnavg(v0.ub,v0.ub) }

//  V6_vnavgw
//  Vd32.w=vnavg(Vu32.w,Vv32.w)
    v0.w=vnavg(v0.w,v0.w)
# CHECK-NEXT: 1ce0c040 { v0.w = vnavg(v0.w,v0.w) }

//  V6_vnccombine
//  if (!Ps4) Vdd32=vcombine(Vu32,Vv32)
    if (!p0) v1:0=vcombine(v0,v0)
# CHECK-NEXT: 1a40c000 { if (!p0) v1:0 = vcombine(v0,v0) }

//  V6_vncmov
//  if (!Ps4) Vd32=Vu32
    if (!p0) v0=v0
# CHECK-NEXT: 1a20c000 { if (!p0) v0 = v0 }

//  V6_vnormamth
//  Vd32.h=vnormamt(Vu32.h)
    v0.h=vnormamt(v0.h)
# CHECK-NEXT: 1e03c0a0 { v0.h = vnormamt(v0.h) }

//  V6_vnormamtw
//  Vd32.w=vnormamt(Vu32.w)
    v0.w=vnormamt(v0.w)
# CHECK-NEXT: 1e03c080 { v0.w = vnormamt(v0.w) }

//  V6_vnot
//  Vd32=vnot(Vu32)
    v0=vnot(v0)
# CHECK-NEXT: 1e00c080 { v0 = vnot(v0) }

//  V6_vor
//  Vd32=vor(Vu32,Vv32)
    v0=vor(v0,v0)
# CHECK-NEXT: 1c20c0c0 { v0 = vor(v0,v0) }

//  V6_vpackeb
//  Vd32.b=vpacke(Vu32.h,Vv32.h)
    v0.b=vpacke(v0.h,v0.h)
# CHECK-NEXT: 1fc0c040 { v0.b = vpacke(v0.h,v0.h) }

//  V6_vpackeh
//  Vd32.h=vpacke(Vu32.w,Vv32.w)
    v0.h=vpacke(v0.w,v0.w)
# CHECK-NEXT: 1fc0c060 { v0.h = vpacke(v0.w,v0.w) }

//  V6_vpackhb_sat
//  Vd32.b=vpack(Vu32.h,Vv32.h):sat
    v0.b=vpack(v0.h,v0.h):sat
# CHECK-NEXT: 1fc0c0c0 { v0.b = vpack(v0.h,v0.h):sat }

//  V6_vpackhub_sat
//  Vd32.ub=vpack(Vu32.h,Vv32.h):sat
    v0.ub=vpack(v0.h,v0.h):sat
# CHECK-NEXT: 1fc0c0a0 { v0.ub = vpack(v0.h,v0.h):sat }

//  V6_vpackob
//  Vd32.b=vpacko(Vu32.h,Vv32.h)
    v0.b=vpacko(v0.h,v0.h)
# CHECK-NEXT: 1fe0c020 { v0.b = vpacko(v0.h,v0.h) }

//  V6_vpackoh
//  Vd32.h=vpacko(Vu32.w,Vv32.w)
    v0.h=vpacko(v0.w,v0.w)
# CHECK-NEXT: 1fe0c040 { v0.h = vpacko(v0.w,v0.w) }

//  V6_vpackwh_sat
//  Vd32.h=vpack(Vu32.w,Vv32.w):sat
    v0.h=vpack(v0.w,v0.w):sat
# CHECK-NEXT: 1fe0c000 { v0.h = vpack(v0.w,v0.w):sat }

//  V6_vpackwuh_sat
//  Vd32.uh=vpack(Vu32.w,Vv32.w):sat
    v0.uh=vpack(v0.w,v0.w):sat
# CHECK-NEXT: 1fc0c0e0 { v0.uh = vpack(v0.w,v0.w):sat }

//  V6_vpopcounth
//  Vd32.h=vpopcount(Vu32.h)
    v0.h=vpopcount(v0.h)
# CHECK-NEXT: 1e02c0c0 { v0.h = vpopcount(v0.h) }

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

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

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

//  V6_vrdelta
//  Vd32=vrdelta(Vu32,Vv32)
    v0=vrdelta(v0,v0)
# CHECK-NEXT: 1f20c060 { v0 = vrdelta(v0,v0) }

//  V6_vrmpybus
//  Vd32.w=vrmpy(Vu32.ub,Rt32.b)
    v0.w=vrmpy(v0.ub,r0.b)
# CHECK-NEXT: 1900c080 { v0.w = vrmpy(v0.ub,r0.b) }

//  V6_vrmpybus_acc
//  Vx32.w+=vrmpy(Vu32.ub,Rt32.b)
    v0.w+=vrmpy(v0.ub,r0.b)
# CHECK-NEXT: 1900e0a0 { v0.w += vrmpy(v0.ub,r0.b) }

//  V6_vrmpybusi
//  Vdd32.w=vrmpy(Vuu32.ub,Rt32.b,#u1)
    v1:0.w=vrmpy(v1:0.ub,r0.b,#0)
# CHECK-NEXT: 1940c080 { v1:0.w = vrmpy(v1:0.ub,r0.b,#0) }

//  V6_vrmpybusi_acc
//  Vxx32.w+=vrmpy(Vuu32.ub,Rt32.b,#u1)
    v1:0.w+=vrmpy(v1:0.ub,r0.b,#0)
# CHECK-NEXT: 1940e080 { v1:0.w += vrmpy(v1:0.ub,r0.b,#0) }

//  V6_vrmpybusv
//  Vd32.w=vrmpy(Vu32.ub,Vv32.b)
    v0.w=vrmpy(v0.ub,v0.b)
# CHECK-NEXT: 1c00c040 { v0.w = vrmpy(v0.ub,v0.b) }

//  V6_vrmpybusv_acc
//  Vx32.w+=vrmpy(Vu32.ub,Vv32.b)
    v0.w+=vrmpy(v0.ub,v0.b)
# CHECK-NEXT: 1c00e040 { v0.w += vrmpy(v0.ub,v0.b) }

//  V6_vrmpybv
//  Vd32.w=vrmpy(Vu32.b,Vv32.b)
    v0.w=vrmpy(v0.b,v0.b)
# CHECK-NEXT: 1c00c020 { v0.w = vrmpy(v0.b,v0.b) }

//  V6_vrmpybv_acc
//  Vx32.w+=vrmpy(Vu32.b,Vv32.b)
    v0.w+=vrmpy(v0.b,v0.b)
# CHECK-NEXT: 1c00e020 { v0.w += vrmpy(v0.b,v0.b) }

//  V6_vrmpyub
//  Vd32.uw=vrmpy(Vu32.ub,Rt32.ub)
    v0.uw=vrmpy(v0.ub,r0.ub)
# CHECK-NEXT: 1900c060 { v0.uw = vrmpy(v0.ub,r0.ub) }

//  V6_vrmpyub_acc
//  Vx32.uw+=vrmpy(Vu32.ub,Rt32.ub)
    v0.uw+=vrmpy(v0.ub,r0.ub)
# CHECK-NEXT: 1900e080 { v0.uw += vrmpy(v0.ub,r0.ub) }

//  V6_vrmpyubi
//  Vdd32.uw=vrmpy(Vuu32.ub,Rt32.ub,#u1)
    v1:0.uw=vrmpy(v1:0.ub,r0.ub,#0)
# CHECK-NEXT: 19a0c0c0 { v1:0.uw = vrmpy(v1:0.ub,r0.ub,#0) }

//  V6_vrmpyubi_acc
//  Vxx32.uw+=vrmpy(Vuu32.ub,Rt32.ub,#u1)
    v1:0.uw+=vrmpy(v1:0.ub,r0.ub,#0)
# CHECK-NEXT: 1960e0c0 { v1:0.uw += vrmpy(v1:0.ub,r0.ub,#0) }

//  V6_vrmpyubv
//  Vd32.uw=vrmpy(Vu32.ub,Vv32.ub)
    v0.uw=vrmpy(v0.ub,v0.ub)
# CHECK-NEXT: 1c00c000 { v0.uw = vrmpy(v0.ub,v0.ub) }

//  V6_vrmpyubv_acc
//  Vx32.uw+=vrmpy(Vu32.ub,Vv32.ub)
    v0.uw+=vrmpy(v0.ub,v0.ub)
# CHECK-NEXT: 1c00e000 { v0.uw += vrmpy(v0.ub,v0.ub) }

//  V6_vrmpyzbb_rt
//  Vdddd32.w=vrmpyz(Vu32.b,Rt8.b)
    v3:0.w=vrmpyz(v0.b,r0.b)
# CHECK-NEXT: 19e8c000 { v3:0.w = vrmpyz(v0.b,r0.b) }

//  V6_vrmpyzbb_rt_acc
//  Vyyyy32.w+=vrmpyz(Vu32.b,Rt8.b)
    v3:0.w+=vrmpyz(v0.b,r0.b)
# CHECK-NEXT: 19c0e040 { v3:0.w += vrmpyz(v0.b,r0.b) }

//  V6_vrmpyzbb_rx
//  Vdddd32.w=vrmpyz(Vu32.b,Rx8.b++)
    v3:0.w=vrmpyz(v0.b,r0.b++)
# CHECK-NEXT: 19e0c000 { v3:0.w = vrmpyz(v0.b,r0.b++) }

//  V6_vrmpyzbb_rx_acc
//  Vyyyy32.w+=vrmpyz(Vu32.b,Rx8.b++)
    v3:0.w+=vrmpyz(v0.b,r0.b++)
# CHECK-NEXT: 19c8e040 { v3:0.w += vrmpyz(v0.b,r0.b++) }

//  V6_vrmpyzbub_rt
//  Vdddd32.w=vrmpyz(Vu32.b,Rt8.ub)
    v3:0.w=vrmpyz(v0.b,r0.ub)
# CHECK-NEXT: 19f8c040 { v3:0.w = vrmpyz(v0.b,r0.ub) }

//  V6_vrmpyzbub_rt_acc
//  Vyyyy32.w+=vrmpyz(Vu32.b,Rt8.ub)
    v3:0.w+=vrmpyz(v0.b,r0.ub)
# CHECK-NEXT: 19d0e020 { v3:0.w += vrmpyz(v0.b,r0.ub) }

//  V6_vrmpyzbub_rx
//  Vdddd32.w=vrmpyz(Vu32.b,Rx8.ub++)
    v3:0.w=vrmpyz(v0.b,r0.ub++)
# CHECK-NEXT: 19f0c040 { v3:0.w = vrmpyz(v0.b,r0.ub++) }

//  V6_vrmpyzbub_rx_acc
//  Vyyyy32.w+=vrmpyz(Vu32.b,Rx8.ub++)
    v3:0.w+=vrmpyz(v0.b,r0.ub++)
# CHECK-NEXT: 19d8e020 { v3:0.w += vrmpyz(v0.b,r0.ub++) }

//  V6_vrmpyzcb_rt
//  Vdddd32.w=vr16mpyz(Vu32.c,Rt8.b)
    v3:0.w=vr16mpyz(v0.c,r0.b)
# CHECK-NEXT: 19e8c020 { v3:0.w = vr16mpyz(v0.c,r0.b) }

//  V6_vrmpyzcb_rt_acc
//  Vyyyy32.w+=vr16mpyz(Vu32.c,Rt8.b)
    v3:0.w+=vr16mpyz(v0.c,r0.b)
# CHECK-NEXT: 19c0e060 { v3:0.w += vr16mpyz(v0.c,r0.b) }

//  V6_vrmpyzcb_rx
//  Vdddd32.w=vr16mpyz(Vu32.c,Rx8.b++)
    v3:0.w=vr16mpyz(v0.c,r0.b++)
# CHECK-NEXT: 19e0c020 { v3:0.w = vr16mpyz(v0.c,r0.b++) }

//  V6_vrmpyzcb_rx_acc
//  Vyyyy32.w+=vr16mpyz(Vu32.c,Rx8.b++)
    v3:0.w+=vr16mpyz(v0.c,r0.b++)
# CHECK-NEXT: 19c8e060 { v3:0.w += vr16mpyz(v0.c,r0.b++) }

//  V6_vrmpyzcbs_rt
//  Vdddd32.w=vr16mpyzs(Vu32.c,Rt8.b)
    v3:0.w=vr16mpyzs(v0.c,r0.b)
# CHECK-NEXT: 19e8c040 { v3:0.w = vr16mpyzs(v0.c,r0.b) }

//  V6_vrmpyzcbs_rt_acc
//  Vyyyy32.w+=vr16mpyzs(Vu32.c,Rt8.b)
    v3:0.w+=vr16mpyzs(v0.c,r0.b)
# CHECK-NEXT: 19c0e020 { v3:0.w += vr16mpyzs(v0.c,r0.b) }

//  V6_vrmpyzcbs_rx
//  Vdddd32.w=vr16mpyzs(Vu32.c,Rx8.b++)
    v3:0.w=vr16mpyzs(v0.c,r0.b++)
# CHECK-NEXT: 19e0c040 { v3:0.w = vr16mpyzs(v0.c,r0.b++) }

//  V6_vrmpyzcbs_rx_acc
//  Vyyyy32.w+=vr16mpyzs(Vu32.c,Rx8.b++)
    v3:0.w+=vr16mpyzs(v0.c,r0.b++)
# CHECK-NEXT: 19c8e020 { v3:0.w += vr16mpyzs(v0.c,r0.b++) }

//  V6_vrmpyznb_rt
//  Vdddd32.w=vr8mpyz(Vu32.n,Rt8.b)
    v3:0.w=vr8mpyz(v0.n,r0.b)
# CHECK-NEXT: 19f8c000 { v3:0.w = vr8mpyz(v0.n,r0.b) }

//  V6_vrmpyznb_rt_acc
//  Vyyyy32.w+=vr8mpyz(Vu32.n,Rt8.b)
    v3:0.w+=vr8mpyz(v0.n,r0.b)
# CHECK-NEXT: 19d0e040 { v3:0.w += vr8mpyz(v0.n,r0.b) }

//  V6_vrmpyznb_rx
//  Vdddd32.w=vr8mpyz(Vu32.n,Rx8.b++)
    v3:0.w=vr8mpyz(v0.n,r0.b++)
# CHECK-NEXT: 19f0c000 { v3:0.w = vr8mpyz(v0.n,r0.b++) }

//  V6_vrmpyznb_rx_acc
//  Vyyyy32.w+=vr8mpyz(Vu32.n,Rx8.b++)
    v3:0.w+=vr8mpyz(v0.n,r0.b++)
# CHECK-NEXT: 19d8e040 { v3:0.w += vr8mpyz(v0.n,r0.b++) }

//  V6_vror
//  Vd32=vror(Vu32,Rt32)
    v0=vror(v0,r0)
# CHECK-NEXT: 1960c020 { v0 = vror(v0,r0) }

//  V6_vrotr
//  Vd32.uw=vrotr(Vu32.uw,Vv32.uw)
    v0.uw=vrotr(v0.uw,v0.uw)
# CHECK-NEXT: 1a80e0e0 { v0.uw = vrotr(v0.uw,v0.uw) }

//  V6_vroundhb
//  Vd32.b=vround(Vu32.h,Vv32.h):sat
    v0.b=vround(v0.h,v0.h):sat
# CHECK-NEXT: 1f60c0c0 { v0.b = vround(v0.h,v0.h):sat }

//  V6_vroundhub
//  Vd32.ub=vround(Vu32.h,Vv32.h):sat
    v0.ub=vround(v0.h,v0.h):sat
# CHECK-NEXT: 1f60c0e0 { v0.ub = vround(v0.h,v0.h):sat }

//  V6_vrounduhub
//  Vd32.ub=vround(Vu32.uh,Vv32.uh):sat
    v0.ub=vround(v0.uh,v0.uh):sat
# CHECK-NEXT: 1fe0c060 { v0.ub = vround(v0.uh,v0.uh):sat }

//  V6_vrounduwuh
//  Vd32.uh=vround(Vu32.uw,Vv32.uw):sat
    v0.uh=vround(v0.uw,v0.uw):sat
# CHECK-NEXT: 1fe0c080 { v0.uh = vround(v0.uw,v0.uw):sat }

//  V6_vroundwh
//  Vd32.h=vround(Vu32.w,Vv32.w):sat
    v0.h=vround(v0.w,v0.w):sat
# CHECK-NEXT: 1f60c080 { v0.h = vround(v0.w,v0.w):sat }

//  V6_vroundwuh
//  Vd32.uh=vround(Vu32.w,Vv32.w):sat
    v0.uh=vround(v0.w,v0.w):sat
# CHECK-NEXT: 1f60c0a0 { v0.uh = vround(v0.w,v0.w):sat }

//  V6_vrsadubi
//  Vdd32.uw=vrsad(Vuu32.ub,Rt32.ub,#u1)
    v1:0.uw=vrsad(v1:0.ub,r0.ub,#0)
# CHECK-NEXT: 1940c0c0 { v1:0.uw = vrsad(v1:0.ub,r0.ub,#0) }

//  V6_vrsadubi_acc
//  Vxx32.uw+=vrsad(Vuu32.ub,Rt32.ub,#u1)
    v1:0.uw+=vrsad(v1:0.ub,r0.ub,#0)
# CHECK-NEXT: 1940e0c0 { v1:0.uw += vrsad(v1:0.ub,r0.ub,#0) }

//  V6_vsatdw
//  Vd32.w=vsatdw(Vu32.w,Vv32.w)
    v0.w=vsatdw(v0.w,v0.w)
# CHECK-NEXT: 1d80e0e0 { v0.w = vsatdw(v0.w,v0.w) }

//  V6_vsathub
//  Vd32.ub=vsat(Vu32.h,Vv32.h)
    v0.ub=vsat(v0.h,v0.h)
# CHECK-NEXT: 1f60c040 { v0.ub = vsat(v0.h,v0.h) }

//  V6_vsatuwuh
//  Vd32.uh=vsat(Vu32.uw,Vv32.uw)
    v0.uh=vsat(v0.uw,v0.uw)
# CHECK-NEXT: 1f20c0c0 { v0.uh = vsat(v0.uw,v0.uw) }

//  V6_vsatwh
//  Vd32.h=vsat(Vu32.w,Vv32.w)
    v0.h=vsat(v0.w,v0.w)
# CHECK-NEXT: 1f60c060 { v0.h = vsat(v0.w,v0.w) }

//  V6_vsb
//  Vdd32.h=vsxt(Vu32.b)
    v1:0.h=vsxt(v0.b)
# CHECK-NEXT: 1e02c060 { v1:0.h = vsxt(v0.b) }

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

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

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

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

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

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

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

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

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

//  V6_vsh
//  Vdd32.w=vsxt(Vu32.h)
    v1:0.w=vsxt(v0.h)
# CHECK-NEXT: 1e02c080 { v1:0.w = vsxt(v0.h) }

//  V6_vshufeh
//  Vd32.h=vshuffe(Vu32.h,Vv32.h)
    v0.h=vshuffe(v0.h,v0.h)
# CHECK-NEXT: 1f40c060 { v0.h = vshuffe(v0.h,v0.h) }

//  V6_vshuff
//  vshuff(Vy32,Vx32,Rt32)
    vshuff(v0,v0,r0)
# CHECK-NEXT: 19e0e020 { vshuff(v0,v0,r0) }

//  V6_vshuffb
//  Vd32.b=vshuff(Vu32.b)
    v0.b=vshuff(v0.b)
# CHECK-NEXT: 1e02c000 { v0.b = vshuff(v0.b) }

//  V6_vshuffeb
//  Vd32.b=vshuffe(Vu32.b,Vv32.b)
    v0.b=vshuffe(v0.b,v0.b)
# CHECK-NEXT: 1f40c020 { v0.b = vshuffe(v0.b,v0.b) }

//  V6_vshuffh
//  Vd32.h=vshuff(Vu32.h)
    v0.h=vshuff(v0.h)
# CHECK-NEXT: 1e01c0e0 { v0.h = vshuff(v0.h) }

//  V6_vshuffob
//  Vd32.b=vshuffo(Vu32.b,Vv32.b)
    v0.b=vshuffo(v0.b,v0.b)
# CHECK-NEXT: 1f40c040 { v0.b = vshuffo(v0.b,v0.b) }

//  V6_vshuffvdd
//  Vdd32=vshuff(Vu32,Vv32,Rt8)
    v1:0=vshuff(v0,v0,r0)
# CHECK-NEXT: 1b00e060 { v1:0 = vshuff(v0,v0,r0) }

//  V6_vshufoeb
//  Vdd32.b=vshuffoe(Vu32.b,Vv32.b)
    v1:0.b=vshuffoe(v0.b,v0.b)
# CHECK-NEXT: 1f40c0c0 { v1:0.b = vshuffoe(v0.b,v0.b) }

//  V6_vshufoeh
//  Vdd32.h=vshuffoe(Vu32.h,Vv32.h)
    v1:0.h=vshuffoe(v0.h,v0.h)
# CHECK-NEXT: 1f40c0a0 { v1:0.h = vshuffoe(v0.h,v0.h) }

//  V6_vshufoh
//  Vd32.h=vshuffo(Vu32.h,Vv32.h)
    v0.h=vshuffo(v0.h,v0.h)
# CHECK-NEXT: 1f40c080 { v0.h = vshuffo(v0.h,v0.h) }

//  V6_vsubb
//  Vd32.b=vsub(Vu32.b,Vv32.b)
    v0.b=vsub(v0.b,v0.b)
# CHECK-NEXT: 1c40c0a0 { v0.b = vsub(v0.b,v0.b) }

//  V6_vsubb_dv
//  Vdd32.b=vsub(Vuu32.b,Vvv32.b)
    v1:0.b=vsub(v1:0.b,v1:0.b)
# CHECK-NEXT: 1c80c060 { v1:0.b = vsub(v1:0.b,v1:0.b) }

//  V6_vsubbnq
//  if (!Qv4) Vx32.b-=Vu32.b
    if (!q0) v0.b-=v0.b
# CHECK-NEXT: 1e02e020 { if (!q0) v0.b -= v0.b }

//  V6_vsubbq
//  if (Qv4) Vx32.b-=Vu32.b
    if (q0) v0.b-=v0.b
# CHECK-NEXT: 1e01e0c0 { if (q0) v0.b -= v0.b }

//  V6_vsubbsat
//  Vd32.b=vsub(Vu32.b,Vv32.b):sat
    v0.b=vsub(v0.b,v0.b):sat
# CHECK-NEXT: 1f20c040 { v0.b = vsub(v0.b,v0.b):sat }

//  V6_vsubbsat_dv
//  Vdd32.b=vsub(Vuu32.b,Vvv32.b):sat
    v1:0.b=vsub(v1:0.b,v1:0.b):sat
# CHECK-NEXT: 1ea0c020 { v1:0.b = vsub(v1:0.b,v1:0.b):sat }

//  V6_vsubcarry
//  Vd32.w=vsub(Vu32.w,Vv32.w,Qx4):carry
    v0.w=vsub(v0.w,v0.w,q0):carry
# CHECK-NEXT: 1ca0e080 { v0.w = vsub(v0.w,v0.w,q0):carry }

//  V6_vsubcarryo
//  Vd32.w,Qe4=vsub(Vu32.w,Vv32.w):carry
    v0.w,q0=vsub(v0.w,v0.w):carry
# CHECK-NEXT: 1da0e080 { v0.w,q0 = vsub(v0.w,v0.w):carry }

//  V6_vsubh
//  Vd32.h=vsub(Vu32.h,Vv32.h)
    v0.h=vsub(v0.h,v0.h)
# CHECK-NEXT: 1c40c0c0 { v0.h = vsub(v0.h,v0.h) }

//  V6_vsubh_dv
//  Vdd32.h=vsub(Vuu32.h,Vvv32.h)
    v1:0.h=vsub(v1:0.h,v1:0.h)
# CHECK-NEXT: 1c80c080 { v1:0.h = vsub(v1:0.h,v1:0.h) }

//  V6_vsubhnq
//  if (!Qv4) Vx32.h-=Vu32.h
    if (!q0) v0.h-=v0.h
# CHECK-NEXT: 1e02e040 { if (!q0) v0.h -= v0.h }

//  V6_vsubhq
//  if (Qv4) Vx32.h-=Vu32.h
    if (q0) v0.h-=v0.h
# CHECK-NEXT: 1e01e0e0 { if (q0) v0.h -= v0.h }

//  V6_vsubhsat
//  Vd32.h=vsub(Vu32.h,Vv32.h):sat
    v0.h=vsub(v0.h,v0.h):sat
# CHECK-NEXT: 1c60c040 { v0.h = vsub(v0.h,v0.h):sat }

//  V6_vsubhsat_dv
//  Vdd32.h=vsub(Vuu32.h,Vvv32.h):sat
    v1:0.h=vsub(v1:0.h,v1:0.h):sat
# CHECK-NEXT: 1ca0c000 { v1:0.h = vsub(v1:0.h,v1:0.h):sat }

//  V6_vsubhw
//  Vdd32.w=vsub(Vu32.h,Vv32.h)
    v1:0.w=vsub(v0.h,v0.h)
# CHECK-NEXT: 1ca0c0e0 { v1:0.w = vsub(v0.h,v0.h) }

//  V6_vsububh
//  Vdd32.h=vsub(Vu32.ub,Vv32.ub)
    v1:0.h=vsub(v0.ub,v0.ub)
# CHECK-NEXT: 1ca0c0a0 { v1:0.h = vsub(v0.ub,v0.ub) }

//  V6_vsububsat
//  Vd32.ub=vsub(Vu32.ub,Vv32.ub):sat
    v0.ub=vsub(v0.ub,v0.ub):sat
# CHECK-NEXT: 1c60c000 { v0.ub = vsub(v0.ub,v0.ub):sat }

//  V6_vsububsat_dv
//  Vdd32.ub=vsub(Vuu32.ub,Vvv32.ub):sat
    v1:0.ub=vsub(v1:0.ub,v1:0.ub):sat
# CHECK-NEXT: 1c80c0c0 { v1:0.ub = vsub(v1:0.ub,v1:0.ub):sat }

//  V6_vsubububb_sat
//  Vd32.ub=vsub(Vu32.ub,Vv32.b):sat
    v0.ub=vsub(v0.ub,v0.b):sat
# CHECK-NEXT: 1ea0c0a0 { v0.ub = vsub(v0.ub,v0.b):sat }

//  V6_vsubuhsat
//  Vd32.uh=vsub(Vu32.uh,Vv32.uh):sat
    v0.uh=vsub(v0.uh,v0.uh):sat
# CHECK-NEXT: 1c60c020 { v0.uh = vsub(v0.uh,v0.uh):sat }

//  V6_vsubuhsat_dv
//  Vdd32.uh=vsub(Vuu32.uh,Vvv32.uh):sat
    v1:0.uh=vsub(v1:0.uh,v1:0.uh):sat
# CHECK-NEXT: 1c80c0e0 { v1:0.uh = vsub(v1:0.uh,v1:0.uh):sat }

//  V6_vsubuhw
//  Vdd32.w=vsub(Vu32.uh,Vv32.uh)
    v1:0.w=vsub(v0.uh,v0.uh)
# CHECK-NEXT: 1ca0c0c0 { v1:0.w = vsub(v0.uh,v0.uh) }

//  V6_vsubuwsat
//  Vd32.uw=vsub(Vu32.uw,Vv32.uw):sat
    v0.uw=vsub(v0.uw,v0.uw):sat
# CHECK-NEXT: 1fc0c080 { v0.uw = vsub(v0.uw,v0.uw):sat }

//  V6_vsubuwsat_dv
//  Vdd32.uw=vsub(Vuu32.uw,Vvv32.uw):sat
    v1:0.uw=vsub(v1:0.uw,v1:0.uw):sat
# CHECK-NEXT: 1ea0c060 { v1:0.uw = vsub(v1:0.uw,v1:0.uw):sat }

//  V6_vsubw
//  Vd32.w=vsub(Vu32.w,Vv32.w)
    v0.w=vsub(v0.w,v0.w)
# CHECK-NEXT: 1c40c0e0 { v0.w = vsub(v0.w,v0.w) }

//  V6_vsubw_dv
//  Vdd32.w=vsub(Vuu32.w,Vvv32.w)
    v1:0.w=vsub(v1:0.w,v1:0.w)
# CHECK-NEXT: 1c80c0a0 { v1:0.w = vsub(v1:0.w,v1:0.w) }

//  V6_vsubwnq
//  if (!Qv4) Vx32.w-=Vu32.w
    if (!q0) v0.w-=v0.w
# CHECK-NEXT: 1e02e060 { if (!q0) v0.w -= v0.w }

//  V6_vsubwq
//  if (Qv4) Vx32.w-=Vu32.w
    if (q0) v0.w-=v0.w
# CHECK-NEXT: 1e02e000 { if (q0) v0.w -= v0.w }

//  V6_vsubwsat
//  Vd32.w=vsub(Vu32.w,Vv32.w):sat
    v0.w=vsub(v0.w,v0.w):sat
# CHECK-NEXT: 1c60c060 { v0.w = vsub(v0.w,v0.w):sat }

//  V6_vsubwsat_dv
//  Vdd32.w=vsub(Vuu32.w,Vvv32.w):sat
    v1:0.w=vsub(v1:0.w,v1:0.w):sat
# CHECK-NEXT: 1ca0c020 { v1:0.w = vsub(v1:0.w,v1:0.w):sat }

//  V6_vswap
//  Vdd32=vswap(Qt4,Vu32,Vv32)
    v1:0=vswap(q0,v0,v0)
# CHECK-NEXT: 1ea0e000 { v1:0 = vswap(q0,v0,v0) }

//  V6_vtmpyb
//  Vdd32.h=vtmpy(Vuu32.b,Rt32.b)
    v1:0.h=vtmpy(v1:0.b,r0.b)
# CHECK-NEXT: 1900c000 { v1:0.h = vtmpy(v1:0.b,r0.b) }

//  V6_vtmpyb_acc
//  Vxx32.h+=vtmpy(Vuu32.b,Rt32.b)
    v1:0.h+=vtmpy(v1:0.b,r0.b)
# CHECK-NEXT: 1900e000 { v1:0.h += vtmpy(v1:0.b,r0.b) }

//  V6_vtmpybus
//  Vdd32.h=vtmpy(Vuu32.ub,Rt32.b)
    v1:0.h=vtmpy(v1:0.ub,r0.b)
# CHECK-NEXT: 1900c020 { v1:0.h = vtmpy(v1:0.ub,r0.b) }

//  V6_vtmpybus_acc
//  Vxx32.h+=vtmpy(Vuu32.ub,Rt32.b)
    v1:0.h+=vtmpy(v1:0.ub,r0.b)
# CHECK-NEXT: 1900e020 { v1:0.h += vtmpy(v1:0.ub,r0.b) }

//  V6_vtmpyhb
//  Vdd32.w=vtmpy(Vuu32.h,Rt32.b)
    v1:0.w=vtmpy(v1:0.h,r0.b)
# CHECK-NEXT: 19a0c080 { v1:0.w = vtmpy(v1:0.h,r0.b) }

//  V6_vtmpyhb_acc
//  Vxx32.w+=vtmpy(Vuu32.h,Rt32.b)
    v1:0.w+=vtmpy(v1:0.h,r0.b)
# CHECK-NEXT: 1900e040 { v1:0.w += vtmpy(v1:0.h,r0.b) }

//  V6_vunpackb
//  Vdd32.h=vunpack(Vu32.b)
    v1:0.h=vunpack(v0.b)
# CHECK-NEXT: 1e01c040 { v1:0.h = vunpack(v0.b) }

//  V6_vunpackh
//  Vdd32.w=vunpack(Vu32.h)
    v1:0.w=vunpack(v0.h)
# CHECK-NEXT: 1e01c060 { v1:0.w = vunpack(v0.h) }

//  V6_vunpackob
//  Vxx32.h|=vunpacko(Vu32.b)
    v1:0.h|=vunpacko(v0.b)
# CHECK-NEXT: 1e00e000 { v1:0.h |= vunpacko(v0.b) }

//  V6_vunpackoh
//  Vxx32.w|=vunpacko(Vu32.h)
    v1:0.w|=vunpacko(v0.h)
# CHECK-NEXT: 1e00e020 { v1:0.w |= vunpacko(v0.h) }

//  V6_vunpackub
//  Vdd32.uh=vunpack(Vu32.ub)
    v1:0.uh=vunpack(v0.ub)
# CHECK-NEXT: 1e01c000 { v1:0.uh = vunpack(v0.ub) }

//  V6_vunpackuh
//  Vdd32.uw=vunpack(Vu32.uh)
    v1:0.uw=vunpack(v0.uh)
# CHECK-NEXT: 1e01c020 { v1:0.uw = vunpack(v0.uh) }

//  V6_vwhist128
//  vwhist128
    vwhist128
# CHECK-NEXT: 1e00e480 { vwhist128 }

//  V6_vwhist128m
//  vwhist128(#u1)
    vwhist128(#0)
# CHECK-NEXT: 1e00e680 { vwhist128(#0) }

//  V6_vwhist128q
//  vwhist128(Qv4)
    vwhist128(q0)
# CHECK-NEXT: 1e02e480 { vwhist128(q0) }

//  V6_vwhist128qm
//  vwhist128(Qv4,#u1)
    vwhist128(q0,#0)
# CHECK-NEXT: 1e02e680 { vwhist128(q0,#0) }

//  V6_vwhist256
//  vwhist256
    vwhist256
# CHECK-NEXT: 1e00e280 { vwhist256 }

//  V6_vwhist256_sat
//  vwhist256:sat
    vwhist256:sat
# CHECK-NEXT: 1e00e380 { vwhist256:sat }

//  V6_vwhist256q
//  vwhist256(Qv4)
    vwhist256(q0)
# CHECK-NEXT: 1e02e280 { vwhist256(q0) }

//  V6_vwhist256q_sat
//  vwhist256(Qv4):sat
    vwhist256(q0):sat
# CHECK-NEXT: 1e02e380 { vwhist256(q0):sat }

//  V6_vxor
//  Vd32=vxor(Vu32,Vv32)
    v0=vxor(v0,v0)
# CHECK-NEXT: 1c20c0e0 { v0 = vxor(v0,v0) }

//  V6_vzb
//  Vdd32.uh=vzxt(Vu32.ub)
    v1:0.uh=vzxt(v0.ub)
# CHECK-NEXT: 1e02c020 { v1:0.uh = vzxt(v0.ub) }

//  V6_vzh
//  Vdd32.uw=vzxt(Vu32.uh)
    v1:0.uw=vzxt(v0.uh)
# CHECK-NEXT: 1e02c040 { v1:0.uw = vzxt(v0.uh) }

//  V6_zLd_ai
//  z=vmem(Rt32+#s4)
    z=vmem(r0+#0)
# CHECK-NEXT: 2c00c000 { z = vmem(r0+#0) }

//  V6_zLd_pi
//  z=vmem(Rx32++#s3)
    z=vmem(r0++#0)
# CHECK-NEXT: 2d00c000 { z = vmem(r0++#0) }

//  V6_zLd_ppu
//  z=vmem(Rx32++Mu2)
    z=vmem(r0++m0)
# CHECK-NEXT: 2d00c001 { z = vmem(r0++m0) }

//  V6_zLd_pred_ai
//  if (Pv4) z=vmem(Rt32+#s4)
    if (p0) z=vmem(r0+#0)
# CHECK-NEXT: 2c80c000 { if (p0) z = vmem(r0+#0) }

//  V6_zLd_pred_pi
//  if (Pv4) z=vmem(Rx32++#s3)
    if (p0) z=vmem(r0++#0)
# CHECK-NEXT: 2d80c000 { if (p0) z = vmem(r0++#0) }

//  V6_zLd_pred_ppu
//  if (Pv4) z=vmem(Rx32++Mu2)
    if (p0) z=vmem(r0++m0)
# CHECK-NEXT: 2d80c001 { if (p0) z = vmem(r0++m0) }

//  V6_zextract
//  Vd32=zextract(Rt32)
    v0=zextract(r0)
# CHECK-NEXT: 19a0c120 { v0 = zextract(r0) }
