1
2
3 package main
4
5 func simdARM64Ops(v11, v21, v31, vgp, vgpv, vfpv regInfo) []opData {
6 return []opData{
7 {name: "VABS2D", argLength: 1, reg: v11, asm: "VABS", typ: "Vec128"},
8 {name: "VABS4S", argLength: 1, reg: v11, asm: "VABS", typ: "Vec128"},
9 {name: "VABS8H", argLength: 1, reg: v11, asm: "VABS", typ: "Vec128"},
10 {name: "VABS16B", argLength: 1, reg: v11, asm: "VABS", typ: "Vec128"},
11 {name: "VADD2D", argLength: 2, reg: v21, asm: "VADD", commutative: true, typ: "Vec128"},
12 {name: "VADD4S", argLength: 2, reg: v21, asm: "VADD", commutative: true, typ: "Vec128"},
13 {name: "VADD8H", argLength: 2, reg: v21, asm: "VADD", commutative: true, typ: "Vec128"},
14 {name: "VADD16B", argLength: 2, reg: v21, asm: "VADD", commutative: true, typ: "Vec128"},
15 {name: "VADDP2D", argLength: 2, reg: v21, asm: "VADDP", typ: "Vec128"},
16 {name: "VADDP4S", argLength: 2, reg: v21, asm: "VADDP", typ: "Vec128"},
17 {name: "VADDP8H", argLength: 2, reg: v21, asm: "VADDP", typ: "Vec128"},
18 {name: "VADDV4S", argLength: 1, reg: v11, asm: "VADDV", typ: "Vec128"},
19 {name: "VADDV8H", argLength: 1, reg: v11, asm: "VADDV", typ: "Vec128"},
20 {name: "VADDV16B", argLength: 1, reg: v11, asm: "VADDV", typ: "Vec128"},
21 {name: "VAND16B", argLength: 2, reg: v21, asm: "VAND", commutative: true, typ: "Vec128"},
22 {name: "VBIC16B", argLength: 2, reg: v21, asm: "VBIC", typ: "Vec128"},
23 {name: "VBIF16B", argLength: 3, reg: v31, asm: "VBIF", typ: "Vec128", resultInArg0: true},
24 {name: "VBIT16B", argLength: 3, reg: v31, asm: "VBIT", typ: "Vec128", resultInArg0: true},
25 {name: "VCLS4S", argLength: 1, reg: v11, asm: "VCLS", typ: "Vec128"},
26 {name: "VCLS8H", argLength: 1, reg: v11, asm: "VCLS", typ: "Vec128"},
27 {name: "VCLS16B", argLength: 1, reg: v11, asm: "VCLS", typ: "Vec128"},
28 {name: "VCLZ4S", argLength: 1, reg: v11, asm: "VCLZ", typ: "Vec128"},
29 {name: "VCLZ8H", argLength: 1, reg: v11, asm: "VCLZ", typ: "Vec128"},
30 {name: "VCLZ16B", argLength: 1, reg: v11, asm: "VCLZ", typ: "Vec128"},
31 {name: "VCMEQ2D", argLength: 2, reg: v21, asm: "VCMEQ", commutative: true, typ: "Vec128"},
32 {name: "VCMEQ4S", argLength: 2, reg: v21, asm: "VCMEQ", commutative: true, typ: "Vec128"},
33 {name: "VCMEQ8H", argLength: 2, reg: v21, asm: "VCMEQ", commutative: true, typ: "Vec128"},
34 {name: "VCMEQ16B", argLength: 2, reg: v21, asm: "VCMEQ", commutative: true, typ: "Vec128"},
35 {name: "VCMGE2D", argLength: 2, reg: v21, asm: "VCMGE", typ: "Vec128"},
36 {name: "VCMGE4S", argLength: 2, reg: v21, asm: "VCMGE", typ: "Vec128"},
37 {name: "VCMGE8H", argLength: 2, reg: v21, asm: "VCMGE", typ: "Vec128"},
38 {name: "VCMGE16B", argLength: 2, reg: v21, asm: "VCMGE", typ: "Vec128"},
39 {name: "VCMGT2D", argLength: 2, reg: v21, asm: "VCMGT", typ: "Vec128"},
40 {name: "VCMGT4S", argLength: 2, reg: v21, asm: "VCMGT", typ: "Vec128"},
41 {name: "VCMGT8H", argLength: 2, reg: v21, asm: "VCMGT", typ: "Vec128"},
42 {name: "VCMGT16B", argLength: 2, reg: v21, asm: "VCMGT", typ: "Vec128"},
43 {name: "VCMHI2D", argLength: 2, reg: v21, asm: "VCMHI", typ: "Vec128"},
44 {name: "VCMHI4S", argLength: 2, reg: v21, asm: "VCMHI", typ: "Vec128"},
45 {name: "VCMHI8H", argLength: 2, reg: v21, asm: "VCMHI", typ: "Vec128"},
46 {name: "VCMHI16B", argLength: 2, reg: v21, asm: "VCMHI", typ: "Vec128"},
47 {name: "VCMHS2D", argLength: 2, reg: v21, asm: "VCMHS", typ: "Vec128"},
48 {name: "VCMHS4S", argLength: 2, reg: v21, asm: "VCMHS", typ: "Vec128"},
49 {name: "VCMHS8H", argLength: 2, reg: v21, asm: "VCMHS", typ: "Vec128"},
50 {name: "VCMHS16B", argLength: 2, reg: v21, asm: "VCMHS", typ: "Vec128"},
51 {name: "VCNT16B", argLength: 1, reg: v11, asm: "VCNT", typ: "Vec128"},
52 {name: "VEOR16B", argLength: 2, reg: v21, asm: "VEOR", commutative: true, typ: "Vec128"},
53 {name: "VFABS2D", argLength: 1, reg: v11, asm: "VFABS", typ: "Vec128"},
54 {name: "VFABS4S", argLength: 1, reg: v11, asm: "VFABS", typ: "Vec128"},
55 {name: "VFADD2D", argLength: 2, reg: v21, asm: "VFADD", commutative: true, typ: "Vec128"},
56 {name: "VFADD4S", argLength: 2, reg: v21, asm: "VFADD", commutative: true, typ: "Vec128"},
57 {name: "VFADDP2D", argLength: 2, reg: v21, asm: "VFADDP", typ: "Vec128"},
58 {name: "VFADDP4S", argLength: 2, reg: v21, asm: "VFADDP", typ: "Vec128"},
59 {name: "VFCMEQ2D", argLength: 2, reg: v21, asm: "VFCMEQ", commutative: true, typ: "Vec128"},
60 {name: "VFCMEQ4S", argLength: 2, reg: v21, asm: "VFCMEQ", commutative: true, typ: "Vec128"},
61 {name: "VFCMGE2D", argLength: 2, reg: v21, asm: "VFCMGE", typ: "Vec128"},
62 {name: "VFCMGE4S", argLength: 2, reg: v21, asm: "VFCMGE", typ: "Vec128"},
63 {name: "VFCMGT2D", argLength: 2, reg: v21, asm: "VFCMGT", typ: "Vec128"},
64 {name: "VFCMGT4S", argLength: 2, reg: v21, asm: "VFCMGT", typ: "Vec128"},
65 {name: "VFCVTL2_4S", argLength: 1, reg: v11, asm: "VFCVTL2", typ: "Vec128"},
66 {name: "VFCVTL4S", argLength: 1, reg: v11, asm: "VFCVTL", typ: "Vec128"},
67 {name: "VFCVTN2D", argLength: 1, reg: v11, asm: "VFCVTN", typ: "Vec128"},
68 {name: "VFCVTN2_2D", argLength: 2, reg: v21, asm: "VFCVTN2", typ: "Vec128", resultInArg0: true},
69 {name: "VFCVTZS2D", argLength: 1, reg: v11, asm: "VFCVTZS", typ: "Vec128"},
70 {name: "VFCVTZS4S", argLength: 1, reg: v11, asm: "VFCVTZS", typ: "Vec128"},
71 {name: "VFCVTZU2D", argLength: 1, reg: v11, asm: "VFCVTZU", typ: "Vec128"},
72 {name: "VFCVTZU4S", argLength: 1, reg: v11, asm: "VFCVTZU", typ: "Vec128"},
73 {name: "VFDIV2D", argLength: 2, reg: v21, asm: "VFDIV", typ: "Vec128"},
74 {name: "VFDIV4S", argLength: 2, reg: v21, asm: "VFDIV", typ: "Vec128"},
75 {name: "VFMAX2D", argLength: 2, reg: v21, asm: "VFMAX", commutative: true, typ: "Vec128"},
76 {name: "VFMAX4S", argLength: 2, reg: v21, asm: "VFMAX", commutative: true, typ: "Vec128"},
77 {name: "VFMAXV4S", argLength: 1, reg: v11, asm: "VFMAXV", typ: "Vec128"},
78 {name: "VFMIN2D", argLength: 2, reg: v21, asm: "VFMIN", commutative: true, typ: "Vec128"},
79 {name: "VFMIN4S", argLength: 2, reg: v21, asm: "VFMIN", commutative: true, typ: "Vec128"},
80 {name: "VFMINV4S", argLength: 1, reg: v11, asm: "VFMINV", typ: "Vec128"},
81 {name: "VFMLA2D", argLength: 3, reg: v31, asm: "VFMLA", typ: "Vec128", resultInArg0: true},
82 {name: "VFMLA4S", argLength: 3, reg: v31, asm: "VFMLA", typ: "Vec128", resultInArg0: true},
83 {name: "VFMUL2D", argLength: 2, reg: v21, asm: "VFMUL", commutative: true, typ: "Vec128"},
84 {name: "VFMUL4S", argLength: 2, reg: v21, asm: "VFMUL", commutative: true, typ: "Vec128"},
85 {name: "VFNEG2D", argLength: 1, reg: v11, asm: "VFNEG", typ: "Vec128"},
86 {name: "VFNEG4S", argLength: 1, reg: v11, asm: "VFNEG", typ: "Vec128"},
87 {name: "VFRINTM2D", argLength: 1, reg: v11, asm: "VFRINTM", typ: "Vec128"},
88 {name: "VFRINTM4S", argLength: 1, reg: v11, asm: "VFRINTM", typ: "Vec128"},
89 {name: "VFRINTN2D", argLength: 1, reg: v11, asm: "VFRINTN", typ: "Vec128"},
90 {name: "VFRINTN4S", argLength: 1, reg: v11, asm: "VFRINTN", typ: "Vec128"},
91 {name: "VFRINTP2D", argLength: 1, reg: v11, asm: "VFRINTP", typ: "Vec128"},
92 {name: "VFRINTP4S", argLength: 1, reg: v11, asm: "VFRINTP", typ: "Vec128"},
93 {name: "VFRINTZ2D", argLength: 1, reg: v11, asm: "VFRINTZ", typ: "Vec128"},
94 {name: "VFRINTZ4S", argLength: 1, reg: v11, asm: "VFRINTZ", typ: "Vec128"},
95 {name: "VFSQRT2D", argLength: 1, reg: v11, asm: "VFSQRT", typ: "Vec128"},
96 {name: "VFSQRT4S", argLength: 1, reg: v11, asm: "VFSQRT", typ: "Vec128"},
97 {name: "VFSUB2D", argLength: 2, reg: v21, asm: "VFSUB", typ: "Vec128"},
98 {name: "VFSUB4S", argLength: 2, reg: v21, asm: "VFSUB", typ: "Vec128"},
99 {name: "VMLA4S", argLength: 3, reg: v31, asm: "VMLA", typ: "Vec128", resultInArg0: true},
100 {name: "VMLA8H", argLength: 3, reg: v31, asm: "VMLA", typ: "Vec128", resultInArg0: true},
101 {name: "VMLA16B", argLength: 3, reg: v31, asm: "VMLA", typ: "Vec128", resultInArg0: true},
102 {name: "VMUL4S", argLength: 2, reg: v21, asm: "VMUL", commutative: true, typ: "Vec128"},
103 {name: "VMUL8H", argLength: 2, reg: v21, asm: "VMUL", commutative: true, typ: "Vec128"},
104 {name: "VMUL16B", argLength: 2, reg: v21, asm: "VMUL", commutative: true, typ: "Vec128"},
105 {name: "VNEG2D", argLength: 1, reg: v11, asm: "VNEG", typ: "Vec128"},
106 {name: "VNEG4S", argLength: 1, reg: v11, asm: "VNEG", typ: "Vec128"},
107 {name: "VNEG8H", argLength: 1, reg: v11, asm: "VNEG", typ: "Vec128"},
108 {name: "VNEG16B", argLength: 1, reg: v11, asm: "VNEG", typ: "Vec128"},
109 {name: "VNOT16B", argLength: 1, reg: v11, asm: "VNOT", typ: "Vec128"},
110 {name: "VORN16B", argLength: 2, reg: v21, asm: "VORN", typ: "Vec128"},
111 {name: "VORR16B", argLength: 2, reg: v21, asm: "VORR", commutative: true, typ: "Vec128"},
112 {name: "VSCVTF2D", argLength: 1, reg: v11, asm: "VSCVTF", typ: "Vec128"},
113 {name: "VSCVTF4S", argLength: 1, reg: v11, asm: "VSCVTF", typ: "Vec128"},
114 {name: "VSMAX4S", argLength: 2, reg: v21, asm: "VSMAX", commutative: true, typ: "Vec128"},
115 {name: "VSMAX8H", argLength: 2, reg: v21, asm: "VSMAX", commutative: true, typ: "Vec128"},
116 {name: "VSMAX16B", argLength: 2, reg: v21, asm: "VSMAX", commutative: true, typ: "Vec128"},
117 {name: "VSMAXV4S", argLength: 1, reg: v11, asm: "VSMAXV", typ: "Vec128"},
118 {name: "VSMAXV8H", argLength: 1, reg: v11, asm: "VSMAXV", typ: "Vec128"},
119 {name: "VSMAXV16B", argLength: 1, reg: v11, asm: "VSMAXV", typ: "Vec128"},
120 {name: "VSMIN4S", argLength: 2, reg: v21, asm: "VSMIN", commutative: true, typ: "Vec128"},
121 {name: "VSMIN8H", argLength: 2, reg: v21, asm: "VSMIN", commutative: true, typ: "Vec128"},
122 {name: "VSMIN16B", argLength: 2, reg: v21, asm: "VSMIN", commutative: true, typ: "Vec128"},
123 {name: "VSMINV4S", argLength: 1, reg: v11, asm: "VSMINV", typ: "Vec128"},
124 {name: "VSMINV8H", argLength: 1, reg: v11, asm: "VSMINV", typ: "Vec128"},
125 {name: "VSMINV16B", argLength: 1, reg: v11, asm: "VSMINV", typ: "Vec128"},
126 {name: "VSMULL2_4S", argLength: 2, reg: v21, asm: "VSMULL2", commutative: true, typ: "Vec128"},
127 {name: "VSMULL2_8H", argLength: 2, reg: v21, asm: "VSMULL2", commutative: true, typ: "Vec128"},
128 {name: "VSMULL2_16B", argLength: 2, reg: v21, asm: "VSMULL2", commutative: true, typ: "Vec128"},
129 {name: "VSMULL4S", argLength: 2, reg: v21, asm: "VSMULL", commutative: true, typ: "Vec128"},
130 {name: "VSMULL8H", argLength: 2, reg: v21, asm: "VSMULL", commutative: true, typ: "Vec128"},
131 {name: "VSMULL16B", argLength: 2, reg: v21, asm: "VSMULL", commutative: true, typ: "Vec128"},
132 {name: "VSQADD2D", argLength: 2, reg: v21, asm: "VSQADD", commutative: true, typ: "Vec128"},
133 {name: "VSQADD4S", argLength: 2, reg: v21, asm: "VSQADD", commutative: true, typ: "Vec128"},
134 {name: "VSQADD8H", argLength: 2, reg: v21, asm: "VSQADD", commutative: true, typ: "Vec128"},
135 {name: "VSQADD16B", argLength: 2, reg: v21, asm: "VSQADD", commutative: true, typ: "Vec128"},
136 {name: "VSQSHL2D", argLength: 2, reg: v21, asm: "VSQSHL", typ: "Vec128"},
137 {name: "VSQSHL4S", argLength: 2, reg: v21, asm: "VSQSHL", typ: "Vec128"},
138 {name: "VSQSHL8H", argLength: 2, reg: v21, asm: "VSQSHL", typ: "Vec128"},
139 {name: "VSQSHL16B", argLength: 2, reg: v21, asm: "VSQSHL", typ: "Vec128"},
140 {name: "VSQSUB2D", argLength: 2, reg: v21, asm: "VSQSUB", typ: "Vec128"},
141 {name: "VSQSUB4S", argLength: 2, reg: v21, asm: "VSQSUB", typ: "Vec128"},
142 {name: "VSQSUB8H", argLength: 2, reg: v21, asm: "VSQSUB", typ: "Vec128"},
143 {name: "VSQSUB16B", argLength: 2, reg: v21, asm: "VSQSUB", typ: "Vec128"},
144 {name: "VSQXTN2D", argLength: 1, reg: v11, asm: "VSQXTN", typ: "Vec128"},
145 {name: "VSQXTN2_2D", argLength: 2, reg: v21, asm: "VSQXTN2", typ: "Vec128", resultInArg0: true},
146 {name: "VSQXTN2_4S", argLength: 2, reg: v21, asm: "VSQXTN2", typ: "Vec128", resultInArg0: true},
147 {name: "VSQXTN2_8H", argLength: 2, reg: v21, asm: "VSQXTN2", typ: "Vec128", resultInArg0: true},
148 {name: "VSQXTN4S", argLength: 1, reg: v11, asm: "VSQXTN", typ: "Vec128"},
149 {name: "VSQXTN8H", argLength: 1, reg: v11, asm: "VSQXTN", typ: "Vec128"},
150 {name: "VSQXTUN2D", argLength: 1, reg: v11, asm: "VSQXTUN", typ: "Vec128"},
151 {name: "VSQXTUN2_2D", argLength: 2, reg: v21, asm: "VSQXTUN2", typ: "Vec128", resultInArg0: true},
152 {name: "VSQXTUN2_4S", argLength: 2, reg: v21, asm: "VSQXTUN2", typ: "Vec128", resultInArg0: true},
153 {name: "VSQXTUN2_8H", argLength: 2, reg: v21, asm: "VSQXTUN2", typ: "Vec128", resultInArg0: true},
154 {name: "VSQXTUN4S", argLength: 1, reg: v11, asm: "VSQXTUN", typ: "Vec128"},
155 {name: "VSQXTUN8H", argLength: 1, reg: v11, asm: "VSQXTUN", typ: "Vec128"},
156 {name: "VSRHADD4S", argLength: 2, reg: v21, asm: "VSRHADD", commutative: true, typ: "Vec128"},
157 {name: "VSRHADD8H", argLength: 2, reg: v21, asm: "VSRHADD", commutative: true, typ: "Vec128"},
158 {name: "VSRHADD16B", argLength: 2, reg: v21, asm: "VSRHADD", commutative: true, typ: "Vec128"},
159 {name: "VSSHL2D", argLength: 2, reg: v21, asm: "VSSHL", typ: "Vec128"},
160 {name: "VSSHL4S", argLength: 2, reg: v21, asm: "VSSHL", typ: "Vec128"},
161 {name: "VSSHL8H", argLength: 2, reg: v21, asm: "VSSHL", typ: "Vec128"},
162 {name: "VSSHL16B", argLength: 2, reg: v21, asm: "VSSHL", typ: "Vec128"},
163 {name: "VSUB2D", argLength: 2, reg: v21, asm: "VSUB", typ: "Vec128"},
164 {name: "VSUB4S", argLength: 2, reg: v21, asm: "VSUB", typ: "Vec128"},
165 {name: "VSUB8H", argLength: 2, reg: v21, asm: "VSUB", typ: "Vec128"},
166 {name: "VSUB16B", argLength: 2, reg: v21, asm: "VSUB", typ: "Vec128"},
167 {name: "VSXTL2_4S", argLength: 1, reg: v11, asm: "VSXTL2", typ: "Vec128"},
168 {name: "VSXTL2_8H", argLength: 1, reg: v11, asm: "VSXTL2", typ: "Vec128"},
169 {name: "VSXTL2_16B", argLength: 1, reg: v11, asm: "VSXTL2", typ: "Vec128"},
170 {name: "VSXTL4S", argLength: 1, reg: v11, asm: "VSXTL", typ: "Vec128"},
171 {name: "VSXTL8H", argLength: 1, reg: v11, asm: "VSXTL", typ: "Vec128"},
172 {name: "VSXTL16B", argLength: 1, reg: v11, asm: "VSXTL", typ: "Vec128"},
173 {name: "VTBL16B", argLength: 2, reg: v21, asm: "VTBL", typ: "Vec128"},
174 {name: "VTBX16B", argLength: 3, reg: v31, asm: "VTBX", typ: "Vec128", resultInArg0: true},
175 {name: "VTRN12D", argLength: 2, reg: v21, asm: "VTRN1", typ: "Vec128"},
176 {name: "VTRN14S", argLength: 2, reg: v21, asm: "VTRN1", typ: "Vec128"},
177 {name: "VTRN18H", argLength: 2, reg: v21, asm: "VTRN1", typ: "Vec128"},
178 {name: "VTRN22D", argLength: 2, reg: v21, asm: "VTRN2", typ: "Vec128"},
179 {name: "VTRN24S", argLength: 2, reg: v21, asm: "VTRN2", typ: "Vec128"},
180 {name: "VTRN28H", argLength: 2, reg: v21, asm: "VTRN2", typ: "Vec128"},
181 {name: "VTRN116B", argLength: 2, reg: v21, asm: "VTRN1", typ: "Vec128"},
182 {name: "VTRN216B", argLength: 2, reg: v21, asm: "VTRN2", typ: "Vec128"},
183 {name: "VUCVTF2D", argLength: 1, reg: v11, asm: "VUCVTF", typ: "Vec128"},
184 {name: "VUCVTF4S", argLength: 1, reg: v11, asm: "VUCVTF", typ: "Vec128"},
185 {name: "VUMAX4S", argLength: 2, reg: v21, asm: "VUMAX", commutative: true, typ: "Vec128"},
186 {name: "VUMAX8H", argLength: 2, reg: v21, asm: "VUMAX", commutative: true, typ: "Vec128"},
187 {name: "VUMAX16B", argLength: 2, reg: v21, asm: "VUMAX", commutative: true, typ: "Vec128"},
188 {name: "VUMAXV4S", argLength: 1, reg: v11, asm: "VUMAXV", typ: "Vec128"},
189 {name: "VUMAXV8H", argLength: 1, reg: v11, asm: "VUMAXV", typ: "Vec128"},
190 {name: "VUMAXV16B", argLength: 1, reg: v11, asm: "VUMAXV", typ: "Vec128"},
191 {name: "VUMIN4S", argLength: 2, reg: v21, asm: "VUMIN", commutative: true, typ: "Vec128"},
192 {name: "VUMIN8H", argLength: 2, reg: v21, asm: "VUMIN", commutative: true, typ: "Vec128"},
193 {name: "VUMIN16B", argLength: 2, reg: v21, asm: "VUMIN", commutative: true, typ: "Vec128"},
194 {name: "VUMINV4S", argLength: 1, reg: v11, asm: "VUMINV", typ: "Vec128"},
195 {name: "VUMINV8H", argLength: 1, reg: v11, asm: "VUMINV", typ: "Vec128"},
196 {name: "VUMINV16B", argLength: 1, reg: v11, asm: "VUMINV", typ: "Vec128"},
197 {name: "VUMULL2_4S", argLength: 2, reg: v21, asm: "VUMULL2", commutative: true, typ: "Vec128"},
198 {name: "VUMULL2_8H", argLength: 2, reg: v21, asm: "VUMULL2", commutative: true, typ: "Vec128"},
199 {name: "VUMULL2_16B", argLength: 2, reg: v21, asm: "VUMULL2", commutative: true, typ: "Vec128"},
200 {name: "VUMULL4S", argLength: 2, reg: v21, asm: "VUMULL", commutative: true, typ: "Vec128"},
201 {name: "VUMULL8H", argLength: 2, reg: v21, asm: "VUMULL", commutative: true, typ: "Vec128"},
202 {name: "VUMULL16B", argLength: 2, reg: v21, asm: "VUMULL", commutative: true, typ: "Vec128"},
203 {name: "VUQADD2D", argLength: 2, reg: v21, asm: "VUQADD", commutative: true, typ: "Vec128"},
204 {name: "VUQADD4S", argLength: 2, reg: v21, asm: "VUQADD", commutative: true, typ: "Vec128"},
205 {name: "VUQADD8H", argLength: 2, reg: v21, asm: "VUQADD", commutative: true, typ: "Vec128"},
206 {name: "VUQADD16B", argLength: 2, reg: v21, asm: "VUQADD", commutative: true, typ: "Vec128"},
207 {name: "VUQSHL2D", argLength: 2, reg: v21, asm: "VUQSHL", typ: "Vec128"},
208 {name: "VUQSHL4S", argLength: 2, reg: v21, asm: "VUQSHL", typ: "Vec128"},
209 {name: "VUQSHL8H", argLength: 2, reg: v21, asm: "VUQSHL", typ: "Vec128"},
210 {name: "VUQSHL16B", argLength: 2, reg: v21, asm: "VUQSHL", typ: "Vec128"},
211 {name: "VUQSUB2D", argLength: 2, reg: v21, asm: "VUQSUB", typ: "Vec128"},
212 {name: "VUQSUB4S", argLength: 2, reg: v21, asm: "VUQSUB", typ: "Vec128"},
213 {name: "VUQSUB8H", argLength: 2, reg: v21, asm: "VUQSUB", typ: "Vec128"},
214 {name: "VUQSUB16B", argLength: 2, reg: v21, asm: "VUQSUB", typ: "Vec128"},
215 {name: "VUQXTN2D", argLength: 1, reg: v11, asm: "VUQXTN", typ: "Vec128"},
216 {name: "VUQXTN2_2D", argLength: 2, reg: v21, asm: "VUQXTN2", typ: "Vec128", resultInArg0: true},
217 {name: "VUQXTN2_4S", argLength: 2, reg: v21, asm: "VUQXTN2", typ: "Vec128", resultInArg0: true},
218 {name: "VUQXTN2_8H", argLength: 2, reg: v21, asm: "VUQXTN2", typ: "Vec128", resultInArg0: true},
219 {name: "VUQXTN4S", argLength: 1, reg: v11, asm: "VUQXTN", typ: "Vec128"},
220 {name: "VUQXTN8H", argLength: 1, reg: v11, asm: "VUQXTN", typ: "Vec128"},
221 {name: "VURHADD4S", argLength: 2, reg: v21, asm: "VURHADD", commutative: true, typ: "Vec128"},
222 {name: "VURHADD8H", argLength: 2, reg: v21, asm: "VURHADD", commutative: true, typ: "Vec128"},
223 {name: "VURHADD16B", argLength: 2, reg: v21, asm: "VURHADD", commutative: true, typ: "Vec128"},
224 {name: "VUSHL2D", argLength: 2, reg: v21, asm: "VUSHL", typ: "Vec128"},
225 {name: "VUSHL4S", argLength: 2, reg: v21, asm: "VUSHL", typ: "Vec128"},
226 {name: "VUSHL8H", argLength: 2, reg: v21, asm: "VUSHL", typ: "Vec128"},
227 {name: "VUSHL16B", argLength: 2, reg: v21, asm: "VUSHL", typ: "Vec128"},
228 {name: "VUXTL2_4S", argLength: 1, reg: v11, asm: "VUXTL2", typ: "Vec128"},
229 {name: "VUXTL2_8H", argLength: 1, reg: v11, asm: "VUXTL2", typ: "Vec128"},
230 {name: "VUXTL2_16B", argLength: 1, reg: v11, asm: "VUXTL2", typ: "Vec128"},
231 {name: "VUXTL4S", argLength: 1, reg: v11, asm: "VUXTL", typ: "Vec128"},
232 {name: "VUXTL8H", argLength: 1, reg: v11, asm: "VUXTL", typ: "Vec128"},
233 {name: "VUXTL16B", argLength: 1, reg: v11, asm: "VUXTL", typ: "Vec128"},
234 {name: "VUZP12D", argLength: 2, reg: v21, asm: "VUZP1", typ: "Vec128"},
235 {name: "VUZP14S", argLength: 2, reg: v21, asm: "VUZP1", typ: "Vec128"},
236 {name: "VUZP18H", argLength: 2, reg: v21, asm: "VUZP1", typ: "Vec128"},
237 {name: "VUZP22D", argLength: 2, reg: v21, asm: "VUZP2", typ: "Vec128"},
238 {name: "VUZP24S", argLength: 2, reg: v21, asm: "VUZP2", typ: "Vec128"},
239 {name: "VUZP28H", argLength: 2, reg: v21, asm: "VUZP2", typ: "Vec128"},
240 {name: "VUZP116B", argLength: 2, reg: v21, asm: "VUZP1", typ: "Vec128"},
241 {name: "VUZP216B", argLength: 2, reg: v21, asm: "VUZP2", typ: "Vec128"},
242 {name: "VXTN2D", argLength: 1, reg: v11, asm: "VXTN", typ: "Vec128"},
243 {name: "VXTN2_2D", argLength: 2, reg: v21, asm: "VXTN2", typ: "Vec128", resultInArg0: true},
244 {name: "VXTN2_4S", argLength: 2, reg: v21, asm: "VXTN2", typ: "Vec128", resultInArg0: true},
245 {name: "VXTN2_8H", argLength: 2, reg: v21, asm: "VXTN2", typ: "Vec128", resultInArg0: true},
246 {name: "VXTN4S", argLength: 1, reg: v11, asm: "VXTN", typ: "Vec128"},
247 {name: "VXTN8H", argLength: 1, reg: v11, asm: "VXTN", typ: "Vec128"},
248 {name: "VZIP12D", argLength: 2, reg: v21, asm: "VZIP1", typ: "Vec128"},
249 {name: "VZIP14S", argLength: 2, reg: v21, asm: "VZIP1", typ: "Vec128"},
250 {name: "VZIP18H", argLength: 2, reg: v21, asm: "VZIP1", typ: "Vec128"},
251 {name: "VZIP22D", argLength: 2, reg: v21, asm: "VZIP2", typ: "Vec128"},
252 {name: "VZIP24S", argLength: 2, reg: v21, asm: "VZIP2", typ: "Vec128"},
253 {name: "VZIP28H", argLength: 2, reg: v21, asm: "VZIP2", typ: "Vec128"},
254 {name: "VZIP116B", argLength: 2, reg: v21, asm: "VZIP1", typ: "Vec128"},
255 {name: "VZIP216B", argLength: 2, reg: v21, asm: "VZIP2", typ: "Vec128"},
256 {name: "VDUPBbcast", argLength: 1, reg: v11, asm: "VDUP", aux: "UInt8", typ: "Vec128"},
257 {name: "VDUPDbcast", argLength: 1, reg: v11, asm: "VDUP", aux: "UInt8", typ: "Vec128"},
258 {name: "VDUPDextr", argLength: 1, reg: v11, asm: "VDUP", aux: "UInt8", typ: "Vec128"},
259 {name: "VDUPHbcast", argLength: 1, reg: v11, asm: "VDUP", aux: "UInt8", typ: "Vec128"},
260 {name: "VDUPSbcast", argLength: 1, reg: v11, asm: "VDUP", aux: "UInt8", typ: "Vec128"},
261 {name: "VDUPSextr", argLength: 1, reg: v11, asm: "VDUP", aux: "UInt8", typ: "Vec128"},
262 {name: "VEXT16B", argLength: 2, reg: v21, asm: "VEXT", aux: "UInt8", typ: "Vec128"},
263 {name: "VMOVBextr", argLength: 1, reg: vgp, asm: "VMOV", aux: "UInt8", typ: "int8"},
264 {name: "VMOVBins", argLength: 2, reg: vgpv, asm: "VMOV", aux: "UInt8", typ: "Vec128", resultInArg0: true},
265 {name: "VMOVDextr", argLength: 1, reg: vgp, asm: "VMOV", aux: "UInt8", typ: "int64"},
266 {name: "VMOVDins", argLength: 2, reg: vgpv, asm: "VMOV", aux: "UInt8", typ: "Vec128", resultInArg0: true},
267 {name: "VMOVDins0", argLength: 2, reg: vfpv, asm: "VMOV", aux: "UInt8", typ: "Vec128", resultInArg0: true},
268 {name: "VMOVHextr", argLength: 1, reg: vgp, asm: "VMOV", aux: "UInt8", typ: "int16"},
269 {name: "VMOVHins", argLength: 2, reg: vgpv, asm: "VMOV", aux: "UInt8", typ: "Vec128", resultInArg0: true},
270 {name: "VMOVSextr", argLength: 1, reg: vgp, asm: "VMOV", aux: "UInt8", typ: "int32"},
271 {name: "VMOVSins", argLength: 2, reg: vgpv, asm: "VMOV", aux: "UInt8", typ: "Vec128", resultInArg0: true},
272 {name: "VMOVSins0", argLength: 2, reg: vfpv, asm: "VMOV", aux: "UInt8", typ: "Vec128", resultInArg0: true},
273 {name: "VSHL2D", argLength: 1, reg: v11, asm: "VSHL", aux: "UInt8", typ: "Vec128"},
274 {name: "VSHL4S", argLength: 1, reg: v11, asm: "VSHL", aux: "UInt8", typ: "Vec128"},
275 {name: "VSHL8H", argLength: 1, reg: v11, asm: "VSHL", aux: "UInt8", typ: "Vec128"},
276 {name: "VSHL16B", argLength: 1, reg: v11, asm: "VSHL", aux: "UInt8", typ: "Vec128"},
277 {name: "VSHRN2D", argLength: 1, reg: v11, asm: "VSHRN", aux: "UInt8", typ: "Vec128"},
278 {name: "VSHRN2_2D", argLength: 2, reg: v21, asm: "VSHRN2", aux: "UInt8", typ: "Vec128", resultInArg0: true},
279 {name: "VSHRN2_4S", argLength: 2, reg: v21, asm: "VSHRN2", aux: "UInt8", typ: "Vec128", resultInArg0: true},
280 {name: "VSHRN2_8H", argLength: 2, reg: v21, asm: "VSHRN2", aux: "UInt8", typ: "Vec128", resultInArg0: true},
281 {name: "VSHRN4S", argLength: 1, reg: v11, asm: "VSHRN", aux: "UInt8", typ: "Vec128"},
282 {name: "VSHRN8H", argLength: 1, reg: v11, asm: "VSHRN", aux: "UInt8", typ: "Vec128"},
283 {name: "VSQSHL2Dconst", argLength: 1, reg: v11, asm: "VSQSHL", aux: "UInt8", typ: "Vec128"},
284 {name: "VSQSHL4Sconst", argLength: 1, reg: v11, asm: "VSQSHL", aux: "UInt8", typ: "Vec128"},
285 {name: "VSQSHL8Hconst", argLength: 1, reg: v11, asm: "VSQSHL", aux: "UInt8", typ: "Vec128"},
286 {name: "VSQSHL16Bconst", argLength: 1, reg: v11, asm: "VSQSHL", aux: "UInt8", typ: "Vec128"},
287 {name: "VSSHLL2_4S", argLength: 1, reg: v11, asm: "VSSHLL2", aux: "UInt8", typ: "Vec128"},
288 {name: "VSSHLL2_8H", argLength: 1, reg: v11, asm: "VSSHLL2", aux: "UInt8", typ: "Vec128"},
289 {name: "VSSHLL2_16B", argLength: 1, reg: v11, asm: "VSSHLL2", aux: "UInt8", typ: "Vec128"},
290 {name: "VSSHLL4S", argLength: 1, reg: v11, asm: "VSSHLL", aux: "UInt8", typ: "Vec128"},
291 {name: "VSSHLL8H", argLength: 1, reg: v11, asm: "VSSHLL", aux: "UInt8", typ: "Vec128"},
292 {name: "VSSHLL16B", argLength: 1, reg: v11, asm: "VSSHLL", aux: "UInt8", typ: "Vec128"},
293 {name: "VSSHR2D", argLength: 1, reg: v11, asm: "VSSHR", aux: "UInt8", typ: "Vec128"},
294 {name: "VSSHR4S", argLength: 1, reg: v11, asm: "VSSHR", aux: "UInt8", typ: "Vec128"},
295 {name: "VSSHR8H", argLength: 1, reg: v11, asm: "VSSHR", aux: "UInt8", typ: "Vec128"},
296 {name: "VSSHR16B", argLength: 1, reg: v11, asm: "VSSHR", aux: "UInt8", typ: "Vec128"},
297 {name: "VUQSHL2Dconst", argLength: 1, reg: v11, asm: "VUQSHL", aux: "UInt8", typ: "Vec128"},
298 {name: "VUQSHL4Sconst", argLength: 1, reg: v11, asm: "VUQSHL", aux: "UInt8", typ: "Vec128"},
299 {name: "VUQSHL8Hconst", argLength: 1, reg: v11, asm: "VUQSHL", aux: "UInt8", typ: "Vec128"},
300 {name: "VUQSHL16Bconst", argLength: 1, reg: v11, asm: "VUQSHL", aux: "UInt8", typ: "Vec128"},
301 {name: "VUSHLL2_4S", argLength: 1, reg: v11, asm: "VUSHLL2", aux: "UInt8", typ: "Vec128"},
302 {name: "VUSHLL2_8H", argLength: 1, reg: v11, asm: "VUSHLL2", aux: "UInt8", typ: "Vec128"},
303 {name: "VUSHLL2_16B", argLength: 1, reg: v11, asm: "VUSHLL2", aux: "UInt8", typ: "Vec128"},
304 {name: "VUSHLL4S", argLength: 1, reg: v11, asm: "VUSHLL", aux: "UInt8", typ: "Vec128"},
305 {name: "VUSHLL8H", argLength: 1, reg: v11, asm: "VUSHLL", aux: "UInt8", typ: "Vec128"},
306 {name: "VUSHLL16B", argLength: 1, reg: v11, asm: "VUSHLL", aux: "UInt8", typ: "Vec128"},
307 {name: "VUSHR2D", argLength: 1, reg: v11, asm: "VUSHR", aux: "UInt8", typ: "Vec128"},
308 {name: "VUSHR4S", argLength: 1, reg: v11, asm: "VUSHR", aux: "UInt8", typ: "Vec128"},
309 {name: "VUSHR8H", argLength: 1, reg: v11, asm: "VUSHR", aux: "UInt8", typ: "Vec128"},
310 {name: "VUSHR16B", argLength: 1, reg: v11, asm: "VUSHR", aux: "UInt8", typ: "Vec128"},
311 }
312 }
313
View as plain text