2021-05-04 20:00:01 +02:00
|
|
|
# RUN: llvm-mc -arch=hexagon -mv65 -mhvx -filetype=obj %s | llvm-objdump --mcpu=hexagonv65 --mattr=+hvx -d - | FileCheck %s
|
2017-12-11 19:57:54 +01:00
|
|
|
|
|
|
|
// 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) }
|