1 # RUN: llvm-mc -triple=hexagon -mv65 -mhvx -filetype=obj %s | llvm-objdump --no-print-imm-hex --mcpu=hexagonv65 --mattr=+hvx -d - | FileCheck %s
3 // Warning
: This file is auto generated by mktest.py. Do
not edit
!
4 // Created on
: 2016-06-01 @
17:33:01
6 // /usr2
/mlambert
/Tags
/iset.py.v65_20160513
10 // Vx32.uw+
=vmpye
(Vu32.uh
,Rt32.uh
)
11 V0.uw+
=vmpye
(V0.uh
,R0.uh
)
12 # CHECK: 1980e060 { v0.uw += vmpye(v0.uh,r0.uh) }
15 // if
(Qs4
) vtmp.w
=vgather
(Rt32
,Mu2
,Vv32.w
).w
16 if
(Q0
) vtmp.w
=vgather
(R0,M0
,V0.w
).w
17 # CHECK: 2f00c400 { if (q0) vtmp.w = vgather(r0,m0,v0.w).w }
20 // vscatter
(Rt32
,Mu2
,Vv32.w
).w=Vw32
21 vscatter
(R0,M0
,V0.w
).w=V0
22 # CHECK: 2f20c000 { vscatter(r0,m0,v0.w).w = v0 }
25 // vscatter
(Rt32
,Mu2
,Vv32.h
).h=Vw32
26 vscatter
(R0,M0
,V0.h
).h=V0
27 # CHECK: 2f20c020 { vscatter(r0,m0,v0.h).h = v0 }
30 // Vd32.h
=vlut4
(Vu32.uh
,Rtt32.h
)
31 V0.h
=vlut4
(V0.uh
,R1:0.h)
32 # CHECK: 1960c080 { v0.h = vlut4(v0.uh,r1:0.h) }
35 // if
(Qs4
) vtmp.h
=vgather
(Rt32
,Mu2
,Vvv32.w
).h
36 if
(Q0
) vtmp.h
=vgather
(R0,M0
,V1
:0.w).h
37 # CHECK: 2f00c600 { if (q0) vtmp.h = vgather(r0,m0,v1:0.w).h }
40 // vmem
(Rt32+
#s4):scatter_release
41 vmem
(R0+
#0):scatter_release
42 # CHECK: 2820c028 { vmem(r0+#0):scatter_release }
45 // vtmp.h
=vgather
(Rt32
,Mu2
,Vv32.h
).h
46 vtmp.h
=vgather
(R0,M0
,V0.h
).h
47 # CHECK: 2f00c100 { vtmp.h = vgather(r0,m0,v0.h).h }
50 // vscatter
(Rt32
,Mu2
,Vvv32.w
).h=Vw32
51 vscatter
(R0,M0
,V1
:0.w).h=V0
52 # CHECK: 2f20c040 { vscatter(r0,m0,v1:0.w).h = v0 }
55 // vmem
(Rx32+
+Mu2
):scatter_release
56 vmem
(R0+
+M0
):scatter_release
57 # CHECK: 2b20c028 { vmem(r0++m0):scatter_release }
60 // vscatter
(Rt32
,Mu2
,Vvv32.w
).h+=Vw32
61 vscatter
(R0,M0
,V1
:0.w).h+=V0
62 # CHECK: 2f20c0c0 { vscatter(r0,m0,v1:0.w).h += v0 }
65 // Vdd32.h
=vmpa
(Vuu32.ub
,Rt32.ub
)
66 V1
:0.h=vmpa(V1:0.ub,R0.ub)
67 # CHECK: 1960c060 { v1:0.h = vmpa(v1:0.ub,r0.ub) }
70 // Vd32.ub
=vasr
(Vu32.uh
,Vv32.uh
,Rt8
):rnd
:sat
71 V0.ub
=vasr
(V0.uh
,V0.uh
,R0):rnd
:sat
72 # CHECK: 1800c0e0 { v0.ub = vasr(v0.uh,v0.uh,r0):rnd:sat }
75 // vscatter
(Rt32
,Mu2
,Vv32.h
).h+=Vw32
76 vscatter
(R0,M0
,V0.h
).h+=V0
77 # CHECK: 2f20c0a0 { vscatter(r0,m0,v0.h).h += v0 }
80 // vtmp.w
=vgather
(Rt32
,Mu2
,Vv32.w
).w
81 vtmp.w
=vgather
(R0,M0
,V0.w
).w
82 # CHECK: 2f00c000 { vtmp.w = vgather(r0,m0,v0.w).w }
85 // Vd32.ub
=vasr
(Vu32.uh
,Vv32.uh
,Rt8
):sat
86 V0.ub
=vasr
(V0.uh
,V0.uh
,R0):sat
87 # CHECK: 1800e0a0 { v0.ub = vasr(v0.uh,v0.uh,r0):sat }
90 // if
(Qs4
) vscatter
(Rt32
,Mu2
,Vvv32.w
).h=Vw32
91 if
(Q0
) vscatter
(R0,M0
,V1
:0.w).h=V0
92 # CHECK: 2fa0c000 { if (q0) vscatter(r0,m0,v1:0.w).h = v0 }
95 // if
(Qs4
) vtmp.h
=vgather
(Rt32
,Mu2
,Vv32.h
).h
96 if
(Q0
) vtmp.h
=vgather
(R0,M0
,V0.h
).h
97 # CHECK: 2f00c500 { if (q0) vtmp.h = vgather(r0,m0,v0.h).h }
100 // Vx32.h
=vmps
(Vx32.h
,Vu32.uh
,Rtt32.uh
):sat
101 V0.h
=vmps
(V0.h
,V0.uh
,R1:0.uh):sat
102 # CHECK: 1980e0c0 { v0.h = vmps(v0.h,v0.uh,r1:0.uh):sat }
105 // vmem
(Rx32+
+#s3):scatter_release
106 vmem
(R0+
+#0):scatter_release
107 # CHECK: 2920c028 { vmem(r0++#0):scatter_release }
110 // vtmp.h
=vgather
(Rt32
,Mu2
,Vvv32.w
).h
111 vtmp.h
=vgather
(R0,M0
,V1
:0.w).h
112 # CHECK: 2f00c200 { vtmp.h = vgather(r0,m0,v1:0.w).h }
115 // Vd32.uw
=vmpye
(Vu32.uh
,Rt32.uh
)
116 V0.uw
=vmpye
(V0.uh
,R0.uh
)
117 # CHECK: 1960c040 { v0.uw = vmpye(v0.uh,r0.uh) }
120 // if
(Qs4
) vscatter
(Rt32
,Mu2
,Vv32.w
).w=Vw32
121 if
(Q0
) vscatter
(R0,M0
,V0.w
).w=V0
122 # CHECK: 2f80c000 { if (q0) vscatter(r0,m0,v0.w).w = v0 }
125 // Vd32.uh
=vasr
(Vu32.uw
,Vv32.uw
,Rt8
):sat
126 V0.uh
=vasr
(V0.uw
,V0.uw
,R0):sat
127 # CHECK: 1800e080 { v0.uh = vasr(v0.uw,v0.uw,r0):sat }
130 // Vd32.h
=prefixsum
(Qv4
)
132 # CHECK: 1e03e140 { v0.h = prefixsum(q0) }
135 // Vxx32.h+
=vmpa
(Vuu32.ub
,Rt32.ub
)
136 V1
:0.h+=vmpa(V1:0.ub,R0.ub)
137 # CHECK: 19a0e080 { v1:0.h += vmpa(v1:0.ub,r0.ub) }
140 // Vd32.w
=prefixsum
(Qv4
)
142 # CHECK: 1e03e240 { v0.w = prefixsum(q0) }
145 // Vd32.
b=prefixsum
(Qv4
)
147 # CHECK: 1e03e040 { v0.b = prefixsum(q0) }
150 // Vd32.
b=vabs
(Vu32.
b)
152 # CHECK: 1e01c080 { v0.b = vabs(v0.b) }
155 // vscatter
(Rt32
,Mu2
,Vv32.w
).w+=Vw32
156 vscatter
(R0,M0
,V0.w
).w+=V0
157 # CHECK: 2f20c080 { vscatter(r0,m0,v0.w).w += v0 }
160 // if
(Qs4
) vscatter
(Rt32
,Mu2
,Vv32.h
).h=Vw32
161 if
(Q0
) vscatter
(R0,M0
,V0.h
).h=V0
162 # CHECK: 2f80c080 { if (q0) vscatter(r0,m0,v0.h).h = v0 }
165 // Vx32.h
=vmpa
(Vx32.h
,Vu32.uh
,Rtt32.uh
):sat
166 V0.h
=vmpa
(V0.h
,V0.uh
,R1:0.uh):sat
167 # CHECK: 1980e0a0 { v0.h = vmpa(v0.h,v0.uh,r1:0.uh):sat }
170 // Vd32.
b=vabs
(Vu32.
b):sat
172 # CHECK: 1e01c0a0 { v0.b = vabs(v0.b):sat }
174 v1
:0.w+=vrmpy(v0.b, r1:0.ub)
175 # CHECK: 19a0e000 { v1:0.w += vrmpy(v0.b,r1:0.ub) }
177 V1
:0.uw+=vrmpy(v0.ub,r1:0.ub)
178 # CHECK: 19a0e0e0 { v1:0.uw += vrmpy(v0.ub,r1:0.ub) }
180 v1
:0.uw=vrmpy(v1.ub,r1:0.ub)
181 # CHECK: 19c0c180 { v1:0.uw = vrmpy(v1.ub,r1:0.ub) }
183 v1
:0.w=vrmpy(v1.b,r1:0.ub)
184 # CHECK: 19c0c1a0 { v1:0.w = vrmpy(v1.b,r1:0.ub) }