[ARM] Better OR's for MVE compares
[llvm-core.git] / test / MC / Hexagon / v65_all.s
blob4f52a063a34e55472d2230758198afa8d24e64df
1 # RUN: llvm-mc -arch=hexagon -mv65 -mhvx -filetype=obj %s | llvm-objdump -mv65 -mhvx -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
5 // Created using:
6 // /usr2/mlambert/Tags/iset.py.v65_20160513
9 // V6_vmpyuhe_acc
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) }
14 // V6_vgathermwq
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 }
19 // V6_vscattermw
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 }
24 // V6_vscattermh
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 }
29 // V6_vlut4
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) }
34 // V6_vgathermhwq
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 }
39 // V6_vS32b_srls_ai
40 // vmem(Rt32+#s4):scatter_release
41 vmem(R0+#0):scatter_release
42 # CHECK: 2820c028 { vmem(r0+#0):scatter_release }
44 // V6_vgathermh
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 }
49 // V6_vscattermhw
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 }
54 // V6_vS32b_srls_ppu
55 // vmem(Rx32++Mu2):scatter_release
56 vmem(R0++M0):scatter_release
57 # CHECK: 2b20c028 { vmem(r0++m0):scatter_release }
59 // V6_vscattermhw_add
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 }
64 // V6_vmpabuu
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) }
69 // V6_vasruhubrndsat
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 }
74 // V6_vscattermh_add
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 }
79 // V6_vgathermw
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 }
84 // V6_vasruhubsat
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 }
89 // V6_vscattermhwq
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 }
94 // V6_vgathermhq
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 }
99 // V6_vmpsuhuhsat
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 }
104 // V6_vS32b_srls_pi
105 // vmem(Rx32++#s3):scatter_release
106 vmem(R0++#0):scatter_release
107 # CHECK: 2920c028 { vmem(r0++#0):scatter_release }
109 // V6_vgathermhw
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 }
114 // V6_vmpyuhe
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) }
119 // V6_vscattermwq
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 }
124 // V6_vasruwuhsat
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 }
129 // V6_vprefixqh
130 // Vd32.h=prefixsum(Qv4)
131 V0.h=prefixsum(Q0)
132 # CHECK: 1e03e140 { v0.h = prefixsum(q0) }
134 // V6_vmpabuu_acc
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) }
139 // V6_vprefixqw
140 // Vd32.w=prefixsum(Qv4)
141 V0.w=prefixsum(Q0)
142 # CHECK: 1e03e240 { v0.w = prefixsum(q0) }
144 // V6_vprefixqb
145 // Vd32.b=prefixsum(Qv4)
146 V0.b=prefixsum(Q0)
147 # CHECK: 1e03e040 { v0.b = prefixsum(q0) }
149 // V6_vabsb
150 // Vd32.b=vabs(Vu32.b)
151 V0.b=vabs(V0.b)
152 # CHECK: 1e01c080 { v0.b = vabs(v0.b) }
154 // V6_vscattermw_add
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 }
159 // V6_vscattermhq
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 }
164 // V6_vmpauhuhsat
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 }
169 // V6_vabsb_sat
170 // Vd32.b=vabs(Vu32.b):sat
171 V0.b=vabs(V0.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) }