xref: /aosp_15_r20/external/mesa3d/src/panfrost/compiler/bifrost/ISA.xml (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1<!--
2  Copyright (C) 2020 Collabora Ltd.
3
4  Permission is hereby granted, free of charge, to any person obtaining a
5  copy of this software and associated documentation files (the "Software"),
6  to deal in the Software without restriction, including without limitation
7  the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  and/or sell copies of the Software, and to permit persons to whom the
9  Software is furnished to do so, subject to the following conditions:
10
11  The above copyright notice and this permission notice (including the next
12  paragraph) shall be included in all copies or substantial portions of the
13  Software.
14
15  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21  SOFTWARE.
22-->
23
24<bifrost>
25
26  <ins name="ARSHIFT.i32" mask="0x7ff838" exact="0x335018" unit="fma">
27    <src start="0" mask="0xfb"/>
28    <src start="3" mask="0x8"/>
29    <src start="6"/>
30    <mod name="lane2" start="9" size="2" default="b0">
31      <opt>b0</opt>
32      <opt>b1</opt>
33      <opt>b2</opt>
34      <opt>b3</opt>
35    </mod>
36  </ins>
37
38  <ins name="ARSHIFT.v2i16" unit="fma">
39    <src start="0" mask="0xfb"/>
40    <src start="3" mask="0x8"/>
41    <src start="6"/>
42    <mod name="lanes2" size="3" default="b02">
43      <opt>b00</opt>
44      <opt>b11</opt>
45      <opt>b22</opt>
46      <opt>b33</opt>
47      <opt>b01</opt>
48      <opt>b23</opt>
49      <opt>b02</opt>
50    </mod>
51    <encoding mask="0x7ff838" exact="0x334818">
52      <or>
53        <eq left="lanes2" right="#b00"/>
54        <eq left="lanes2" right="#b11"/>
55        <eq left="lanes2" right="#b22"/>
56        <eq left="lanes2" right="#b33"/>
57      </or>
58      <derived start="9" size="2">
59        <eq left="lanes2" right="#b00"/>
60        <eq left="lanes2" right="#b11"/>
61        <eq left="lanes2" right="#b22"/>
62        <eq left="lanes2" right="#b33"/>
63      </derived>
64    </encoding>
65    <encoding mask="0x7ff838" exact="0x335818">
66      <or>
67        <eq left="lanes2" right="#b01"/>
68        <eq left="lanes2" right="#b23"/>
69        <eq left="lanes2" right="#b02"/>
70      </or>
71      <derived start="9" size="2">
72        <reserved/>
73        <eq left="lanes2" right="#b01"/>
74        <eq left="lanes2" right="#b23"/>
75        <eq left="lanes2" right="#b02"/>
76      </derived>
77    </encoding>
78  </ins>
79
80  <ins name="ARSHIFT.v4i8" unit="fma">
81    <src start="0" mask="0xfb"/>
82    <src start="3" mask="0x8"/>
83    <src start="6"/>
84    <mod name="lanes2" size="3" default="b0123">
85      <opt>b0123</opt>
86      <opt>b0000</opt>
87      <opt>b1111</opt>
88      <opt>b2222</opt>
89      <opt>b3333</opt>
90    </mod>
91    <encoding mask="0x7ff838" exact="0x334018">
92      <neq left="lanes2" right="#b0123"/>
93      <derived start="9" size="2">
94        <eq left="lanes2" right="#b0000"/>
95        <eq left="lanes2" right="#b1111"/>
96        <eq left="lanes2" right="#b2222"/>
97        <eq left="lanes2" right="#b3333"/>
98      </derived>
99    </encoding>
100    <encoding mask="0x7ffe38" exact="0x335818">
101      <eq left="lanes2" right="#b0123"/>
102    </encoding>
103  </ins>
104
105  <ins name="ARSHIFT_DOUBLE.i32" mask="0x7ff000" exact="0x33e000" unit="fma">
106    <src start="0" mask="0xfb"/>
107    <src start="3" mask="0xfb"/>
108    <src start="6"/>
109    <mod name="bytes2" start="9" size="1" opt="bytes2"/>
110    <mod name="lane2" start="10" size="1" default="b0">
111      <opt>b0</opt>
112      <opt>b2</opt>
113    </mod>
114    <mod name="result_word" start="11" size="1" default="w0">
115      <opt>w0</opt>
116      <opt>w1</opt>
117    </mod>
118  </ins>
119
120  <ins name="ATOM_C.i32" mask="0x7fe000" exact="0x2f4000" last="true" dests="0" unit="fma">
121    <src start="0" mask="0xf3"/>
122    <src start="3" mask="0xf3"/>
123    <src start="6" mask="0xf7"/>
124    <mod name="atom_opc" start="9" size="4">
125      <reserved/>
126      <reserved/>
127      <opt>aadd</opt>
128      <reserved/>
129      <reserved/>
130      <reserved/>
131      <reserved/>
132      <reserved/>
133      <opt>asmin</opt>
134      <opt>asmax</opt>
135      <opt>aumin</opt>
136      <opt>aumax</opt>
137      <opt>aand</opt>
138      <opt>aor</opt>
139      <opt>axor</opt>
140    </mod>
141  </ins>
142
143  <ins name="ATOM_C.i64" mask="0x7fe000" exact="0x2f0000" last="true" dests="0" unit="fma">
144    <src start="0" mask="0xf3"/>
145    <src start="3" mask="0xf3"/>
146    <src start="6" mask="0xf7"/>
147    <mod name="atom_opc" start="9" size="4">
148      <opt>aaddu</opt>
149      <opt>aadds</opt>
150      <opt>aadd</opt>
151      <reserved/>
152      <reserved/>
153      <reserved/>
154      <reserved/>
155      <reserved/>
156      <opt>asmin</opt>
157      <opt>asmax</opt>
158      <opt>aumin</opt>
159      <opt>aumax</opt>
160      <opt>aand</opt>
161      <opt>aor</opt>
162      <opt>axor</opt>
163    </mod>
164  </ins>
165
166  <ins name="ATOM_C1.i32" mask="0x7ffe00" exact="0x2f5e00" last="true" dests="0" unit="fma">
167    <src start="0" mask="0xf3"/>
168    <src start="3" mask="0xf3"/>
169    <mod name="atom_opc" start="6" size="3">
170      <opt>ainc</opt>
171      <opt>adec</opt>
172      <opt>aumax1</opt>
173      <opt>asmax1</opt>
174      <opt>aor1</opt>
175    </mod>
176  </ins>
177
178  <ins name="ATOM_C1.i64" mask="0x7ffe00" exact="0x2f1e00" last="true" dests="0" unit="fma">
179    <src start="0" mask="0xf3"/>
180    <src start="3" mask="0xf3"/>
181    <mod name="atom_opc" start="6" size="3">
182      <opt>ainc</opt>
183      <opt>adec</opt>
184      <opt>aumax1</opt>
185      <opt>asmax1</opt>
186      <opt>aor1</opt>
187    </mod>
188  </ins>
189
190  <ins name="ATOM_C1_RETURN.i32" mask="0x7ffe00" exact="0x2f7e00" last="true" dests="0" unit="fma">
191    <src start="0" mask="0xf3"/>
192    <src start="3" mask="0xf3"/>
193    <mod name="atom_opc" start="6" size="3">
194      <opt>ainc</opt>
195      <opt>adec</opt>
196      <opt>aumax1</opt>
197      <opt>asmax1</opt>
198      <opt>aor1</opt>
199    </mod>
200  </ins>
201
202  <ins name="ATOM_C1_RETURN.i64" mask="0x7ffe00" exact="0x2f3e00" last="true" dests="0" unit="fma">
203    <src start="0" mask="0xf3"/>
204    <src start="3" mask="0xf3"/>
205    <mod name="atom_opc" start="6" size="3">
206      <opt>ainc</opt>
207      <opt>adec</opt>
208      <opt>aumax1</opt>
209      <opt>asmax1</opt>
210      <opt>aor1</opt>
211    </mod>
212  </ins>
213
214  <ins name="ATOM_C_RETURN.i32" mask="0x7fe000" exact="0x2f6000" last="true" dests="0" unit="fma">
215    <src start="0" mask="0xf3"/>
216    <src start="3" mask="0xf3"/>
217    <src start="6" mask="0xf7"/>
218    <mod name="atom_opc" start="9" size="4">
219      <reserved/>
220      <reserved/>
221      <opt>aadd</opt>
222      <reserved/>
223      <reserved/>
224      <reserved/>
225      <reserved/>
226      <reserved/>
227      <opt>asmin</opt>
228      <opt>asmax</opt>
229      <opt>aumin</opt>
230      <opt>aumax</opt>
231      <opt>aand</opt>
232      <opt>aor</opt>
233      <opt>axor</opt>
234    </mod>
235  </ins>
236
237  <ins name="ATOM_C_RETURN.i64" mask="0x7fe000" exact="0x2f2000" last="true" dests="0" unit="fma">
238    <src start="0" mask="0xf3"/>
239    <src start="3" mask="0xf3"/>
240    <src start="6" mask="0xf7"/>
241    <mod name="atom_opc" start="9" size="4">
242      <opt>aaddu</opt>
243      <opt>aadds</opt>
244      <opt>aadd</opt>
245      <reserved/>
246      <reserved/>
247      <reserved/>
248      <reserved/>
249      <reserved/>
250      <opt>asmin</opt>
251      <opt>asmax</opt>
252      <opt>aumin</opt>
253      <opt>aumax</opt>
254      <opt>aand</opt>
255      <opt>aor</opt>
256      <opt>axor</opt>
257    </mod>
258  </ins>
259
260  <ins name="ATOM_POST.i32" mask="0x7ffc00" exact="0x6ee400" unit="fma">
261    <src start="0" mask="0xfb"/>
262    <src start="3" mask="0xfb"/>
263    <mod name="atom_opc" start="6" size="4">
264      <reserved/>
265      <reserved/>
266      <opt>aadd</opt>
267      <reserved/>
268      <reserved/>
269      <reserved/>
270      <reserved/>
271      <reserved/>
272      <opt>asmin</opt>
273      <opt>asmax</opt>
274      <opt>aumin</opt>
275      <opt>aumax</opt>
276      <opt>aand</opt>
277      <opt>aor</opt>
278      <opt>axor</opt>
279    </mod>
280  </ins>
281
282  <ins name="ATOM_POST.i64" mask="0x7ffc00" exact="0x6ee000" unit="fma">
283    <src start="0" mask="0xfb"/>
284    <src start="3" mask="0xfb"/>
285    <mod name="atom_opc" start="6" size="4">
286      <opt>aaddu</opt>
287      <opt>aadds</opt>
288      <opt>aadd</opt>
289      <reserved/>
290      <reserved/>
291      <reserved/>
292      <reserved/>
293      <reserved/>
294      <opt>asmin</opt>
295      <opt>asmax</opt>
296      <opt>aumin</opt>
297      <opt>aumax</opt>
298      <opt>aand</opt>
299      <opt>aor</opt>
300      <opt>axor</opt>
301    </mod>
302  </ins>
303
304  <ins name="ATOM_PRE.i64" mask="0x7fe000" exact="0x6ec000" unit="fma">
305    <src start="0" mask="0xfb"/>
306    <src start="3" mask="0xfb"/>
307    <src start="6"/>
308    <mod name="atom_opc" start="9" size="4">
309      <opt>aaddu</opt>
310      <opt>aadds</opt>
311      <opt>aadd</opt>
312      <reserved/>
313      <reserved/>
314      <reserved/>
315      <reserved/>
316      <reserved/>
317      <opt>asmin</opt>
318      <opt>asmax</opt>
319      <opt>aumin</opt>
320      <opt>aumax</opt>
321      <opt>aand</opt>
322      <opt>aor</opt>
323      <opt>axor</opt>
324    </mod>
325  </ins>
326
327  <ins name="BITREV.i32" mask="0x7ffff8" exact="0x701fc0" unit="fma">
328    <src start="0" mask="0xfb"/>
329  </ins>
330
331  <ins name="CLZ.u32" mask="0x7ffff0" exact="0x701fd0" unit="fma">
332    <src start="0" mask="0xfb"/>
333    <mod name="mask" start="3" size="1" opt="mask"/>
334  </ins>
335
336  <ins name="CLZ.v2u16" mask="0x7fffc0" exact="0x701ec0" unit="fma">
337    <src start="0" mask="0xfb"/>
338    <mod name="mask" start="3" size="1" opt="mask"/>
339    <mod name="swz0" start="4" size="2" default="h01">
340      <opt>h00</opt>
341      <opt>h10</opt>
342      <opt>h01</opt>
343      <opt>h11</opt>
344    </mod>
345  </ins>
346
347  <ins name="CLZ.v4u8" mask="0x7ffff0" exact="0x701f90" unit="fma">
348    <src start="0" mask="0xfb"/>
349    <mod name="mask" start="3" size="1" opt="mask"/>
350  </ins>
351
352  <ins name="CSEL.f32" mask="0x7fc000" exact="0x2e0000" unit="fma">
353    <src start="0" mask="0xfb"/>
354    <src start="3" mask="0xfb"/>
355    <src start="6"/>
356    <src start="9"/>
357    <mod name="cmpf" size="3">
358      <opt>eq</opt>
359      <opt>gt</opt>
360      <opt>ge</opt>
361      <opt>ne</opt>
362      <opt>lt</opt>
363      <opt>le</opt>
364    </mod>
365    <derived start="12" size="2">
366      <eq left="cmpf" right="#eq"/>
367      <eq left="cmpf" right="#gt"/>
368      <eq left="cmpf" right="#ge"/>
369      <reserved/>
370    </derived>
371    <swap left="0" right="1">
372      <or>
373        <eq left="cmpf" right="#lt"/>
374        <eq left="cmpf" right="#le"/>
375      </or>
376      <rewrite name="cmpf">
377        <map from="lt" to="gt"/>
378        <map from="le" to="ge"/>
379      </rewrite>
380    </swap>
381    <swap left="2" right="3">
382      <eq left="cmpf" right="#ne"/>
383      <rewrite name="cmpf">
384        <map from="ne" to="eq"/>
385      </rewrite>
386    </swap>
387  </ins>
388
389  <ins name="CSEL.i32" mask="0x7f8000" exact="0x2e0000" unit="fma">
390    <src start="0" mask="0xfb"/>
391    <src start="3" mask="0xfb"/>
392    <src start="6"/>
393    <src start="9"/>
394    <mod name="cmpf" size="1">
395      <opt>eq</opt>
396      <opt>ne</opt>
397    </mod>
398    <derived start="12" size="3">
399      <reserved/>
400      <reserved/>
401      <reserved/>
402      <eq left="cmpf" right="#eq"/>
403      <reserved/>
404      <reserved/>
405      <reserved/>
406      <reserved/>
407    </derived>
408    <swap left="2" right="3">
409      <eq left="cmpf" right="#ne"/>
410      <rewrite name="cmpf">
411        <map from="ne" to="eq"/>
412      </rewrite>
413    </swap>
414  </ins>
415
416  <ins name="CSEL.s32" mask="0x7fe000" exact="0x2e4000" unit="fma">
417    <src start="0" mask="0xfb"/>
418    <src start="3" mask="0xfb"/>
419    <src start="6"/>
420    <src start="9"/>
421    <mod name="cmpf" size="2">
422      <opt>gt</opt>
423      <opt>ge</opt>
424      <opt>lt</opt>
425      <opt>le</opt>
426    </mod>
427    <derived start="12" size="1">
428      <eq left="cmpf" right="#gt"/>
429      <eq left="cmpf" right="#ge"/>
430    </derived>
431    <swap left="0" right="1">
432      <or>
433        <eq left="cmpf" right="#lt"/>
434        <eq left="cmpf" right="#le"/>
435      </or>
436      <rewrite name="cmpf">
437        <map from="lt" to="gt"/>
438        <map from="le" to="ge"/>
439      </rewrite>
440    </swap>
441  </ins>
442
443  <ins name="CSEL.u32" mask="0x7fe000" exact="0x2e6000" unit="fma">
444    <src start="0" mask="0xfb"/>
445    <src start="3" mask="0xfb"/>
446    <src start="6"/>
447    <src start="9"/>
448    <mod name="cmpf" size="2">
449      <opt>gt</opt>
450      <opt>ge</opt>
451      <opt>lt</opt>
452      <opt>le</opt>
453    </mod>
454    <derived start="12" size="1">
455      <eq left="cmpf" right="#gt"/>
456      <eq left="cmpf" right="#ge"/>
457    </derived>
458    <swap left="0" right="1">
459      <or>
460        <eq left="cmpf" right="#lt"/>
461        <eq left="cmpf" right="#le"/>
462      </or>
463      <rewrite name="cmpf">
464        <map from="lt" to="gt"/>
465        <map from="le" to="ge"/>
466      </rewrite>
467    </swap>
468  </ins>
469
470  <ins name="CSEL.v2f16" mask="0x7fc000" exact="0x6e0000" unit="fma">
471    <src start="0" mask="0xfb"/>
472    <src start="3" mask="0xfb"/>
473    <src start="6"/>
474    <src start="9"/>
475    <mod name="cmpf" size="3">
476      <opt>eq</opt>
477      <opt>gt</opt>
478      <opt>ge</opt>
479      <opt>ne</opt>
480      <opt>lt</opt>
481      <opt>le</opt>
482    </mod>
483    <derived start="12" size="2">
484      <eq left="cmpf" right="#eq"/>
485      <eq left="cmpf" right="#gt"/>
486      <eq left="cmpf" right="#ge"/>
487      <reserved/>
488    </derived>
489    <swap left="0" right="1">
490      <or>
491        <eq left="cmpf" right="#lt"/>
492        <eq left="cmpf" right="#le"/>
493      </or>
494      <rewrite name="cmpf">
495        <map from="lt" to="gt"/>
496        <map from="le" to="ge"/>
497      </rewrite>
498    </swap>
499    <swap left="2" right="3">
500      <eq left="cmpf" right="#ne"/>
501      <rewrite name="cmpf">
502        <map from="ne" to="eq"/>
503      </rewrite>
504    </swap>
505  </ins>
506
507  <ins name="CSEL.v2i16" mask="0x7f8000" exact="0x6e0000" unit="fma">
508    <src start="0" mask="0xfb"/>
509    <src start="3" mask="0xfb"/>
510    <src start="6"/>
511    <src start="9"/>
512    <mod name="cmpf" size="1">
513      <opt>eq</opt>
514      <opt>ne</opt>
515    </mod>
516    <derived start="12" size="3">
517      <reserved/>
518      <reserved/>
519      <reserved/>
520      <eq left="cmpf" right="#eq"/>
521      <reserved/>
522      <reserved/>
523      <reserved/>
524      <reserved/>
525    </derived>
526    <swap left="2" right="3">
527      <eq left="cmpf" right="#ne"/>
528      <rewrite name="cmpf">
529        <map from="ne" to="eq"/>
530      </rewrite>
531    </swap>
532  </ins>
533
534  <ins name="CSEL.v2s16" mask="0x7fe000" exact="0x6e4000" unit="fma">
535    <src start="0" mask="0xfb"/>
536    <src start="3" mask="0xfb"/>
537    <src start="6"/>
538    <src start="9"/>
539    <mod name="cmpf" size="2">
540      <opt>gt</opt>
541      <opt>ge</opt>
542      <opt>lt</opt>
543      <opt>le</opt>
544    </mod>
545    <derived start="12" size="1">
546      <eq left="cmpf" right="#gt"/>
547      <eq left="cmpf" right="#ge"/>
548    </derived>
549    <swap left="0" right="1">
550      <or>
551        <eq left="cmpf" right="#lt"/>
552        <eq left="cmpf" right="#le"/>
553      </or>
554      <rewrite name="cmpf">
555        <map from="lt" to="gt"/>
556        <map from="le" to="ge"/>
557      </rewrite>
558    </swap>
559  </ins>
560
561  <ins name="CSEL.v2u16" mask="0x7fe000" exact="0x6e6000" unit="fma">
562    <src start="0" mask="0xfb"/>
563    <src start="3" mask="0xfb"/>
564    <src start="6"/>
565    <src start="9"/>
566    <mod name="cmpf" size="2">
567      <opt>gt</opt>
568      <opt>ge</opt>
569      <opt>lt</opt>
570      <opt>le</opt>
571    </mod>
572    <derived start="12" size="1">
573      <eq left="cmpf" right="#gt"/>
574      <eq left="cmpf" right="#ge"/>
575    </derived>
576    <swap left="0" right="1">
577      <or>
578        <eq left="cmpf" right="#lt"/>
579        <eq left="cmpf" right="#le"/>
580      </or>
581      <rewrite name="cmpf">
582        <map from="lt" to="gt"/>
583        <map from="le" to="ge"/>
584      </rewrite>
585    </swap>
586  </ins>
587
588  <ins name="CUBEFACE1" mask="0x7ffc00" exact="0x706800" unit="fma">
589    <src start="0" mask="0xfb"/>
590    <src start="3" mask="0xfb"/>
591    <src start="6"/>
592    <mod name="neg0" size="1" opt="neg"/>
593    <mod name="neg1" size="1" opt="neg"/>
594    <mod name="neg2" size="1" opt="neg"/>
595    <derived start="9" size="1">
596      <and>
597        <eq left="neg0" right="#none"/>
598        <eq left="neg1" right="#none"/>
599        <eq left="neg2" right="#none"/>
600      </and>
601      <and>
602        <eq left="neg0" right="#neg"/>
603        <eq left="neg1" right="#neg"/>
604        <eq left="neg2" right="#neg"/>
605      </and>
606    </derived>
607  </ins>
608
609  <ins name="DTSEL_IMM" mask="0x7fffe0" exact="0x70f3e0" unit="fma">
610    <src start="0" mask="0xfb"/>
611    <mod name="table" start="3" size="2">
612      <opt>attribute_1</opt>
613      <opt>attribute_2</opt>
614      <opt>none</opt> <!-- actually reserved, used as sentinel -->
615      <opt>flat</opt>
616    </mod>
617  </ins>
618
619  <ins name="F16_TO_F32" mask="0x7ffff0" exact="0x700d10" unit="fma">
620    <src start="0" mask="0xfb"/>
621    <mod name="lane0" start="3" size="1" default="h0">
622      <opt>h0</opt>
623      <opt>h1</opt>
624    </mod>
625  </ins>
626
627  <ins name="FADD.f32" mask="0x7e0000" exact="0x2c0000" unit="fma">
628    <src start="0" mask="0xfb"/>
629    <src start="3" mask="0xfb"/>
630    <mod name="abs1" start="6" size="1" opt="abs"/>
631    <mod name="neg0" start="7" size="1" opt="neg"/>
632    <mod name="neg1" start="8" size="1" opt="neg"/>
633    <mod name="abs0" start="12" size="1" opt="abs"/>
634    <mod name="round" start="13" size="2">
635      <opt>none</opt>
636      <opt>rtp</opt>
637      <opt>rtn</opt>
638      <opt>rtz</opt>
639    </mod>
640    <mod name="clamp" start="15" size="2">
641      <opt>none</opt>
642      <opt>clamp_0_inf</opt>
643      <opt>clamp_m1_1</opt>
644      <opt>clamp_0_1</opt>
645    </mod>
646    <mod name="widen0" size="2">
647      <opt>none</opt>
648      <opt>h0</opt>
649      <opt>h1</opt>
650    </mod>
651    <mod name="widen1" size="2">
652      <opt>none</opt>
653      <opt>h0</opt>
654      <opt>h1</opt>
655    </mod>
656    <derived start="9" size="3">
657      <and>
658        <eq left="widen0" right="#none"/>
659        <eq left="widen1" right="#none"/>
660      </and>
661      <and>
662        <eq left="widen0" right="#none"/>
663        <eq left="widen1" right="#h0"/>
664      </and>
665      <and>
666        <eq left="widen0" right="#none"/>
667        <eq left="widen1" right="#h1"/>
668      </and>
669      <and>
670        <eq left="widen0" right="#h0"/>
671        <eq left="widen1" right="#h0"/>
672      </and>
673      <and>
674        <eq left="widen0" right="#h0"/>
675        <eq left="widen1" right="#h1"/>
676      </and>
677      <and>
678        <eq left="widen0" right="#h1"/>
679        <eq left="widen1" right="#h1"/>
680      </and>
681      <and>
682        <eq left="widen0" right="#h0"/>
683        <eq left="widen1" right="#none"/>
684      </and>
685      <and>
686        <eq left="widen0" right="#h1"/>
687        <eq left="widen1" right="#none"/>
688      </and>
689    </derived>
690    <swap left="0" right="1">
691      <and>
692        <eq left="widen0" right="#h1"/>
693        <eq left="widen1" right="#h0"/>
694      </and>
695    </swap>
696  </ins>
697
698  <ins name="FADD.v2f16" mask="0x7e0000" exact="0x6c0000" unit="fma">
699    <src start="0" mask="0xfb"/>
700    <src start="3" mask="0xfb"/>
701    <mod name="abs0" size="1" opt="abs"/>
702    <mod name="abs1" size="1" opt="abs"/>
703    <mod name="neg0" start="7" size="1" opt="neg"/>
704    <mod name="neg1" start="8" size="1" opt="neg"/>
705    <mod name="swz0" start="9" size="2" default="h01">
706      <opt>h00</opt>
707      <opt>h10</opt>
708      <opt>h01</opt>
709      <opt>h11</opt>
710    </mod>
711    <mod name="swz1" start="11" size="2" default="h01">
712      <opt>h00</opt>
713      <opt>h10</opt>
714      <opt>h01</opt>
715      <opt>h11</opt>
716    </mod>
717    <mod name="round" start="13" size="2">
718      <opt>none</opt>
719      <opt>rtp</opt>
720      <opt>rtn</opt>
721      <opt>rtz</opt>
722    </mod>
723    <mod name="clamp" start="15" size="2">
724      <opt>none</opt>
725      <opt>clamp_0_inf</opt>
726      <opt>clamp_m1_1</opt>
727      <opt>clamp_0_1</opt>
728    </mod>
729    <derived start="6" size="1">
730      <or>
731        <and>
732          <eq left="abs0" right="#abs"/>
733          <eq left="abs1" right="#none"/>
734          <eq left="ordering" right="#gt"/>
735        </and>
736        <and>
737          <eq left="abs0" right="#none"/>
738          <eq left="abs1" right="#none"/>
739          <neq left="ordering" right="#gt"/>
740        </and>
741      </or>
742      <or>
743        <and>
744          <eq left="abs0" right="#abs"/>
745          <eq left="abs1" right="#abs"/>
746          <eq left="ordering" right="#gt"/>
747        </and>
748        <and>
749          <eq left="abs0" right="#abs"/>
750          <eq left="abs1" right="#none"/>
751          <neq left="ordering" right="#gt"/>
752        </and>
753      </or>
754    </derived>
755    <swap left="0" right="1">
756      <or>
757        <and>
758          <eq left="abs0" right="#none"/>
759          <eq left="ordering" right="#gt"/>
760        </and>
761        <and>
762          <eq left="abs1" right="#abs"/>
763          <neq left="ordering" right="#gt"/>
764        </and>
765      </or>
766    </swap>
767  </ins>
768
769  <ins name="FADD_LSCALE.f32" mask="0x7ffc00" exact="0x70f400" unit="fma">
770    <src start="0" mask="0xfb"/>
771    <src start="3" mask="0xfb"/>
772    <mod name="abs0" start="6" size="1" opt="abs"/>
773    <mod name="neg0" start="7" size="1" opt="neg"/>
774    <mod name="abs1" start="8" size="1" opt="abs"/>
775    <mod name="neg1" start="9" size="1" opt="neg"/>
776  </ins>
777
778  <ins name="FCMP.f32" mask="0x7c0000" exact="0x240000" unit="fma">
779    <src start="0" mask="0xfb"/>
780    <src start="3" mask="0xfb"/>
781    <mod name="widen0" size="2">
782      <opt>none</opt>
783      <opt>h0</opt>
784      <opt>h1</opt>
785    </mod>
786    <mod name="widen1" size="2">
787      <opt>none</opt>
788      <opt>h0</opt>
789      <opt>h1</opt>
790    </mod>
791    <mod name="abs1" start="6" size="1" opt="abs"/>
792    <mod name="neg0" start="7" size="1" opt="neg"/>
793    <mod name="neg1" start="8" size="1" opt="neg"/>
794    <mod name="abs0" start="12" size="1" opt="abs"/>
795    <mod name="cmpf" start="13" size="3">
796      <opt>eq</opt>
797      <opt>gt</opt>
798      <opt>ge</opt>
799      <opt>ne</opt>
800      <opt>lt</opt>
801      <opt>le</opt>
802      <opt>gtlt</opt>
803      <opt>total</opt>
804    </mod>
805    <mod name="result_type" start="16" size="2" default="i1">
806      <opt>i1</opt>
807      <opt>f1</opt>
808      <opt>m1</opt>
809    </mod>
810    <derived start="9" size="3">
811      <and>
812        <eq left="widen0" right="#none"/>
813        <eq left="widen1" right="#none"/>
814      </and>
815      <and>
816        <eq left="widen0" right="#none"/>
817        <eq left="widen1" right="#h0"/>
818      </and>
819      <and>
820        <eq left="widen0" right="#none"/>
821        <eq left="widen1" right="#h1"/>
822      </and>
823      <and>
824        <eq left="widen0" right="#h0"/>
825        <eq left="widen1" right="#h0"/>
826      </and>
827      <and>
828        <eq left="widen0" right="#h0"/>
829        <eq left="widen1" right="#h1"/>
830      </and>
831      <and>
832        <eq left="widen0" right="#h1"/>
833        <eq left="widen1" right="#h1"/>
834      </and>
835      <and>
836        <eq left="widen0" right="#h0"/>
837        <eq left="widen1" right="#none"/>
838      </and>
839      <and>
840        <eq left="widen0" right="#h1"/>
841        <eq left="widen1" right="#none"/>
842      </and>
843    </derived>
844    <swap left="0" right="1">
845      <and>
846        <eq left="widen0" right="#h1"/>
847        <eq left="widen1" right="#h0"/>
848      </and>
849      <rewrite name="cmpf">
850        <map from="lt" to="gt"/>
851        <map from="le" to="ge"/>
852        <map from="gt" to="lt"/>
853        <map from="ge" to="le"/>
854      </rewrite>
855    </swap>
856  </ins>
857
858  <ins name="FCMP.v2f16" mask="0x7c0000" exact="0x640000" unit="fma">
859    <src start="0" mask="0xfb"/>
860    <src start="3" mask="0xfb"/>
861    <mod name="abs0" size="1" opt="abs"/>
862    <mod name="abs1" size="1" opt="abs"/>
863    <mod name="cmpf" size="3">
864      <opt>eq</opt>
865      <opt>gt</opt>
866      <opt>ge</opt>
867      <opt>ne</opt>
868      <opt>lt</opt>
869      <opt>le</opt>
870      <opt>gtlt</opt>
871      <opt>total</opt>
872    </mod>
873    <mod name="neg0" start="7" size="1" opt="neg"/>
874    <mod name="neg1" start="8" size="1" opt="neg"/>
875    <mod name="swz0" start="9" size="2" default="h01">
876      <opt>h00</opt>
877      <opt>h10</opt>
878      <opt>h01</opt>
879      <opt>h11</opt>
880    </mod>
881    <mod name="swz1" start="11" size="2" default="h01">
882      <opt>h00</opt>
883      <opt>h10</opt>
884      <opt>h01</opt>
885      <opt>h11</opt>
886    </mod>
887    <mod name="result_type" start="16" size="2" default="i1">
888      <opt>i1</opt>
889      <opt>f1</opt>
890      <opt>m1</opt>
891    </mod>
892    <derived start="6" size="1">
893      <or>
894        <and>
895          <eq left="abs0" right="#abs"/>
896          <eq left="abs1" right="#none"/>
897          <eq left="ordering" right="#gt"/>
898        </and>
899        <and>
900          <eq left="abs0" right="#none"/>
901          <eq left="abs1" right="#none"/>
902          <neq left="ordering" right="#gt"/>
903        </and>
904      </or>
905      <or>
906        <and>
907          <eq left="abs0" right="#abs"/>
908          <eq left="abs1" right="#abs"/>
909          <eq left="ordering" right="#gt"/>
910        </and>
911        <and>
912          <eq left="abs0" right="#abs"/>
913          <eq left="abs1" right="#none"/>
914          <neq left="ordering" right="#gt"/>
915        </and>
916      </or>
917    </derived>
918    <derived start="13" size="3">
919      <eq left="cmpf" right="#eq"/>
920      <eq left="cmpf" right="#gt"/>
921      <eq left="cmpf" right="#ge"/>
922      <eq left="cmpf" right="#ne"/>
923      <eq left="cmpf" right="#lt"/>
924      <eq left="cmpf" right="#le"/>
925      <eq left="cmpf" right="#gtlt"/>
926      <and>
927        <eq left="cmpf" right="#total"/>
928        <eq left="abs0" right="#none"/>
929        <eq left="abs1" right="#none"/>
930      </and>
931    </derived>
932    <swap left="0" right="1">
933      <or>
934        <and>
935          <eq left="abs0" right="#none"/>
936          <eq left="ordering" right="#gt"/>
937        </and>
938        <and>
939          <eq left="abs1" right="#abs"/>
940          <neq left="ordering" right="#gt"/>
941        </and>
942      </or>
943      <rewrite name="cmpf">
944        <map from="lt" to="gt"/>
945        <map from="le" to="ge"/>
946        <map from="gt" to="lt"/>
947        <map from="ge" to="le"/>
948      </rewrite>
949    </swap>
950  </ins>
951
952  <ins name="FLSHIFT_DOUBLE.i32" mask="0x7ff800" exact="0x33f800" unit="fma">
953    <src start="0" mask="0xfb"/>
954    <src start="3" mask="0xfb"/>
955    <src start="6"/>
956    <mod name="bytes2" start="9" size="1" opt="bytes2"/>
957    <mod name="lane2" start="10" size="1" default="b0">
958      <opt>b0</opt>
959      <opt>b2</opt>
960    </mod>
961  </ins>
962
963  <ins name="FMA.f32" mask="0x600000" exact="0x0" unit="fma">
964    <src start="0" mask="0xfb"/>
965    <src start="3" mask="0xfb"/>
966    <src start="6"/>
967    <mod name="widen0" size="2">
968      <opt>none</opt>
969      <opt>h0</opt>
970      <opt>h1</opt>
971    </mod>
972    <mod name="widen1" size="2">
973      <opt>none</opt>
974      <opt>h0</opt>
975      <opt>h1</opt>
976    </mod>
977    <mod name="neg0" size="1" opt="neg"/>
978    <mod name="neg1" size="1" opt="neg"/>
979    <mod name="abs0" start="12" size="1" opt="abs"/>
980    <mod name="round" start="13" size="2">
981      <opt>none</opt>
982      <opt>rtp</opt>
983      <opt>rtn</opt>
984      <opt>rtz</opt>
985    </mod>
986    <mod name="clamp" start="15" size="2">
987      <opt>none</opt>
988      <opt>clamp_0_inf</opt>
989      <opt>clamp_m1_1</opt>
990      <opt>clamp_0_1</opt>
991    </mod>
992    <mod name="abs1" start="19" size="1" opt="abs"/>
993    <mod name="neg2" start="18" size="1" opt="neg"/>
994    <mod name="abs2" start="20" size="1" opt="abs"/>
995    <derived start="9" size="3">
996      <and>
997        <eq left="widen0" right="#none"/>
998        <eq left="widen1" right="#none"/>
999      </and>
1000      <and>
1001        <eq left="widen0" right="#none"/>
1002        <eq left="widen1" right="#h0"/>
1003      </and>
1004      <and>
1005        <eq left="widen0" right="#none"/>
1006        <eq left="widen1" right="#h1"/>
1007      </and>
1008      <and>
1009        <eq left="widen0" right="#h0"/>
1010        <eq left="widen1" right="#h0"/>
1011      </and>
1012      <and>
1013        <eq left="widen0" right="#h0"/>
1014        <eq left="widen1" right="#h1"/>
1015      </and>
1016      <and>
1017        <eq left="widen0" right="#h1"/>
1018        <eq left="widen1" right="#h1"/>
1019      </and>
1020      <and>
1021        <eq left="widen0" right="#h0"/>
1022        <eq left="widen1" right="#none"/>
1023      </and>
1024      <and>
1025        <eq left="widen0" right="#h1"/>
1026        <eq left="widen1" right="#none"/>
1027      </and>
1028    </derived>
1029    <derived start="17" size="1">
1030      <or>
1031        <and>
1032          <eq left="neg0" right="#none"/>
1033          <eq left="neg1" right="#none"/>
1034        </and>
1035        <and alias="true">
1036          <eq left="neg0" right="#neg"/>
1037          <eq left="neg1" right="#neg"/>
1038        </and>
1039      </or>
1040      <or>
1041        <and>
1042          <eq left="neg0" right="#none"/>
1043          <eq left="neg1" right="#neg"/>
1044        </and>
1045        <and alias="true">
1046          <eq left="neg0" right="#neg"/>
1047          <eq left="neg1" right="#none"/>
1048        </and>
1049      </or>
1050    </derived>
1051    <swap left="0" right="1">
1052      <and>
1053        <eq left="widen0" right="#h1"/>
1054        <eq left="widen1" right="#h0"/>
1055      </and>
1056    </swap>
1057  </ins>
1058
1059  <ins name="FMA.v2f16" mask="0x600000" exact="0x400000" unit="fma">
1060    <src start="0" mask="0xfb"/>
1061    <src start="3" mask="0xfb"/>
1062    <src start="6"/>
1063    <mod name="neg0" size="1" opt="neg"/>
1064    <mod name="neg1" size="1" opt="neg"/>
1065    <mod name="swz0" start="9" size="2" default="h01">
1066      <opt>h00</opt>
1067      <opt>h10</opt>
1068      <opt>h01</opt>
1069      <opt>h11</opt>
1070    </mod>
1071    <mod name="swz1" start="11" size="2" default="h01">
1072      <opt>h00</opt>
1073      <opt>h10</opt>
1074      <opt>h01</opt>
1075      <opt>h11</opt>
1076    </mod>
1077    <mod name="round" start="13" size="2">
1078      <opt>none</opt>
1079      <opt>rtp</opt>
1080      <opt>rtn</opt>
1081      <opt>rtz</opt>
1082    </mod>
1083    <mod name="clamp" start="15" size="2">
1084      <opt>none</opt>
1085      <opt>clamp_0_inf</opt>
1086      <opt>clamp_m1_1</opt>
1087      <opt>clamp_0_1</opt>
1088    </mod>
1089    <mod name="neg2" start="18" size="1" opt="neg"/>
1090    <mod name="swz2" start="19" size="2" default="h01">
1091      <opt>h00</opt>
1092      <opt>h10</opt>
1093      <opt>h01</opt>
1094      <opt>h11</opt>
1095    </mod>
1096    <derived start="17" size="1">
1097      <or>
1098        <and>
1099          <eq left="neg0" right="#none"/>
1100          <eq left="neg1" right="#none"/>
1101        </and>
1102        <and alias="true">
1103          <eq left="neg0" right="#neg"/>
1104          <eq left="neg1" right="#neg"/>
1105        </and>
1106      </or>
1107      <or>
1108        <and>
1109          <eq left="neg0" right="#none"/>
1110          <eq left="neg1" right="#neg"/>
1111        </and>
1112        <and alias="true">
1113          <eq left="neg0" right="#neg"/>
1114          <eq left="neg1" right="#none"/>
1115        </and>
1116      </or>
1117    </derived>
1118  </ins>
1119
1120  <ins name="FMA_RSCALE.f32" mask="0x7c0000" exact="0x280000" unit="fma">
1121    <src start="0" mask="0xfb"/>
1122    <src start="3" mask="0xfb"/>
1123    <src start="6"/>
1124    <src start="9"/>
1125    <mod name="round" size="1" opt="rtz"/>
1126    <mod name="clamp" size="2">
1127      <opt>none</opt>
1128      <opt>clamp_0_inf</opt>
1129      <opt>clamp_m1_1</opt>
1130      <opt>clamp_0_1</opt>
1131    </mod>
1132    <mod name="neg0" size="1" opt="neg"/>
1133    <mod name="neg1" size="1" opt="neg"/>
1134    <mod name="abs0" start="15" size="1" opt="abs"/>
1135    <mod name="neg2" start="17" size="1" opt="neg"/>
1136    <mod name="special" size="2">
1137      <opt>none</opt>
1138      <opt>n</opt>
1139      <opt>left</opt>
1140      <opt>scale16</opt>
1141    </mod>
1142    <derived start="16" size="1">
1143      <or>
1144        <and>
1145          <eq left="neg0" right="#none"/>
1146          <eq left="neg1" right="#none"/>
1147        </and>
1148        <and alias="true">
1149          <eq left="neg0" right="#neg"/>
1150          <eq left="neg1" right="#neg"/>
1151        </and>
1152      </or>
1153      <or>
1154        <and>
1155          <eq left="neg0" right="#none"/>
1156          <eq left="neg1" right="#neg"/>
1157        </and>
1158        <and alias="true">
1159          <eq left="neg0" right="#neg"/>
1160          <eq left="neg1" right="#none"/>
1161        </and>
1162      </or>
1163    </derived>
1164    <derived start="12" size="3">
1165      <and>
1166        <eq left="clamp" right="#none"/>
1167        <eq left="special" right="#none"/>
1168        <eq left="round" right="#none"/>
1169      </and>
1170      <and>
1171        <eq left="clamp" right="#clamp_0_inf"/>
1172        <eq left="special" right="#none"/>
1173        <eq left="round" right="#none"/>
1174      </and>
1175      <and>
1176        <eq left="clamp" right="#clamp_m1_1"/>
1177        <eq left="special" right="#none"/>
1178        <eq left="round" right="#none"/>
1179      </and>
1180      <and>
1181        <eq left="clamp" right="#clamp_0_1"/>
1182        <eq left="special" right="#none"/>
1183        <eq left="round" right="#none"/>
1184      </and>
1185      <and>
1186        <eq left="clamp" right="#none"/>
1187        <eq left="special" right="#n"/>
1188        <eq left="round" right="#none"/>
1189      </and>
1190      <and>
1191        <eq left="clamp" right="#none"/>
1192        <eq left="special" right="#n"/>
1193        <eq left="round" right="#rtz"/>
1194      </and>
1195      <and>
1196        <eq left="clamp" right="#none"/>
1197        <eq left="special" right="#scale16"/>
1198        <eq left="round" right="#none"/>
1199      </and>
1200      <and>
1201        <eq left="clamp" right="#none"/>
1202        <eq left="special" right="#left"/>
1203        <eq left="round" right="#none"/>
1204      </and>
1205    </derived>
1206  </ins>
1207
1208  <ins name="FMA_RSCALE.v2f16" mask="0x7c0000" exact="0x680000" unit="fma">
1209    <src start="0" mask="0xfb"/>
1210    <src start="3" mask="0xfb"/>
1211    <src start="6"/>
1212    <src start="9"/>
1213    <mod name="round" size="1" opt="rtz"/>
1214    <mod name="clamp" size="2">
1215      <opt>none</opt>
1216      <opt>clamp_0_inf</opt>
1217      <opt>clamp_m1_1</opt>
1218      <opt>clamp_0_1</opt>
1219    </mod>
1220    <mod name="neg0" size="1" opt="neg"/>
1221    <mod name="neg1" size="1" opt="neg"/>
1222    <mod name="abs0" start="15" size="1" opt="abs"/>
1223    <mod name="neg2" start="17" size="1" opt="neg"/>
1224    <mod name="special" size="2">
1225      <opt>none</opt>
1226      <opt>n</opt>
1227      <opt>left</opt>
1228    </mod>
1229    <derived start="16" size="1">
1230      <or>
1231        <and>
1232          <eq left="neg0" right="#none"/>
1233          <eq left="neg1" right="#none"/>
1234        </and>
1235        <and alias="true">
1236          <eq left="neg0" right="#neg"/>
1237          <eq left="neg1" right="#neg"/>
1238        </and>
1239      </or>
1240      <or>
1241        <and>
1242          <eq left="neg0" right="#none"/>
1243          <eq left="neg1" right="#neg"/>
1244        </and>
1245        <and alias="true">
1246          <eq left="neg0" right="#neg"/>
1247          <eq left="neg1" right="#none"/>
1248        </and>
1249      </or>
1250    </derived>
1251    <derived start="12" size="3">
1252      <and>
1253        <eq left="clamp" right="#none"/>
1254        <eq left="special" right="#none"/>
1255        <eq left="round" right="#none"/>
1256      </and>
1257      <and>
1258        <eq left="clamp" right="#clamp_0_inf"/>
1259        <eq left="special" right="#none"/>
1260        <eq left="round" right="#none"/>
1261      </and>
1262      <and>
1263        <eq left="clamp" right="#clamp_m1_1"/>
1264        <eq left="special" right="#none"/>
1265        <eq left="round" right="#none"/>
1266      </and>
1267      <and>
1268        <eq left="clamp" right="#clamp_0_1"/>
1269        <eq left="special" right="#none"/>
1270        <eq left="round" right="#none"/>
1271      </and>
1272      <and>
1273        <eq left="clamp" right="#none"/>
1274        <eq left="special" right="#n"/>
1275        <eq left="round" right="#none"/>
1276      </and>
1277      <and>
1278        <eq left="clamp" right="#none"/>
1279        <eq left="special" right="#n"/>
1280        <eq left="round" right="#rtz"/>
1281      </and>
1282      <reserved/>
1283      <and>
1284        <eq left="clamp" right="#none"/>
1285        <eq left="special" right="#left"/>
1286        <eq left="round" right="#none"/>
1287      </and>
1288    </derived>
1289  </ins>
1290
1291  <ins name="FMUL_CSLICE" mask="0x7ffe00" exact="0x70d000" unit="fma">
1292    <src start="0" mask="0xfb"/>
1293    <src start="3" mask="0xfb"/>
1294    <mod name="lane0" start="6" size="1" default="h0">
1295      <opt>h0</opt>
1296      <opt>h1</opt>
1297    </mod>
1298    <mod name="abs0" start="7" size="1" opt="abs"/>
1299    <mod name="neg0" start="8" size="1" opt="neg"/>
1300  </ins>
1301
1302  <ins name="FMUL_SLICE.f32" mask="0x7fffc0" exact="0x70cb40" unit="fma">
1303    <src start="0" mask="0xfb"/>
1304    <src start="3" mask="0xfb"/>
1305  </ins>
1306
1307  <ins name="FREXPE.f32" unit="fma">
1308    <src start="0" mask="0xfb"/>
1309    <mod name="neg0" size="1" opt="neg"/>
1310    <mod name="sqrt" size="1" opt="sqrt"/>
1311    <mod name="log" size="1" opt="log"/>
1312    <mod name="widen0" start="3" size="2">
1313      <reserved/>
1314      <opt>none</opt>
1315      <opt>h0</opt>
1316      <opt>h1</opt>
1317    </mod>
1318    <encoding mask="0x7ffea0" exact="0x701c20">
1319      <eq left="log" right="#none"/>
1320      <copy name="neg0" start="6"/>
1321      <copy name="sqrt" start="8"/>
1322    </encoding>
1323    <encoding mask="0x7fffe0" exact="0x701e20">
1324      <and>
1325        <eq left="log" right="#log"/>
1326        <eq left="sqrt" right="#none"/>
1327        <eq left="neg0" right="#none"/>
1328      </and>
1329    </encoding>
1330  </ins>
1331
1332  <ins name="FREXPE.v2f16" unit="fma">
1333    <src start="0" mask="0xfb"/>
1334    <mod name="neg0" size="1" opt="neg"/>
1335    <mod name="sqrt" size="1" opt="sqrt"/>
1336    <mod name="log" size="1" opt="log"/>
1337    <mod name="swz0" start="3" size="2" default="h01">
1338      <opt>h00</opt>
1339      <opt>h10</opt>
1340      <opt>h01</opt>
1341      <opt>h11</opt>
1342    </mod>
1343    <encoding mask="0x7ffea0" exact="0x701c00">
1344      <eq left="log" right="#none"/>
1345      <copy name="neg0" start="6"/>
1346      <copy name="sqrt" start="8"/>
1347    </encoding>
1348    <encoding mask="0x7fffe0" exact="0x701e00">
1349      <and>
1350        <eq left="log" right="#log"/>
1351        <eq left="sqrt" right="#none"/>
1352        <eq left="neg0" right="#none"/>
1353      </and>
1354    </encoding>
1355  </ins>
1356
1357  <ins name="FREXPM.f32" unit="fma">
1358    <src start="0" mask="0xfb"/>
1359    <mod name="abs0" start="6" size="1" opt="abs"/>
1360    <mod name="sqrt" size="1" opt="sqrt"/>
1361    <mod name="log" size="1" opt="log"/>
1362    <mod name="widen0" start="3" size="2">
1363      <reserved/>
1364      <opt>none</opt>
1365      <opt>h0</opt>
1366      <opt>h1</opt>
1367    </mod>
1368    <mod name="neg0" size="1" opt="neg"/>
1369    <encoding mask="0x7fff20" exact="0x701b20">
1370      <and>
1371        <eq left="log" right="#none"/>
1372        <eq left="neg0" right="#none"/>
1373      </and>
1374      <copy name="sqrt" start="7"/>
1375    </encoding>
1376    <encoding mask="0x7fff20" exact="0x701a20">
1377      <and>
1378        <eq left="log" right="#log"/>
1379        <eq left="sqrt" right="#none"/>
1380      </and>
1381      <copy name="neg0" start="7"/>
1382    </encoding>
1383  </ins>
1384
1385  <ins name="FREXPM.v2f16" unit="fma">
1386    <src start="0" mask="0xfb"/>
1387    <mod name="abs0" start="6" size="1" opt="abs"/>
1388    <mod name="sqrt" size="1" opt="sqrt"/>
1389    <mod name="log" size="1" opt="log"/>
1390    <mod name="swz0" start="3" size="2" default="h01">
1391      <opt>h00</opt>
1392      <opt>h10</opt>
1393      <opt>h01</opt>
1394      <opt>h11</opt>
1395    </mod>
1396    <mod name="neg0" size="1" opt="neg"/>
1397    <encoding mask="0x7fff20" exact="0x701b00">
1398      <and>
1399        <eq left="log" right="#none"/>
1400        <eq left="neg0" right="#none"/>
1401      </and>
1402      <copy name="sqrt" start="7"/>
1403    </encoding>
1404    <encoding mask="0x7fff20" exact="0x701a00">
1405      <and>
1406        <eq left="log" right="#log"/>
1407        <eq left="sqrt" right="#none"/>
1408      </and>
1409      <copy name="neg0" start="7"/>
1410    </encoding>
1411  </ins>
1412
1413  <ins name="FROUND.f32" unit="fma">
1414    <src start="0" mask="0xfb"/>
1415    <mod name="abs0" start="7" size="1" opt="abs"/>
1416    <mod name="neg0" start="8" size="1" opt="neg"/>
1417    <mod name="widen0" start="3" size="2">
1418      <reserved/>
1419      <opt>none</opt>
1420      <opt>h0</opt>
1421      <opt>h1</opt>
1422    </mod>
1423    <mod name="round" size="3">
1424      <opt>none</opt>
1425      <opt>rtp</opt>
1426      <opt>rtn</opt>
1427      <opt>rtz</opt>
1428      <opt>rtna</opt>
1429    </mod>
1430    <encoding mask="0x7ff860" exact="0x70c020">
1431      <neq left="round" right="#rtna"/>
1432      <derived start="9" size="2">
1433        <eq left="round" right="#none"/>
1434        <eq left="round" right="#rtp"/>
1435        <eq left="round" right="#rtn"/>
1436        <eq left="round" right="#rtz"/>
1437      </derived>
1438    </encoding>
1439    <encoding mask="0x7ffe60" exact="0x707620">
1440      <eq left="round" right="#rtna"/>
1441    </encoding>
1442  </ins>
1443
1444  <ins name="FROUND.v2f16" unit="fma">
1445    <src start="0" mask="0xfb"/>
1446    <mod name="abs0" start="7" size="1" opt="abs"/>
1447    <mod name="neg0" start="8" size="1" opt="neg"/>
1448    <mod name="swz0" start="3" size="2" default="h01">
1449      <opt>h00</opt>
1450      <opt>h10</opt>
1451      <opt>h01</opt>
1452      <opt>h11</opt>
1453    </mod>
1454    <mod name="round" size="3">
1455      <opt>none</opt>
1456      <opt>rtp</opt>
1457      <opt>rtn</opt>
1458      <opt>rtz</opt>
1459      <opt>rtna</opt>
1460    </mod>
1461    <encoding mask="0x7ff860" exact="0x70c000">
1462      <neq left="round" right="#rtna"/>
1463      <derived start="9" size="2">
1464        <eq left="round" right="#none"/>
1465        <eq left="round" right="#rtp"/>
1466        <eq left="round" right="#rtn"/>
1467        <eq left="round" right="#rtz"/>
1468      </derived>
1469    </encoding>
1470    <encoding mask="0x7ffe60" exact="0x707600">
1471      <eq left="round" right="#rtna"/>
1472    </encoding>
1473  </ins>
1474
1475  <ins name="FRSHIFT_DOUBLE.i32" mask="0x7ff800" exact="0x33f000" unit="fma">
1476    <src start="0" mask="0xfb"/>
1477    <src start="3" mask="0xfb"/>
1478    <src start="6"/>
1479    <mod name="bytes2" start="9" size="1" opt="bytes2"/>
1480    <mod name="lane2" start="10" size="1" default="b0">
1481      <opt>b0</opt>
1482      <opt>b2</opt>
1483    </mod>
1484  </ins>
1485
1486  <ins name="IADDC.i32" mask="0x7ffe00" exact="0x27fc00" unit="fma">
1487    <src start="0" mask="0xfb"/>
1488    <src start="3" mask="0xfb"/>
1489    <src start="6"/>
1490  </ins>
1491
1492  <ins name="IDP.v4i8" mask="0x7ff9c0" exact="0x73e8c0" unit="fma">
1493    <src start="0" mask="0xfb"/>
1494    <src start="3" mask="0xfb"/>
1495    <mod name="sign0" start="9" size="1">
1496      <opt>zext</opt>
1497      <opt>sext</opt>
1498    </mod>
1499    <mod name="sign1" start="10" size="1">
1500      <opt>zext</opt>
1501      <opt>sext</opt>
1502    </mod>
1503  </ins>
1504
1505  <ins name="IMUL.i32" unit="fma">
1506    <src start="0" mask="0xfb"/>
1507    <src start="3" mask="0xfb"/>
1508    <mod name="widen1" size="3">
1509      <opt>none</opt>
1510      <opt>h0</opt>
1511      <opt>h1</opt>
1512      <opt>b0</opt>
1513      <opt>b1</opt>
1514      <opt>b2</opt>
1515      <opt>b3</opt>
1516    </mod>
1517    <mod name="extend" size="2">
1518      <opt>none</opt>
1519      <opt>sext</opt>
1520      <opt>zext</opt>
1521    </mod>
1522    <encoding mask="0x7fffc0" exact="0x73c0c0">
1523      <and>
1524        <eq left="extend" right="#none"/>
1525        <eq left="widen1" right="#none"/>
1526      </and>
1527    </encoding>
1528    <encoding mask="0x7ff9c0" exact="0x73c8c0">
1529      <and>
1530        <neq left="extend" right="#none"/>
1531        <or>
1532          <eq left="widen1" right="#h0"/>
1533          <eq left="widen1" right="#h1"/>
1534        </or>
1535      </and>
1536      <derived start="9" size="1">
1537        <eq left="widen1" right="#h0"/>
1538        <eq left="widen1" right="#h1"/>
1539      </derived>
1540      <derived start="10" size="1">
1541        <eq left="extend" right="#zext"/>
1542        <eq left="extend" right="#sext"/>
1543      </derived>
1544    </encoding>
1545    <encoding mask="0x7ff1c0" exact="0x73b0c0">
1546      <and>
1547        <neq left="extend" right="#none"/>
1548        <or>
1549          <eq left="widen1" right="#b0"/>
1550          <eq left="widen1" right="#b1"/>
1551          <eq left="widen1" right="#b2"/>
1552          <eq left="widen1" right="#b3"/>
1553        </or>
1554      </and>
1555      <derived start="9" size="2">
1556        <eq left="widen1" right="#b0"/>
1557        <eq left="widen1" right="#b1"/>
1558        <eq left="widen1" right="#b2"/>
1559        <eq left="widen1" right="#b3"/>
1560      </derived>
1561      <derived start="11" size="1">
1562        <eq left="extend" right="#zext"/>
1563        <eq left="extend" right="#sext"/>
1564      </derived>
1565    </encoding>
1566  </ins>
1567
1568  <ins name="IMUL.v2i16" mask="0x7fe1c0" exact="0x7240c0" unit="fma">
1569    <src start="0" mask="0xfb"/>
1570    <src start="3" mask="0xfb"/>
1571    <mod name="swz0" start="9" size="2" default="h01">
1572      <opt>h00</opt>
1573      <opt>h10</opt>
1574      <opt>h01</opt>
1575      <opt>h11</opt>
1576    </mod>
1577    <mod name="swz1" start="11" size="2" default="h01">
1578      <opt>h00</opt>
1579      <opt>h10</opt>
1580      <opt>h01</opt>
1581      <opt>h11</opt>
1582    </mod>
1583  </ins>
1584
1585  <ins name="IMUL.v4i8" unit="fma">
1586    <src start="0" mask="0xfb"/>
1587    <src start="3" mask="0xfb"/>
1588    <mod name="replicate0" size="3" default="b0123">
1589      <opt>b0123</opt>
1590    </mod>
1591    <mod name="replicate1" size="3" default="b0123">
1592      <opt>b0123</opt>
1593      <opt>b0000</opt>
1594      <opt>b1111</opt>
1595      <opt>b2222</opt>
1596      <opt>b3333</opt>
1597    </mod>
1598    <encoding mask="0x7fffc0" exact="0x73e0c0">
1599      <and>
1600        <eq left="replicate0" right="#b0123"/>
1601        <eq left="replicate1" right="#b0123"/>
1602      </and>
1603    </encoding>
1604    <encoding mask="0x7ff9c0" exact="0x7380c0">
1605      <and>
1606        <eq left="replicate0" right="#b0123"/>
1607        <neq left="replicate1" right="#b0123"/>
1608      </and>
1609      <derived start="9" size="2">
1610        <eq left="replicate1" right="#b0000"/>
1611        <eq left="replicate1" right="#b1111"/>
1612        <eq left="replicate1" right="#b2222"/>
1613        <eq left="replicate1" right="#b3333"/>
1614      </derived>
1615    </encoding>
1616  </ins>
1617
1618  <ins name="IMULD" mask="0x7fff80" exact="0x70f100" unit="fma">
1619    <src start="0" mask="0x33"/>
1620    <src start="3" mask="0x33"/>
1621    <mod name="threads" start="6" size="1" default="odd">
1622      <opt>even</opt>
1623      <opt>odd</opt>
1624    </mod>
1625  </ins>
1626
1627  <ins name="ISUBB.i32" mask="0x7ffe00" exact="0x27fe00" unit="fma">
1628    <src start="0" mask="0xfb"/>
1629    <src start="3" mask="0xfb"/>
1630    <src start="6"/>
1631  </ins>
1632
1633  <ins name="JUMP_EX" mask="0x7ff000" exact="0x2eb000" last="true" unit="fma">
1634    <src start="0" mask="0xfb"/>
1635    <src start="3" mask="0xfb"/>
1636    <src start="6"/>
1637    <mod name="test_mode" start="9" size="1" default="z">
1638      <opt>z</opt>
1639      <opt>nz</opt>
1640    </mod>
1641    <mod name="stack_mode" start="10" size="2">
1642      <opt>return</opt>
1643      <opt>call</opt>
1644      <opt>none</opt>
1645      <opt>replace</opt>
1646    </mod>
1647  </ins>
1648
1649  <ins name="LROT_DOUBLE.i32" mask="0x7ff000" exact="0x33b000" unit="fma">
1650    <src start="0" mask="0xfb"/>
1651    <src start="3" mask="0xfb"/>
1652    <src start="6"/>
1653    <mod name="bytes2" start="9" size="1" opt="bytes2"/>
1654    <mod name="lane2" start="10" size="1" default="b0">
1655      <opt>b0</opt>
1656      <opt>b2</opt>
1657    </mod>
1658    <mod name="result_word" start="11" size="1" default="w0">
1659      <opt>w0</opt>
1660      <opt>w1</opt>
1661    </mod>
1662  </ins>
1663
1664  <ins name="LSHIFT_AND.i32" mask="0x7f3800" exact="0x311000" unit="fma">
1665    <src start="0" mask="0xfb"/>
1666    <src start="3" mask="0xfb"/>
1667    <src start="6"/>
1668    <mod name="lane2" start="9" size="2" default="b0">
1669      <opt>b0</opt>
1670      <opt>b1</opt>
1671      <opt>b2</opt>
1672      <opt>b3</opt>
1673    </mod>
1674    <mod name="not1" start="14" size="1" opt="not"/>
1675    <mod name="not_result" start="15" size="1">
1676      <opt>not</opt>
1677      <opt>none</opt>
1678    </mod>
1679  </ins>
1680
1681  <ins name="LSHIFT_AND.v2i16" unit="fma">
1682    <src start="0" mask="0xfb"/>
1683    <src start="3" mask="0xfb"/>
1684    <src start="6"/>
1685    <mod name="lanes2" size="3" default="b02">
1686      <opt>b00</opt>
1687      <opt>b11</opt>
1688      <opt>b22</opt>
1689      <opt>b33</opt>
1690      <opt>b01</opt>
1691      <opt>b23</opt>
1692      <opt>b02</opt>
1693    </mod>
1694    <mod name="not1" start="14" size="1" opt="not"/>
1695    <mod name="not_result" start="15" size="1">
1696      <opt>not</opt>
1697      <opt>none</opt>
1698    </mod>
1699    <encoding mask="0x7f3800" exact="0x310800">
1700      <or>
1701        <eq left="lanes2" right="#b00"/>
1702        <eq left="lanes2" right="#b11"/>
1703        <eq left="lanes2" right="#b22"/>
1704        <eq left="lanes2" right="#b33"/>
1705      </or>
1706      <derived start="9" size="2">
1707        <eq left="lanes2" right="#b00"/>
1708        <eq left="lanes2" right="#b11"/>
1709        <eq left="lanes2" right="#b22"/>
1710        <eq left="lanes2" right="#b33"/>
1711      </derived>
1712    </encoding>
1713    <encoding mask="0x7f3800" exact="0x311800">
1714      <or>
1715        <eq left="lanes2" right="#b01"/>
1716        <eq left="lanes2" right="#b23"/>
1717        <eq left="lanes2" right="#b02"/>
1718      </or>
1719      <derived start="9" size="2">
1720        <reserved/>
1721        <eq left="lanes2" right="#b01"/>
1722        <eq left="lanes2" right="#b23"/>
1723        <eq left="lanes2" right="#b02"/>
1724      </derived>
1725    </encoding>
1726  </ins>
1727
1728  <ins name="LSHIFT_AND.v4i8" unit="fma">
1729    <src start="0" mask="0xfb"/>
1730    <src start="3" mask="0xfb"/>
1731    <src start="6"/>
1732    <mod name="lanes2" size="3" default="b0123">
1733      <opt>b0123</opt>
1734      <opt>b0000</opt>
1735      <opt>b1111</opt>
1736      <opt>b2222</opt>
1737      <opt>b3333</opt>
1738    </mod>
1739    <mod name="not1" start="14" size="1" opt="not"/>
1740    <mod name="not_result" start="15" size="1">
1741      <opt>not</opt>
1742      <opt>none</opt>
1743    </mod>
1744    <encoding mask="0x7f3800" exact="0x310000">
1745      <neq left="lanes2" right="#b0123"/>
1746      <derived start="9" size="2">
1747        <eq left="lanes2" right="#b0000"/>
1748        <eq left="lanes2" right="#b1111"/>
1749        <eq left="lanes2" right="#b2222"/>
1750        <eq left="lanes2" right="#b3333"/>
1751      </derived>
1752    </encoding>
1753    <encoding mask="0x7f3e00" exact="0x311800">
1754      <eq left="lanes2" right="#b0123"/>
1755    </encoding>
1756  </ins>
1757
1758  <ins name="LSHIFT_DOUBLE.i32" mask="0x7ff000" exact="0x33c000" unit="fma">
1759    <src start="0" mask="0xfb"/>
1760    <src start="3" mask="0xfb"/>
1761    <src start="6"/>
1762    <mod name="bytes2" start="9" size="1" opt="bytes2"/>
1763    <mod name="lane2" start="10" size="1" default="b0">
1764      <opt>b0</opt>
1765      <opt>b2</opt>
1766    </mod>
1767    <mod name="result_word" start="11" size="1" default="w0">
1768      <opt>w0</opt>
1769      <opt>w1</opt>
1770    </mod>
1771  </ins>
1772
1773  <ins name="LSHIFT_OR.i32" mask="0x7f3800" exact="0x313000" unit="fma">
1774    <src start="0" mask="0xfb"/>
1775    <src start="3" mask="0xfb"/>
1776    <src start="6"/>
1777    <mod name="lane2" start="9" size="2" default="b0">
1778      <opt>b0</opt>
1779      <opt>b1</opt>
1780      <opt>b2</opt>
1781      <opt>b3</opt>
1782    </mod>
1783    <mod name="not1" start="14" size="1">
1784      <opt>not</opt>
1785      <opt>none</opt>
1786    </mod>
1787    <mod name="not_result" start="15" size="1" opt="not"/>
1788  </ins>
1789
1790  <ins name="LSHIFT_OR.v2i16" unit="fma">
1791    <src start="0" mask="0xfb"/>
1792    <src start="3" mask="0xfb"/>
1793    <src start="6"/>
1794    <mod name="lanes2" size="3" default="b02">
1795      <opt>b00</opt>
1796      <opt>b11</opt>
1797      <opt>b22</opt>
1798      <opt>b33</opt>
1799      <opt>b01</opt>
1800      <opt>b23</opt>
1801      <opt>b02</opt>
1802    </mod>
1803    <mod name="not1" start="14" size="1">
1804      <opt>not</opt>
1805      <opt>none</opt>
1806    </mod>
1807    <mod name="not_result" start="15" size="1" opt="not"/>
1808    <encoding mask="0x7f3800" exact="0x312800">
1809      <or>
1810        <eq left="lanes2" right="#b00"/>
1811        <eq left="lanes2" right="#b11"/>
1812        <eq left="lanes2" right="#b22"/>
1813        <eq left="lanes2" right="#b33"/>
1814      </or>
1815      <derived start="9" size="2">
1816        <eq left="lanes2" right="#b00"/>
1817        <eq left="lanes2" right="#b11"/>
1818        <eq left="lanes2" right="#b22"/>
1819        <eq left="lanes2" right="#b33"/>
1820      </derived>
1821    </encoding>
1822    <encoding mask="0x7f3800" exact="0x313800">
1823      <or>
1824        <eq left="lanes2" right="#b01"/>
1825        <eq left="lanes2" right="#b23"/>
1826        <eq left="lanes2" right="#b02"/>
1827      </or>
1828      <derived start="9" size="2">
1829        <reserved/>
1830        <eq left="lanes2" right="#b01"/>
1831        <eq left="lanes2" right="#b23"/>
1832        <eq left="lanes2" right="#b02"/>
1833      </derived>
1834    </encoding>
1835  </ins>
1836
1837  <ins name="LSHIFT_OR.v4i8" unit="fma">
1838    <src start="0" mask="0xfb"/>
1839    <src start="3" mask="0xfb"/>
1840    <src start="6"/>
1841    <mod name="lanes2" size="3" default="b0123">
1842      <opt>b0123</opt>
1843      <opt>b0000</opt>
1844      <opt>b1111</opt>
1845      <opt>b2222</opt>
1846      <opt>b3333</opt>
1847    </mod>
1848    <mod name="not1" start="14" size="1">
1849      <opt>not</opt>
1850      <opt>none</opt>
1851    </mod>
1852    <mod name="not_result" start="15" size="1" opt="not"/>
1853    <encoding mask="0x7f3800" exact="0x312000">
1854      <neq left="lanes2" right="#b0123"/>
1855      <derived start="9" size="2">
1856        <eq left="lanes2" right="#b0000"/>
1857        <eq left="lanes2" right="#b1111"/>
1858        <eq left="lanes2" right="#b2222"/>
1859        <eq left="lanes2" right="#b3333"/>
1860      </derived>
1861    </encoding>
1862    <encoding mask="0x7f3e00" exact="0x313800">
1863      <eq left="lanes2" right="#b0123"/>
1864    </encoding>
1865  </ins>
1866
1867  <ins name="LSHIFT_XOR.i32" mask="0x7fd800" exact="0x325000" unit="fma">
1868    <src start="0" mask="0xfb"/>
1869    <src start="3" mask="0xfb"/>
1870    <src start="6"/>
1871    <mod name="lane2" start="9" size="2" default="b0">
1872      <opt>b0</opt>
1873      <opt>b1</opt>
1874      <opt>b2</opt>
1875      <opt>b3</opt>
1876    </mod>
1877    <mod name="not_result" start="13" size="1" opt="not"/>
1878  </ins>
1879
1880  <ins name="LSHIFT_XOR.v2i16" unit="fma">
1881    <src start="0" mask="0xfb"/>
1882    <src start="3" mask="0xfb"/>
1883    <src start="6"/>
1884    <mod name="lanes2" size="3" default="b02">
1885      <opt>b00</opt>
1886      <opt>b11</opt>
1887      <opt>b22</opt>
1888      <opt>b33</opt>
1889      <opt>b01</opt>
1890      <opt>b23</opt>
1891      <opt>b02</opt>
1892    </mod>
1893    <mod name="not_result" start="13" size="1" opt="not"/>
1894    <encoding mask="0x7fd800" exact="0x324800">
1895      <or>
1896        <eq left="lanes2" right="#b00"/>
1897        <eq left="lanes2" right="#b11"/>
1898        <eq left="lanes2" right="#b22"/>
1899        <eq left="lanes2" right="#b33"/>
1900      </or>
1901      <derived start="9" size="2">
1902        <eq left="lanes2" right="#b00"/>
1903        <eq left="lanes2" right="#b11"/>
1904        <eq left="lanes2" right="#b22"/>
1905        <eq left="lanes2" right="#b33"/>
1906      </derived>
1907    </encoding>
1908    <encoding mask="0x7fd800" exact="0x325800">
1909      <or>
1910        <eq left="lanes2" right="#b01"/>
1911        <eq left="lanes2" right="#b23"/>
1912        <eq left="lanes2" right="#b02"/>
1913      </or>
1914      <derived start="9" size="2">
1915        <reserved/>
1916        <eq left="lanes2" right="#b01"/>
1917        <eq left="lanes2" right="#b23"/>
1918        <eq left="lanes2" right="#b02"/>
1919      </derived>
1920    </encoding>
1921  </ins>
1922
1923  <ins name="LSHIFT_XOR.v4i8" unit="fma">
1924    <src start="0" mask="0xfb"/>
1925    <src start="3" mask="0xfb"/>
1926    <src start="6"/>
1927    <mod name="lanes2" size="3" default="b0123">
1928      <opt>b0123</opt>
1929      <opt>b0000</opt>
1930      <opt>b1111</opt>
1931      <opt>b2222</opt>
1932      <opt>b3333</opt>
1933    </mod>
1934    <mod name="not_result" start="13" size="1" opt="not"/>
1935    <encoding mask="0x7fd800" exact="0x324000">
1936      <neq left="lanes2" right="#b0123"/>
1937      <derived start="9" size="2">
1938        <eq left="lanes2" right="#b0000"/>
1939        <eq left="lanes2" right="#b1111"/>
1940        <eq left="lanes2" right="#b2222"/>
1941        <eq left="lanes2" right="#b3333"/>
1942      </derived>
1943    </encoding>
1944    <encoding mask="0x7fde00" exact="0x325800">
1945      <eq left="lanes2" right="#b0123"/>
1946    </encoding>
1947  </ins>
1948
1949  <ins name="MKVEC.v2i16" mask="0x7fff00" exact="0x70f000" unit="fma">
1950    <src start="0" mask="0xfb"/>
1951    <src start="3" mask="0xfb"/>
1952    <mod name="lane0" start="6" size="1" default="h0">
1953      <opt>h0</opt>
1954      <opt>h1</opt>
1955    </mod>
1956    <mod name="lane1" start="7" size="1" default="h0">
1957      <opt>h0</opt>
1958      <opt>h1</opt>
1959    </mod>
1960  </ins>
1961
1962  <ins name="MKVEC.v4i8" mask="0x7f0000" exact="0x710000" unit="fma">
1963    <src start="0" mask="0xfb"/>
1964    <src start="3" mask="0xfb"/>
1965    <src start="6"/>
1966    <src start="9"/>
1967    <mod name="lane0" start="12" size="1" default="b0">
1968      <opt>b0</opt>
1969      <opt>b2</opt>
1970    </mod>
1971    <mod name="lane1" start="13" size="1" default="b0">
1972      <opt>b0</opt>
1973      <opt>b2</opt>
1974    </mod>
1975    <mod name="lane2" start="14" size="1" default="b0">
1976      <opt>b0</opt>
1977      <opt>b2</opt>
1978    </mod>
1979    <mod name="lane3" start="15" size="1" default="b0">
1980      <opt>b0</opt>
1981      <opt>b2</opt>
1982    </mod>
1983  </ins>
1984
1985  <ins name="MOV.i32" mask="0x7ffff8" exact="0x701968" unit="fma">
1986    <src start="0" mask="0xfb"/>
1987  </ins>
1988
1989  <ins name="NOP" mask="0x7fffff" exact="0x701963" dests="0" unit="fma"/>
1990
1991  <ins name="POPCOUNT.i32" mask="0x7ffff8" exact="0x73c6d8" unit="fma">
1992    <src start="0" mask="0xfb"/>
1993  </ins>
1994
1995  <ins name="QUIET.f32" mask="0x7ffff8" exact="0x701970" unit="fma">
1996    <src start="0" mask="0xfb"/>
1997  </ins>
1998
1999  <ins name="QUIET.v2f16" mask="0x7fffc8" exact="0x701900" unit="fma">
2000    <src start="0" mask="0xfb"/>
2001    <mod name="swz0" start="4" size="2" default="h01">
2002      <opt>h00</opt>
2003      <opt>h10</opt>
2004      <opt>h01</opt>
2005      <opt>h11</opt>
2006    </mod>
2007  </ins>
2008
2009  <ins name="RROT_DOUBLE.i32" mask="0x7ff000" exact="0x33a000" unit="fma">
2010    <src start="0" mask="0xfb"/>
2011    <src start="3" mask="0xfb"/>
2012    <src start="6"/>
2013    <mod name="bytes2" start="9" size="1" opt="bytes2"/>
2014    <mod name="lane2" start="10" size="1" default="b0">
2015      <opt>b0</opt>
2016      <opt>b2</opt>
2017    </mod>
2018    <mod name="result_word" start="11" size="1" default="w0">
2019      <opt>w0</opt>
2020      <opt>w1</opt>
2021    </mod>
2022  </ins>
2023
2024  <ins name="RSHIFT_AND.i32" mask="0x7f3800" exact="0x301000" unit="fma">
2025    <src start="0" mask="0xfb"/>
2026    <src start="3" mask="0xfb"/>
2027    <src start="6"/>
2028    <mod name="lane2" start="9" size="2" default="b0">
2029      <opt>b0</opt>
2030      <opt>b1</opt>
2031      <opt>b2</opt>
2032      <opt>b3</opt>
2033    </mod>
2034    <mod name="not1" start="14" size="1" opt="not"/>
2035    <mod name="not_result" start="15" size="1">
2036      <opt>not</opt>
2037      <opt>none</opt>
2038    </mod>
2039    <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/>
2040  </ins>
2041
2042  <ins name="RSHIFT_AND.v2i16" unit="fma">
2043    <src start="0" mask="0xfb"/>
2044    <src start="3" mask="0xfb"/>
2045    <src start="6"/>
2046    <mod name="lanes2" size="3" default="b02">
2047      <opt>b00</opt>
2048      <opt>b11</opt>
2049      <opt>b22</opt>
2050      <opt>b33</opt>
2051      <opt>b01</opt>
2052      <opt>b23</opt>
2053      <opt>b02</opt>
2054    </mod>
2055    <mod name="not1" start="14" size="1" opt="not"/>
2056    <mod name="not_result" start="15" size="1">
2057      <opt>not</opt>
2058      <opt>none</opt>
2059    </mod>
2060    <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/>
2061    <encoding mask="0x7f3800" exact="0x300800">
2062      <or>
2063        <eq left="lanes2" right="#b00"/>
2064        <eq left="lanes2" right="#b11"/>
2065        <eq left="lanes2" right="#b22"/>
2066        <eq left="lanes2" right="#b33"/>
2067      </or>
2068      <derived start="9" size="2">
2069        <eq left="lanes2" right="#b00"/>
2070        <eq left="lanes2" right="#b11"/>
2071        <eq left="lanes2" right="#b22"/>
2072        <eq left="lanes2" right="#b33"/>
2073      </derived>
2074    </encoding>
2075    <encoding mask="0x7f3800" exact="0x301800">
2076      <or>
2077        <eq left="lanes2" right="#b01"/>
2078        <eq left="lanes2" right="#b23"/>
2079        <eq left="lanes2" right="#b02"/>
2080      </or>
2081      <derived start="9" size="2">
2082        <reserved/>
2083        <eq left="lanes2" right="#b01"/>
2084        <eq left="lanes2" right="#b23"/>
2085        <eq left="lanes2" right="#b02"/>
2086      </derived>
2087    </encoding>
2088  </ins>
2089
2090  <ins name="RSHIFT_AND.v4i8" unit="fma">
2091    <src start="0" mask="0xfb"/>
2092    <src start="3" mask="0xfb"/>
2093    <src start="6"/>
2094    <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/>
2095    <mod name="lanes2" size="3" default="b0123">
2096      <opt>b0123</opt>
2097      <opt>b0000</opt>
2098      <opt>b1111</opt>
2099      <opt>b2222</opt>
2100      <opt>b3333</opt>
2101    </mod>
2102    <mod name="not1" start="14" size="1" opt="not"/>
2103    <mod name="not_result" start="15" size="1">
2104      <opt>not</opt>
2105      <opt>none</opt>
2106    </mod>
2107    <encoding mask="0x7f3800" exact="0x300000">
2108      <neq left="lanes2" right="#b0123"/>
2109      <derived start="9" size="2">
2110        <eq left="lanes2" right="#b0000"/>
2111        <eq left="lanes2" right="#b1111"/>
2112        <eq left="lanes2" right="#b2222"/>
2113        <eq left="lanes2" right="#b3333"/>
2114      </derived>
2115    </encoding>
2116    <encoding mask="0x7f3e00" exact="0x301800">
2117      <eq left="lanes2" right="#b0123"/>
2118    </encoding>
2119  </ins>
2120
2121  <ins name="RSHIFT_DOUBLE.i32" mask="0x7ff000" exact="0x33d000" unit="fma">
2122    <src start="0" mask="0xfb"/>
2123    <src start="3" mask="0xfb"/>
2124    <src start="6"/>
2125    <mod name="bytes2" start="9" size="1" opt="bytes2"/>
2126    <mod name="lane2" start="10" size="1" default="b0">
2127      <opt>b0</opt>
2128      <opt>b2</opt>
2129    </mod>
2130    <mod name="result_word" start="11" size="1" default="w0">
2131      <opt>w0</opt>
2132      <opt>w1</opt>
2133    </mod>
2134  </ins>
2135
2136  <ins name="RSHIFT_OR.i32" mask="0x7f3800" exact="0x303000" unit="fma">
2137    <src start="0" mask="0xfb"/>
2138    <src start="3" mask="0xfb"/>
2139    <src start="6"/>
2140    <mod name="lane2" start="9" size="2" default="b0">
2141      <opt>b0</opt>
2142      <opt>b1</opt>
2143      <opt>b2</opt>
2144      <opt>b3</opt>
2145    </mod>
2146    <mod name="not1" start="14" size="1">
2147      <opt>not</opt>
2148      <opt>none</opt>
2149    </mod>
2150    <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/>
2151    <mod name="not_result" start="15" size="1" opt="not"/>
2152  </ins>
2153
2154  <ins name="RSHIFT_OR.v2i16" unit="fma">
2155    <src start="0" mask="0xfb"/>
2156    <src start="3" mask="0xfb"/>
2157    <src start="6"/>
2158    <mod name="lanes2" size="3" default="b02">
2159      <opt>b00</opt>
2160      <opt>b11</opt>
2161      <opt>b22</opt>
2162      <opt>b33</opt>
2163      <opt>b01</opt>
2164      <opt>b23</opt>
2165      <opt>b02</opt>
2166    </mod>
2167    <mod name="not1" start="14" size="1">
2168      <opt>not</opt>
2169      <opt>none</opt>
2170    </mod>
2171    <mod name="not_result" start="15" size="1" opt="not"/>
2172    <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/>
2173    <encoding mask="0x7f3800" exact="0x302800">
2174      <or>
2175        <eq left="lanes2" right="#b00"/>
2176        <eq left="lanes2" right="#b11"/>
2177        <eq left="lanes2" right="#b22"/>
2178        <eq left="lanes2" right="#b33"/>
2179      </or>
2180      <derived start="9" size="2">
2181        <eq left="lanes2" right="#b00"/>
2182        <eq left="lanes2" right="#b11"/>
2183        <eq left="lanes2" right="#b22"/>
2184        <eq left="lanes2" right="#b33"/>
2185      </derived>
2186    </encoding>
2187    <encoding mask="0x7f3800" exact="0x303800">
2188      <or>
2189        <eq left="lanes2" right="#b01"/>
2190        <eq left="lanes2" right="#b23"/>
2191        <eq left="lanes2" right="#b02"/>
2192      </or>
2193      <derived start="9" size="2">
2194        <reserved/>
2195        <eq left="lanes2" right="#b01"/>
2196        <eq left="lanes2" right="#b23"/>
2197        <eq left="lanes2" right="#b02"/>
2198      </derived>
2199    </encoding>
2200  </ins>
2201
2202  <ins name="RSHIFT_OR.v4i8" unit="fma">
2203    <src start="0" mask="0xfb"/>
2204    <src start="3" mask="0xfb"/>
2205    <src start="6"/>
2206    <mod name="lanes2" size="3" default="b0123">
2207      <opt>b0123</opt>
2208      <opt>b0000</opt>
2209      <opt>b1111</opt>
2210      <opt>b2222</opt>
2211      <opt>b3333</opt>
2212    </mod>
2213    <mod name="not1" start="14" size="1">
2214      <opt>not</opt>
2215      <opt>none</opt>
2216    </mod>
2217    <mod name="not_result" start="15" size="1" opt="not"/>
2218    <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/>
2219    <encoding mask="0x7f3800" exact="0x302000">
2220      <neq left="lanes2" right="#b0123"/>
2221      <derived start="9" size="2">
2222        <eq left="lanes2" right="#b0000"/>
2223        <eq left="lanes2" right="#b1111"/>
2224        <eq left="lanes2" right="#b2222"/>
2225        <eq left="lanes2" right="#b3333"/>
2226      </derived>
2227    </encoding>
2228    <encoding mask="0x7f3e00" exact="0x303800">
2229      <eq left="lanes2" right="#b0123"/>
2230    </encoding>
2231  </ins>
2232
2233  <ins name="RSHIFT_XOR.i32" mask="0x7fd800" exact="0x321000" unit="fma">
2234    <src start="0" mask="0xfb"/>
2235    <src start="3" mask="0xfb"/>
2236    <src start="6"/>
2237    <mod name="lane2" start="9" size="2" default="b0">
2238      <opt>b0</opt>
2239      <opt>b1</opt>
2240      <opt>b2</opt>
2241      <opt>b3</opt>
2242    </mod>
2243    <mod name="not_result" start="13" size="1" opt="not"/>
2244    <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/>
2245  </ins>
2246
2247  <ins name="RSHIFT_XOR.v2i16" unit="fma">
2248    <src start="0" mask="0xfb"/>
2249    <src start="3" mask="0xfb"/>
2250    <src start="6"/>
2251    <mod name="lanes2" size="3" default="b02">
2252      <opt>b00</opt>
2253      <opt>b11</opt>
2254      <opt>b22</opt>
2255      <opt>b33</opt>
2256      <opt>b01</opt>
2257      <opt>b23</opt>
2258      <opt>b02</opt>
2259    </mod>
2260    <mod name="not_result" start="13" size="1" opt="not"/>
2261    <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/>
2262    <encoding mask="0x7fd800" exact="0x320800">
2263      <or>
2264        <eq left="lanes2" right="#b00"/>
2265        <eq left="lanes2" right="#b11"/>
2266        <eq left="lanes2" right="#b22"/>
2267        <eq left="lanes2" right="#b33"/>
2268      </or>
2269      <derived start="9" size="2">
2270        <eq left="lanes2" right="#b00"/>
2271        <eq left="lanes2" right="#b11"/>
2272        <eq left="lanes2" right="#b22"/>
2273        <eq left="lanes2" right="#b33"/>
2274      </derived>
2275    </encoding>
2276    <encoding mask="0x7fd800" exact="0x321800">
2277      <or>
2278        <eq left="lanes2" right="#b01"/>
2279        <eq left="lanes2" right="#b23"/>
2280        <eq left="lanes2" right="#b02"/>
2281      </or>
2282      <derived start="9" size="2">
2283        <reserved/>
2284        <eq left="lanes2" right="#b01"/>
2285        <eq left="lanes2" right="#b23"/>
2286        <eq left="lanes2" right="#b02"/>
2287      </derived>
2288    </encoding>
2289  </ins>
2290
2291  <ins name="RSHIFT_XOR.v4i8" unit="fma">
2292    <src start="0" mask="0xfb"/>
2293    <src start="3" mask="0xfb"/>
2294    <src start="6"/>
2295    <mod name="lanes2" size="3" default="b0123">
2296      <opt>b0123</opt>
2297      <opt>b0000</opt>
2298      <opt>b1111</opt>
2299      <opt>b2222</opt>
2300      <opt>b3333</opt>
2301    </mod>
2302    <mod name="not_result" start="13" size="1" opt="not"/>
2303    <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/>
2304    <encoding mask="0x7fd800" exact="0x320000">
2305      <neq left="lanes2" right="#b0123"/>
2306      <derived start="9" size="2">
2307        <eq left="lanes2" right="#b0000"/>
2308        <eq left="lanes2" right="#b1111"/>
2309        <eq left="lanes2" right="#b2222"/>
2310        <eq left="lanes2" right="#b3333"/>
2311      </derived>
2312    </encoding>
2313    <encoding mask="0x7fde00" exact="0x321800">
2314      <eq left="lanes2" right="#b0123"/>
2315    </encoding>
2316  </ins>
2317
2318  <ins name="S16_TO_S32" mask="0x7fffe8" exact="0x700cc0" unit="fma">
2319    <src start="0" mask="0xfb"/>
2320    <mod name="lane0" start="4" size="1" default="h0">
2321      <opt>h0</opt>
2322      <opt>h1</opt>
2323    </mod>
2324  </ins>
2325
2326  <ins name="S8_TO_S32" mask="0x7fffc8" exact="0x700b40" unit="fma">
2327    <src start="0" mask="0xfb"/>
2328    <mod name="lane0" start="4" size="2" default="b0">
2329      <opt>b0</opt>
2330      <opt>b1</opt>
2331      <opt>b2</opt>
2332      <opt>b3</opt>
2333    </mod>
2334  </ins>
2335
2336  <ins name="SEG_ADD" mask="0x7fff40" exact="0x701500" unit="fma">
2337    <src start="0" mask="0xfb"/>
2338    <mod name="seg" start="3" size="3">
2339      <reserved/>
2340      <reserved/>
2341      <opt>wls</opt>
2342      <reserved/>
2343      <reserved/>
2344      <reserved/>
2345      <reserved/>
2346      <opt>tl</opt>
2347    </mod>
2348    <mod name="preserve_null" start="7" size="1" opt="preserve_null"/>
2349  </ins>
2350
2351  <ins name="SEG_SUB" mask="0x7fff40" exact="0x701540" unused="true" unit="fma">
2352    <src start="0" mask="0xfb"/>
2353    <mod name="seg" start="3" size="3">
2354      <reserved/>
2355      <reserved/>
2356      <opt>wls</opt>
2357      <reserved/>
2358      <reserved/>
2359      <reserved/>
2360      <reserved/>
2361      <opt>tl</opt>
2362    </mod>
2363    <mod name="preserve_null" start="7" size="1" opt="preserve_null"/>
2364  </ins>
2365
2366  <ins name="SHADDXL.i64" mask="0x7ffe00" exact="0x70e600" unit="fma">
2367    <src start="0" mask="0xfb"/>
2368    <src start="3" mask="0xfb"/>
2369    <immediate name="shift" start="6" size="3"/>
2370  </ins>
2371
2372  <ins name="SHADDXL.s32" mask="0x7ff800" exact="0x70e800" unit="fma">
2373    <src start="0" mask="0xfb"/>
2374    <src start="3" mask="0xfb"/>
2375    <immediate name="shift" start="6" size="3"/>
2376    <mod name="lane1" start="9" size="2">
2377      <opt>h0</opt>
2378      <opt>h1</opt>
2379      <opt>none</opt>
2380    </mod>
2381  </ins>
2382
2383  <ins name="SHADDXL.u32" mask="0x7ff800" exact="0x70e000" unit="fma">
2384    <src start="0" mask="0xfb"/>
2385    <src start="3" mask="0xfb"/>
2386    <immediate name="shift" start="6" size="3"/>
2387    <mod name="lane1" start="9" size="2">
2388      <opt>h0</opt>
2389      <opt>h1</opt>
2390      <opt>none</opt>
2391    </mod>
2392  </ins>
2393
2394  <ins name="U16_TO_U32" mask="0x7fffe8" exact="0x700cc8" unit="fma">
2395    <src start="0" mask="0xfb"/>
2396    <mod name="lane0" start="4" size="1" default="h0">
2397      <opt>h0</opt>
2398      <opt>h1</opt>
2399    </mod>
2400  </ins>
2401
2402  <ins name="U8_TO_U32" mask="0x7fffc8" exact="0x700b48" unit="fma">
2403    <src start="0" mask="0xfb"/>
2404    <mod name="lane0" start="4" size="2" default="b0">
2405      <opt>b0</opt>
2406      <opt>b1</opt>
2407      <opt>b2</opt>
2408      <opt>b3</opt>
2409    </mod>
2410  </ins>
2411
2412  <ins name="V2F32_TO_V2F16" mask="0x7fe000" exact="0x6e8000" unit="fma">
2413    <src start="0" mask="0xfb"/>
2414    <src start="3" mask="0xfb"/>
2415    <mod name="abs0" size="1" opt="abs"/>
2416    <mod name="abs1" size="1" opt="abs"/>
2417    <mod name="neg0" size="1" opt="neg"/>
2418    <mod name="neg1" size="1" opt="neg"/>
2419    <mod name="clamp" start="8" size="2">
2420      <opt>none</opt>
2421      <opt>clamp_0_inf</opt>
2422      <opt>clamp_m1_1</opt>
2423      <opt>clamp_0_1</opt>
2424    </mod>
2425    <mod name="round" start="10" size="3">
2426      <opt>none</opt>
2427      <opt>rtp</opt>
2428      <opt>rtn</opt>
2429      <opt>rtz</opt>
2430      <opt>rtna</opt>
2431    </mod>
2432    <mod name="ftz" start="9" size="1" opt="ftz" pseudo="true"/>
2433    <derived start="6" size="1">
2434      <and>
2435        <eq left="abs0" right="#none"/>
2436        <eq left="abs1" right="#none"/>
2437      </and>
2438      <and>
2439        <eq left="abs0" right="#abs"/>
2440        <eq left="abs1" right="#abs"/>
2441      </and>
2442    </derived>
2443    <derived start="7" size="1">
2444      <and>
2445        <eq left="neg0" right="#none"/>
2446        <eq left="neg1" right="#none"/>
2447      </and>
2448      <and>
2449        <eq left="neg0" right="#neg"/>
2450        <eq left="neg1" right="#neg"/>
2451      </and>
2452    </derived>
2453  </ins>
2454
2455  <ins name="VN_ASST1.f16" mask="0x7ff000" exact="0x6eb000" unit="fma">
2456    <src start="0" mask="0xfb"/>
2457    <src start="3" mask="0xfb"/>
2458    <src start="6"/>
2459    <mod name="h" start="9" size="1" opt="h"/>
2460    <mod name="l" start="10" size="1" opt="l"/>
2461    <mod name="neg2" start="11" size="1" opt="neg"/>
2462  </ins>
2463
2464  <ins name="VN_ASST1.f32" mask="0x7fe000" exact="0x27c000" unit="fma">
2465    <src start="0" mask="0xfb"/>
2466    <src start="3" mask="0xfb"/>
2467    <src start="6"/>
2468    <src start="9"/>
2469    <mod name="neg2" start="12" size="1" opt="neg"/>
2470  </ins>
2471
2472  <ins name="ACMPSTORE.i32" staging="r=2" mask="0xffdc0" exact="0x648c0" message="atomic" dests="0" unit="add">
2473    <src start="0"/>
2474    <src start="3"/>
2475    <mod name="seg" start="9" size="1" opt="wls"/>
2476  </ins>
2477
2478  <ins name="ACMPSTORE.i64" staging="r=4" mask="0xffdc0" exact="0x64900" message="atomic" dests="0" unit="add">
2479    <src start="0"/>
2480    <src start="3"/>
2481    <mod name="seg" start="9" size="1" opt="wls"/>
2482  </ins>
2483
2484  <ins name="ACMPXCHG.i32" staging="rw=2" mask="0xffdc0" exact="0x644c0" message="atomic" unit="add">
2485    <src start="0"/>
2486    <src start="3"/>
2487    <mod name="seg" start="9" size="1" opt="wls"/>
2488  </ins>
2489
2490  <ins name="ACMPXCHG.i64" staging="rw=4" mask="0xffdc0" exact="0x64500" message="atomic" unit="add">
2491    <src start="0"/>
2492    <src start="3"/>
2493    <mod name="seg" start="9" size="1" opt="wls"/>
2494  </ins>
2495
2496  <ins name="ATEST" staging="w=1" mask="0xfff00" exact="0xc8f00" message="atest" table="true" unit="add">
2497    <src start="0" mask="0xf7"/>
2498    <src start="3" mask="0xf7"/>
2499    <!-- ATEST parameter datum. Implicitly encoded into the tuple on Bifrost.
2500         Real source on Valhall. -->
2501    <src start="6" pseudo="true"/>
2502    <mod name="widen1" start="6" size="2">
2503      <reserved/>
2504      <opt>none</opt>
2505      <opt>h0</opt>
2506      <opt>h1</opt>
2507    </mod>
2508  </ins>
2509
2510  <ins name="ATOM_CX" staging="rw=sr_count" mask="0xffe00" exact="0xd7400" message="atomic" unit="add">
2511    <src start="0"/>
2512    <src start="3"/>
2513    <src start="6"/>
2514    <!-- not actually encoded, but used for IR -->
2515    <immediate name="sr_count" size="4" pseudo="true"/>
2516  </ins>
2517
2518  <ins name="AXCHG.i32" staging="rw=1" mask="0xffdc0" exact="0x640c0" message="atomic" unit="add">
2519    <src start="0"/>
2520    <src start="3"/>
2521    <mod name="seg" start="9" size="1" opt="wls"/>
2522  </ins>
2523
2524  <ins name="AXCHG.i64" staging="rw=2" mask="0xffdc0" exact="0x64100" message="atomic" unit="add">
2525    <src start="0"/>
2526    <src start="3"/>
2527    <mod name="seg" start="9" size="1" opt="wls"/>
2528  </ins>
2529
2530  <ins name="BARRIER" mask="0xfffff" exact="0xd7874" message="barrier" last="true" dests="0" unit="add"/>
2531
2532  <ins name="BLEND" staging="r=sr_count" mask="0xffe00" exact="0xca800" message="blend" last="true" unit="add">
2533    <src start="0"/>
2534    <src start="3" mask="0xf7"/>
2535    <src start="6" mask="0xf7"/>
2536    <!-- pseudo source for a dual source blend input -->
2537    <src start="9" pseudo="true"/>
2538    <!-- not actually encoded, but used for IR -->
2539    <immediate name="sr_count" size="4" pseudo="true"/>
2540    <immediate name="sr_count_2" size="4" pseudo="true"/>
2541    <mod name="register_format" size="4" pseudo="true">
2542      <opt>f16</opt>
2543      <opt>f32</opt>
2544      <opt>s32</opt>
2545      <opt>u32</opt>
2546      <opt>s16</opt>
2547      <opt>u16</opt>
2548      <opt>f64</opt>
2549      <opt>i64</opt>
2550      <opt>auto</opt>
2551    </mod>
2552  </ins>
2553
2554  <ins name="BRANCH.f16" mask="0xf8000" exact="0x68000" last="true" dests="0" unit="add">
2555    <src start="0"/>
2556    <src start="3"/>
2557    <src start="6" mask="0xf7"/>
2558    <mod name="widen0" size="2">
2559      <opt>none</opt>
2560      <opt>h0</opt>
2561      <opt>h1</opt>
2562    </mod>
2563    <mod name="widen1" size="2">
2564      <opt>none</opt>
2565      <opt>h0</opt>
2566      <opt>h1</opt>
2567    </mod>
2568    <mod name="cmpf" size="3">
2569      <opt>eq</opt>
2570      <opt>gt</opt>
2571      <opt>ge</opt>
2572      <opt>ne</opt>
2573      <opt>lt</opt>
2574      <opt>le</opt>
2575    </mod>
2576    <derived start="12" size="3">
2577      <reserved/>
2578      <and>
2579        <eq left="widen0" right="#h0"/>
2580        <eq left="widen1" right="#h0"/>
2581      </and>
2582      <and>
2583        <eq left="widen0" right="#h1"/>
2584        <eq left="widen1" right="#h1"/>
2585      </and>
2586      <and>
2587        <eq left="widen0" right="#h1"/>
2588        <eq left="widen1" right="#h0"/>
2589        <or>
2590          <eq left="cmpf" right="#ne"/>
2591          <eq left="cmpf" right="#ge"/>
2592          <eq left="cmpf" right="#le"/>
2593        </or>
2594      </and>
2595      <and>
2596        <eq left="widen0" right="#h1"/>
2597        <eq left="widen1" right="#h0"/>
2598        <or>
2599          <eq left="cmpf" right="#eq"/>
2600          <eq left="cmpf" right="#gt"/>
2601          <eq left="cmpf" right="#lt"/>
2602        </or>
2603      </and>
2604      <reserved/>
2605      <reserved/>
2606      <reserved/>
2607    </derived>
2608    <derived start="9" size="3">
2609      <reserved/>
2610      <reserved/>
2611      <reserved/>
2612      <reserved/>
2613      <and alias="true">
2614        <eq left="widen0" right="widen1"/>
2615        <eq left="ordering" right="#eq"/>
2616        <or>
2617          <eq left="cmpf" right="#gt"/>
2618          <eq left="cmpf" right="#lt"/>
2619        </or>
2620      </and>
2621      <or>
2622        <and>
2623          <eq left="widen0" right="#h1"/>
2624          <eq left="widen1" right="#h0"/>
2625          <or>
2626            <eq left="cmpf" right="#eq"/>
2627            <eq left="cmpf" right="#ne"/>
2628          </or>
2629        </and>
2630        <and>
2631          <eq left="widen0" right="widen1"/>
2632          <eq left="ordering" right="#lt"/>
2633          <eq left="cmpf" right="#eq"/>
2634        </and>
2635        <and>
2636          <eq left="widen0" right="widen1"/>
2637          <neq left="ordering" right="#lt"/>
2638          <eq left="cmpf" right="#ne"/>
2639        </and>
2640      </or>
2641      <or>
2642        <and>
2643          <eq left="widen0" right="#h1"/>
2644          <eq left="widen1" right="#h0"/>
2645          <or>
2646            <eq left="cmpf" right="#gt"/>
2647            <eq left="cmpf" right="#ge"/>
2648          </or>
2649        </and>
2650        <and>
2651          <eq left="widen0" right="widen1"/>
2652          <eq left="ordering" right="#lt"/>
2653          <eq left="cmpf" right="#gt"/>
2654        </and>
2655        <and>
2656          <eq left="widen0" right="widen1"/>
2657          <neq left="ordering" right="#lt"/>
2658          <eq left="cmpf" right="#ge"/>
2659        </and>
2660      </or>
2661      <or>
2662        <and>
2663          <eq left="widen0" right="#h1"/>
2664          <eq left="widen1" right="#h0"/>
2665          <or>
2666            <eq left="cmpf" right="#lt"/>
2667            <eq left="cmpf" right="#le"/>
2668          </or>
2669        </and>
2670        <and>
2671          <eq left="widen0" right="widen1"/>
2672          <eq left="ordering" right="#lt"/>
2673          <eq left="cmpf" right="#lt"/>
2674        </and>
2675        <and>
2676          <eq left="widen0" right="widen1"/>
2677          <neq left="ordering" right="#lt"/>
2678          <eq left="cmpf" right="#le"/>
2679        </and>
2680        <and alias="true">
2681          <eq left="widen0" right="widen1"/>
2682          <eq left="ordering" right="#eq"/>
2683          <eq left="cmpf" right="#eq"/>
2684        </and>
2685      </or>
2686    </derived>
2687    <swap left="0" right="1">
2688      <or>
2689        <and>
2690          <eq left="widen0" right="#h0"/>
2691          <eq left="widen1" right="#h1"/>
2692        </and>
2693        <and>
2694          <eq left="widen0" right="widen1"/>
2695          <eq left="ordering" right="#gt"/>
2696          <or>
2697            <eq left="cmpf" right="#eq"/>
2698            <eq left="cmpf" right="#gt"/>
2699            <eq left="cmpf" right="#lt"/>
2700          </or>
2701        </and>
2702        <and>
2703          <eq left="widen0" right="widen1"/>
2704          <eq left="ordering" right="#lt"/>
2705          <or>
2706            <eq left="cmpf" right="#ne"/>
2707            <eq left="cmpf" right="#ge"/>
2708            <eq left="cmpf" right="#le"/>
2709          </or>
2710        </and>
2711      </or>
2712      <rewrite name="cmpf">
2713        <map from="lt" to="gt"/>
2714        <map from="le" to="ge"/>
2715        <map from="gt" to="lt"/>
2716        <map from="ge" to="le"/>
2717      </rewrite>
2718    </swap>
2719  </ins>
2720
2721  <ins name="BRANCH.f32" mask="0xf8000" exact="0x68000" last="true" dests="0" unit="add">
2722    <src start="0"/>
2723    <src start="3"/>
2724    <src start="6" mask="0xf7"/>
2725    <mod name="widen0" size="2">
2726      <opt>none</opt>
2727      <opt>h0</opt>
2728      <opt>h1</opt>
2729    </mod>
2730    <mod name="widen1" size="2">
2731      <opt>none</opt>
2732      <opt>h0</opt>
2733      <opt>h1</opt>
2734    </mod>
2735    <mod name="cmpf" size="3">
2736      <opt>eq</opt>
2737      <opt>gt</opt>
2738      <opt>ge</opt>
2739      <opt>ne</opt>
2740      <opt>lt</opt>
2741      <opt>le</opt>
2742    </mod>
2743    <derived start="12" size="3">
2744      <and>
2745        <eq left="widen0" right="#none"/>
2746        <eq left="widen1" right="#none"/>
2747      </and>
2748      <reserved/>
2749      <reserved/>
2750      <reserved/>
2751      <reserved/>
2752      <and>
2753        <eq left="widen0" right="#none"/>
2754        <eq left="widen1" right="#h0"/>
2755      </and>
2756      <and>
2757        <eq left="widen0" right="#none"/>
2758        <eq left="widen1" right="#h1"/>
2759      </and>
2760      <reserved/>
2761    </derived>
2762    <derived start="9" size="3">
2763      <reserved/>
2764      <and>
2765        <eq left="widen0" right="#none"/>
2766        <neq left="widen1" right="#none"/>
2767        <eq left="cmpf" right="#ne"/>
2768      </and>
2769      <and>
2770        <eq left="widen0" right="#none"/>
2771        <neq left="widen1" right="#none"/>
2772        <eq left="cmpf" right="#ge"/>
2773      </and>
2774      <and>
2775        <eq left="widen0" right="#none"/>
2776        <neq left="widen1" right="#none"/>
2777        <eq left="cmpf" right="#le"/>
2778      </and>
2779      <and alias="true">
2780        <eq left="widen0" right="#none"/>
2781        <eq left="widen1" right="#none"/>
2782        <eq left="ordering" right="#eq"/>
2783        <or>
2784          <eq left="cmpf" right="#gt"/>
2785          <eq left="cmpf" right="#lt"/>
2786        </or>
2787      </and>
2788      <or>
2789        <and>
2790          <eq left="widen0" right="#none"/>
2791          <neq left="widen1" right="#none"/>
2792          <eq left="cmpf" right="#eq"/>
2793        </and>
2794        <and>
2795          <eq left="widen0" right="#none"/>
2796          <eq left="widen1" right="#none"/>
2797          <eq left="ordering" right="#lt"/>
2798          <eq left="cmpf" right="#eq"/>
2799        </and>
2800        <and>
2801          <eq left="widen0" right="#none"/>
2802          <eq left="widen1" right="#none"/>
2803          <neq left="ordering" right="#lt"/>
2804          <eq left="cmpf" right="#ne"/>
2805        </and>
2806      </or>
2807      <or>
2808        <and>
2809          <eq left="widen0" right="#none"/>
2810          <neq left="widen1" right="#none"/>
2811          <eq left="cmpf" right="#gt"/>
2812        </and>
2813        <and>
2814          <eq left="widen0" right="#none"/>
2815          <eq left="widen1" right="#none"/>
2816          <eq left="ordering" right="#lt"/>
2817          <eq left="cmpf" right="#gt"/>
2818        </and>
2819        <and>
2820          <eq left="widen0" right="#none"/>
2821          <eq left="widen1" right="#none"/>
2822          <neq left="ordering" right="#lt"/>
2823          <eq left="cmpf" right="#ge"/>
2824        </and>
2825      </or>
2826      <or>
2827        <and>
2828          <eq left="widen0" right="#none"/>
2829          <neq left="widen1" right="#none"/>
2830          <eq left="cmpf" right="#lt"/>
2831        </and>
2832        <and>
2833          <eq left="widen0" right="#none"/>
2834          <eq left="widen1" right="#none"/>
2835          <eq left="ordering" right="#lt"/>
2836          <eq left="cmpf" right="#lt"/>
2837        </and>
2838        <and>
2839          <eq left="widen0" right="#none"/>
2840          <eq left="widen1" right="#none"/>
2841          <neq left="ordering" right="#lt"/>
2842          <eq left="cmpf" right="#le"/>
2843        </and>
2844        <and alias="true">
2845          <eq left="widen0" right="#none"/>
2846          <eq left="widen1" right="#none"/>
2847          <eq left="ordering" right="#eq"/>
2848          <eq left="cmpf" right="#eq"/>
2849        </and>
2850      </or>
2851    </derived>
2852    <swap left="0" right="1">
2853      <or>
2854        <and>
2855          <neq left="widen0" right="#none"/>
2856          <eq left="widen1" right="#none"/>
2857        </and>
2858        <and>
2859          <eq left="widen0" right="#none"/>
2860          <eq left="widen1" right="#none"/>
2861          <eq left="ordering" right="#gt"/>
2862          <or>
2863            <eq left="cmpf" right="#eq"/>
2864            <eq left="cmpf" right="#gt"/>
2865            <eq left="cmpf" right="#lt"/>
2866          </or>
2867        </and>
2868        <and>
2869          <eq left="widen0" right="#none"/>
2870          <eq left="widen1" right="#none"/>
2871          <eq left="ordering" right="#lt"/>
2872          <or>
2873            <eq left="cmpf" right="#ne"/>
2874            <eq left="cmpf" right="#ge"/>
2875            <eq left="cmpf" right="#le"/>
2876          </or>
2877        </and>
2878      </or>
2879      <rewrite name="cmpf">
2880        <map from="lt" to="gt"/>
2881        <map from="le" to="ge"/>
2882        <map from="gt" to="lt"/>
2883        <map from="ge" to="le"/>
2884      </rewrite>
2885    </swap>
2886  </ins>
2887
2888  <ins name="BRANCH.i16" mask="0xf8000" exact="0x68000" last="true" dests="0" unit="add">
2889    <src start="0"/>
2890    <src start="3"/>
2891    <src start="6" mask="0xf7"/>
2892    <mod name="widen0" size="2">
2893      <opt>none</opt>
2894      <opt>h0</opt>
2895      <opt>h1</opt>
2896    </mod>
2897    <mod name="widen1" size="2">
2898      <opt>none</opt>
2899      <opt>h0</opt>
2900      <opt>h1</opt>
2901    </mod>
2902    <mod name="cmpf" size="1">
2903      <opt>eq</opt>
2904      <opt>ne</opt>
2905    </mod>
2906    <derived start="12" size="3">
2907      <reserved/>
2908      <and>
2909        <eq left="widen0" right="#h0"/>
2910        <eq left="widen1" right="#h0"/>
2911      </and>
2912      <and>
2913        <eq left="widen0" right="#h1"/>
2914        <eq left="widen1" right="#h1"/>
2915      </and>
2916      <and>
2917        <eq left="widen0" right="#h1"/>
2918        <eq left="widen1" right="#h0"/>
2919        <eq left="cmpf" right="#ne"/>
2920      </and>
2921      <and>
2922        <eq left="widen0" right="#h1"/>
2923        <eq left="widen1" right="#h0"/>
2924        <eq left="cmpf" right="#eq"/>
2925      </and>
2926      <reserved/>
2927      <reserved/>
2928      <reserved/>
2929    </derived>
2930    <derived start="9" size="3">
2931      <reserved/>
2932      <and alias="true">
2933        <eq left="widen0" right="widen1"/>
2934        <eq left="ordering" right="#eq"/>
2935        <eq left="cmpf" right="#eq"/>
2936      </and>
2937      <reserved/>
2938      <reserved/>
2939      <or>
2940        <and>
2941          <eq left="widen0" right="#h1"/>
2942          <eq left="widen1" right="#h0"/>
2943        </and>
2944        <and>
2945          <eq left="widen0" right="widen1"/>
2946          <eq left="ordering" right="#lt"/>
2947          <eq left="cmpf" right="#eq"/>
2948        </and>
2949        <and>
2950          <eq left="widen0" right="widen1"/>
2951          <neq left="ordering" right="#lt"/>
2952          <eq left="cmpf" right="#ne"/>
2953        </and>
2954      </or>
2955      <reserved/>
2956      <reserved/>
2957      <reserved/>
2958    </derived>
2959    <swap left="0" right="1">
2960      <or>
2961        <and>
2962          <eq left="widen0" right="#h0"/>
2963          <eq left="widen1" right="#h1"/>
2964        </and>
2965        <and>
2966          <eq left="widen0" right="widen1"/>
2967          <eq left="ordering" right="#gt"/>
2968          <eq left="cmpf" right="#eq"/>
2969        </and>
2970        <and>
2971          <eq left="widen0" right="widen1"/>
2972          <eq left="ordering" right="#lt"/>
2973          <eq left="cmpf" right="#ne"/>
2974        </and>
2975      </or>
2976    </swap>
2977  </ins>
2978
2979  <ins name="BRANCH.i32" mask="0xf8000" exact="0x68000" last="true" dests="0" unit="add">
2980    <src start="0"/>
2981    <src start="3"/>
2982    <src start="6" mask="0xf7"/>
2983    <mod name="widen0" size="2">
2984      <opt>none</opt>
2985      <opt>h0</opt>
2986      <opt>h1</opt>
2987    </mod>
2988    <mod name="widen1" size="2">
2989      <opt>none</opt>
2990      <opt>h0</opt>
2991      <opt>h1</opt>
2992    </mod>
2993    <mod name="cmpf" size="1">
2994      <opt>eq</opt>
2995      <opt>ne</opt>
2996    </mod>
2997    <derived start="12" size="3">
2998      <and>
2999        <eq left="widen0" right="#none"/>
3000        <eq left="widen1" right="#none"/>
3001      </and>
3002      <reserved/>
3003      <reserved/>
3004      <reserved/>
3005      <reserved/>
3006      <reserved/>
3007      <reserved/>
3008      <reserved/>
3009    </derived>
3010    <derived start="9" size="3">
3011      <reserved/>
3012      <and alias="true">
3013        <eq left="ordering" right="#eq"/>
3014        <eq left="cmpf" right="#eq"/>
3015      </and>
3016      <reserved/>
3017      <reserved/>
3018      <or>
3019        <and>
3020          <eq left="ordering" right="#lt"/>
3021          <eq left="cmpf" right="#eq"/>
3022        </and>
3023        <and>
3024          <neq left="ordering" right="#lt"/>
3025          <eq left="cmpf" right="#ne"/>
3026        </and>
3027      </or>
3028      <reserved/>
3029      <reserved/>
3030      <reserved/>
3031    </derived>
3032    <swap left="0" right="1">
3033      <or>
3034        <and>
3035          <eq left="ordering" right="#gt"/>
3036          <eq left="cmpf" right="#eq"/>
3037        </and>
3038        <and>
3039          <eq left="ordering" right="#lt"/>
3040          <eq left="cmpf" right="#ne"/>
3041        </and>
3042      </or>
3043    </swap>
3044  </ins>
3045
3046  <ins name="BRANCH.s16" mask="0xf8000" exact="0x68000" last="true" dests="0" unit="add">
3047    <src start="0"/>
3048    <src start="3"/>
3049    <src start="6" mask="0xf7"/>
3050    <mod name="widen0" size="2">
3051      <opt>none</opt>
3052      <opt>h0</opt>
3053      <opt>h1</opt>
3054    </mod>
3055    <mod name="widen1" size="2">
3056      <opt>none</opt>
3057      <opt>h0</opt>
3058      <opt>h1</opt>
3059    </mod>
3060    <mod name="cmpf" size="2">
3061      <opt>gt</opt>
3062      <opt>ge</opt>
3063      <opt>lt</opt>
3064      <opt>le</opt>
3065    </mod>
3066    <derived start="12" size="3">
3067      <reserved/>
3068      <and>
3069        <eq left="widen0" right="#h0"/>
3070        <eq left="widen1" right="#h0"/>
3071      </and>
3072      <and>
3073        <eq left="widen0" right="#h1"/>
3074        <eq left="widen1" right="#h1"/>
3075      </and>
3076      <reserved/>
3077      <and>
3078        <eq left="widen0" right="#h1"/>
3079        <eq left="widen1" right="#h0"/>
3080      </and>
3081      <reserved/>
3082      <reserved/>
3083      <reserved/>
3084    </derived>
3085    <derived start="9" size="3">
3086      <or>
3087        <and>
3088          <eq left="widen0" right="#h1"/>
3089          <eq left="widen1" right="#h0"/>
3090          <eq left="cmpf" right="#lt"/>
3091        </and>
3092        <and>
3093          <eq left="widen0" right="widen1"/>
3094          <eq left="ordering" right="#lt"/>
3095          <eq left="cmpf" right="#lt"/>
3096        </and>
3097      </or>
3098      <or>
3099        <and>
3100          <eq left="widen0" right="#h1"/>
3101          <eq left="widen1" right="#h0"/>
3102          <eq left="cmpf" right="#le"/>
3103        </and>
3104        <and>
3105          <eq left="widen0" right="widen1"/>
3106          <eq left="ordering" right="#lt"/>
3107          <eq left="cmpf" right="#le"/>
3108        </and>
3109        <and alias="true">
3110          <eq left="widen0" right="widen1"/>
3111          <eq left="ordering" right="#eq"/>
3112          <or>
3113            <eq left="cmpf" right="#le"/>
3114            <eq left="cmpf" right="#ge"/>
3115          </or>
3116        </and>
3117      </or>
3118      <or>
3119        <and>
3120          <eq left="widen0" right="#h1"/>
3121          <eq left="widen1" right="#h0"/>
3122          <eq left="cmpf" right="#ge"/>
3123        </and>
3124        <and>
3125          <eq left="widen0" right="widen1"/>
3126          <eq left="ordering" right="#lt"/>
3127          <eq left="cmpf" right="#ge"/>
3128        </and>
3129      </or>
3130      <or>
3131        <and>
3132          <eq left="widen0" right="#h1"/>
3133          <eq left="widen1" right="#h0"/>
3134          <eq left="cmpf" right="#gt"/>
3135        </and>
3136        <and>
3137          <eq left="widen0" right="widen1"/>
3138          <eq left="ordering" right="#lt"/>
3139          <eq left="cmpf" right="#gt"/>
3140        </and>
3141      </or>
3142      <and alias="true">
3143        <eq left="widen0" right="widen1"/>
3144        <eq left="ordering" right="#eq"/>
3145        <or>
3146          <eq left="cmpf" right="#lt"/>
3147          <eq left="cmpf" right="#gt"/>
3148        </or>
3149      </and>
3150      <reserved/>
3151      <reserved/>
3152      <reserved/>
3153    </derived>
3154    <swap left="0" right="1">
3155      <or>
3156        <and>
3157          <eq left="widen0" right="#h0"/>
3158          <eq left="widen1" right="#h1"/>
3159        </and>
3160        <and>
3161          <eq left="widen0" right="widen1"/>
3162          <eq left="ordering" right="#gt"/>
3163        </and>
3164      </or>
3165      <rewrite name="cmpf">
3166        <map from="lt" to="gt"/>
3167        <map from="le" to="ge"/>
3168        <map from="gt" to="lt"/>
3169        <map from="ge" to="le"/>
3170      </rewrite>
3171    </swap>
3172  </ins>
3173
3174  <ins name="BRANCH.s32" mask="0xf8000" exact="0x68000" last="true" dests="0" unit="add">
3175    <src start="0"/>
3176    <src start="3"/>
3177    <src start="6" mask="0xf7"/>
3178    <mod name="widen0" size="2">
3179      <opt>none</opt>
3180      <opt>h0</opt>
3181      <opt>h1</opt>
3182    </mod>
3183    <mod name="widen1" size="2">
3184      <opt>none</opt>
3185      <opt>h0</opt>
3186      <opt>h1</opt>
3187    </mod>
3188    <mod name="cmpf" size="2">
3189      <opt>gt</opt>
3190      <opt>ge</opt>
3191      <opt>lt</opt>
3192      <opt>le</opt>
3193    </mod>
3194    <derived start="12" size="3">
3195      <and>
3196        <eq left="widen0" right="#none"/>
3197        <eq left="widen1" right="#none"/>
3198      </and>
3199      <reserved/>
3200      <reserved/>
3201      <reserved/>
3202      <reserved/>
3203      <reserved/>
3204      <reserved/>
3205      <reserved/>
3206    </derived>
3207    <derived start="9" size="3">
3208      <and>
3209        <eq left="ordering" right="#lt"/>
3210        <eq left="cmpf" right="#lt"/>
3211      </and>
3212      <or>
3213        <and>
3214          <eq left="ordering" right="#lt"/>
3215          <eq left="cmpf" right="#le"/>
3216        </and>
3217        <and alias="true">
3218          <eq left="ordering" right="#eq"/>
3219          <or>
3220            <eq left="cmpf" right="#le"/>
3221            <eq left="cmpf" right="#ge"/>
3222          </or>
3223        </and>
3224      </or>
3225      <and>
3226        <eq left="ordering" right="#lt"/>
3227        <eq left="cmpf" right="#ge"/>
3228      </and>
3229      <and>
3230        <eq left="ordering" right="#lt"/>
3231        <eq left="cmpf" right="#gt"/>
3232      </and>
3233      <and alias="true">
3234        <eq left="ordering" right="#eq"/>
3235        <or>
3236          <eq left="cmpf" right="#lt"/>
3237          <eq left="cmpf" right="#gt"/>
3238        </or>
3239      </and>
3240      <reserved/>
3241      <reserved/>
3242      <reserved/>
3243    </derived>
3244    <swap left="0" right="1">
3245      <eq left="ordering" right="#gt"/>
3246      <rewrite name="cmpf">
3247        <map from="lt" to="gt"/>
3248        <map from="le" to="ge"/>
3249        <map from="gt" to="lt"/>
3250        <map from="ge" to="le"/>
3251      </rewrite>
3252    </swap>
3253  </ins>
3254
3255  <ins name="BRANCH.u16" mask="0xf8000" exact="0x68000" last="true" dests="0" unit="add">
3256    <src start="0"/>
3257    <src start="3"/>
3258    <src start="6" mask="0xf7"/>
3259    <mod name="widen0" size="2">
3260      <opt>none</opt>
3261      <opt>h0</opt>
3262      <opt>h1</opt>
3263    </mod>
3264    <mod name="widen1" size="2">
3265      <opt>none</opt>
3266      <opt>h0</opt>
3267      <opt>h1</opt>
3268    </mod>
3269    <mod name="cmpf" size="2">
3270      <opt>gt</opt>
3271      <opt>ge</opt>
3272      <opt>lt</opt>
3273      <opt>le</opt>
3274    </mod>
3275    <derived start="12" size="3">
3276      <reserved/>
3277      <and>
3278        <eq left="widen0" right="#h0"/>
3279        <eq left="widen1" right="#h0"/>
3280      </and>
3281      <and>
3282        <eq left="widen0" right="#h1"/>
3283        <eq left="widen1" right="#h1"/>
3284      </and>
3285      <and>
3286        <eq left="widen0" right="#h1"/>
3287        <eq left="widen1" right="#h0"/>
3288      </and>
3289      <reserved/>
3290      <reserved/>
3291      <reserved/>
3292      <reserved/>
3293    </derived>
3294    <derived start="9" size="3">
3295      <or>
3296        <and>
3297          <eq left="widen0" right="#h1"/>
3298          <eq left="widen1" right="#h0"/>
3299          <eq left="cmpf" right="#lt"/>
3300        </and>
3301        <and>
3302          <eq left="widen0" right="widen1"/>
3303          <neq left="ordering" right="#lt"/>
3304          <eq left="cmpf" right="#lt"/>
3305        </and>
3306      </or>
3307      <or>
3308        <and>
3309          <eq left="widen0" right="#h1"/>
3310          <eq left="widen1" right="#h0"/>
3311          <eq left="cmpf" right="#le"/>
3312        </and>
3313        <and>
3314          <eq left="widen0" right="widen1"/>
3315          <neq left="ordering" right="#lt"/>
3316          <eq left="cmpf" right="#le"/>
3317        </and>
3318      </or>
3319      <or>
3320        <and>
3321          <eq left="widen0" right="#h1"/>
3322          <eq left="widen1" right="#h0"/>
3323          <eq left="cmpf" right="#ge"/>
3324        </and>
3325        <and>
3326          <eq left="widen0" right="widen1"/>
3327          <neq left="ordering" right="#lt"/>
3328          <eq left="cmpf" right="#ge"/>
3329        </and>
3330      </or>
3331      <or>
3332        <and>
3333          <eq left="widen0" right="#h1"/>
3334          <eq left="widen1" right="#h0"/>
3335          <eq left="cmpf" right="#gt"/>
3336        </and>
3337        <and>
3338          <eq left="widen0" right="widen1"/>
3339          <neq left="ordering" right="#lt"/>
3340          <eq left="cmpf" right="#gt"/>
3341        </and>
3342      </or>
3343      <reserved/>
3344      <reserved/>
3345      <reserved/>
3346      <reserved/>
3347    </derived>
3348    <swap left="0" right="1">
3349      <or>
3350        <and>
3351          <eq left="widen0" right="#h0"/>
3352          <eq left="widen1" right="#h1"/>
3353        </and>
3354        <and>
3355          <eq left="widen0" right="widen1"/>
3356          <eq left="ordering" right="#lt"/>
3357        </and>
3358      </or>
3359      <rewrite name="cmpf">
3360        <map from="lt" to="gt"/>
3361        <map from="le" to="ge"/>
3362        <map from="gt" to="lt"/>
3363        <map from="ge" to="le"/>
3364      </rewrite>
3365    </swap>
3366  </ins>
3367
3368  <ins name="BRANCH.u32" mask="0xf8000" exact="0x68000" last="true" dests="0" unit="add">
3369    <src start="0"/>
3370    <src start="3"/>
3371    <src start="6" mask="0xf7"/>
3372    <mod name="widen0" size="2">
3373      <opt>none</opt>
3374      <opt>h0</opt>
3375      <opt>h1</opt>
3376    </mod>
3377    <mod name="widen1" size="2">
3378      <opt>none</opt>
3379      <opt>h0</opt>
3380      <opt>h1</opt>
3381    </mod>
3382    <mod name="cmpf" size="2">
3383      <opt>gt</opt>
3384      <opt>ge</opt>
3385      <opt>lt</opt>
3386      <opt>le</opt>
3387    </mod>
3388    <derived start="12" size="3">
3389      <and>
3390        <eq left="widen0" right="#none"/>
3391        <eq left="widen1" right="#none"/>
3392      </and>
3393      <reserved/>
3394      <reserved/>
3395      <reserved/>
3396      <reserved/>
3397      <reserved/>
3398      <reserved/>
3399      <reserved/>
3400    </derived>
3401    <derived start="9" size="3">
3402      <and>
3403        <neq left="ordering" right="#lt"/>
3404        <eq left="cmpf" right="#lt"/>
3405      </and>
3406      <and>
3407        <neq left="ordering" right="#lt"/>
3408        <eq left="cmpf" right="#le"/>
3409      </and>
3410      <and>
3411        <neq left="ordering" right="#lt"/>
3412        <eq left="cmpf" right="#ge"/>
3413      </and>
3414      <and>
3415        <neq left="ordering" right="#lt"/>
3416        <eq left="cmpf" right="#gt"/>
3417      </and>
3418      <reserved/>
3419      <reserved/>
3420      <reserved/>
3421      <reserved/>
3422    </derived>
3423    <swap left="0" right="1">
3424      <eq left="ordering" right="#lt"/>
3425      <rewrite name="cmpf">
3426        <map from="lt" to="gt"/>
3427        <map from="le" to="ge"/>
3428        <map from="gt" to="lt"/>
3429        <map from="ge" to="le"/>
3430      </rewrite>
3431    </swap>
3432  </ins>
3433
3434  <ins name="BRANCHC.i16" mask="0xff830" exact="0x6f030" last="true" dests="0" unit="add">
3435    <src start="0"/>
3436    <src start="6" mask="0xf7"/>
3437    <mod name="combine" start="10" size="1">
3438      <opt>any</opt>
3439      <opt>all</opt>
3440    </mod>
3441    <mod name="lane0" size="1" default="h0">
3442      <opt>h0</opt>
3443      <opt>h1</opt>
3444    </mod>
3445    <derived start="9" size="1">
3446      <eq left="lane0" right="#h0"/>
3447      <eq left="lane0" right="#h1"/>
3448    </derived>
3449    <derived start="3" size="1">
3450      <eq left="lane0" right="#h1"/>
3451      <eq left="lane0" right="#h0"/>
3452    </derived>
3453  </ins>
3454
3455  <ins name="BRANCHC.i32" mask="0xffa38" exact="0x6f238" last="true" dests="0" unit="add">
3456    <src start="0"/>
3457    <src start="6" mask="0xf7"/>
3458    <mod name="combine" start="10" size="1">
3459      <opt>any</opt>
3460      <opt>all</opt>
3461    </mod>
3462  </ins>
3463
3464  <ins name="BRANCHZ.f16" mask="0xff000" exact="0x6f000" last="true" dests="0" unit="add">
3465    <src start="0"/>
3466    <src start="6" mask="0xf7"/>
3467    <mod name="widen0" size="2">
3468      <opt>none</opt>
3469      <opt>h0</opt>
3470      <opt>h1</opt>
3471    </mod>
3472    <mod name="cmpf" size="3">
3473      <opt>eq</opt>
3474      <opt>gt</opt>
3475      <opt>ge</opt>
3476      <opt>ne</opt>
3477      <opt>lt</opt>
3478      <opt>le</opt>
3479    </mod>
3480    <derived start="4" size="2">
3481      <reserved/>
3482      <eq left="widen0" right="#h1"/>
3483      <eq left="widen0" right="#h0"/>
3484      <reserved/>
3485    </derived>
3486    <derived start="3" size="1">
3487      <or>
3488        <eq left="cmpf" right="#ne"/>
3489        <eq left="cmpf" right="#ge"/>
3490        <eq left="cmpf" right="#le"/>
3491      </or>
3492      <or>
3493        <eq left="cmpf" right="#eq"/>
3494        <eq left="cmpf" right="#gt"/>
3495        <eq left="cmpf" right="#lt"/>
3496      </or>
3497    </derived>
3498    <derived start="9" size="3">
3499      <reserved/>
3500      <reserved/>
3501      <reserved/>
3502      <reserved/>
3503      <reserved/>
3504      <or>
3505        <eq left="cmpf" right="#ne"/>
3506        <eq left="cmpf" right="#eq"/>
3507      </or>
3508      <or>
3509        <eq left="cmpf" right="#ge"/>
3510        <eq left="cmpf" right="#gt"/>
3511      </or>
3512      <or>
3513        <eq left="cmpf" right="#le"/>
3514        <eq left="cmpf" right="#lt"/>
3515      </or>
3516    </derived>
3517  </ins>
3518
3519  <ins name="BRANCHZ.f32" mask="0xff030" exact="0x6f000" last="true" dests="0" unit="add">
3520    <src start="0"/>
3521    <src start="6" mask="0xf7"/>
3522    <mod name="cmpf" size="3">
3523      <opt>eq</opt>
3524      <opt>gt</opt>
3525      <opt>ge</opt>
3526      <opt>ne</opt>
3527      <opt>lt</opt>
3528      <opt>le</opt>
3529    </mod>
3530    <derived start="3" size="1">
3531      <or>
3532        <eq left="cmpf" right="#ne"/>
3533        <eq left="cmpf" right="#ge"/>
3534        <eq left="cmpf" right="#le"/>
3535      </or>
3536      <or>
3537        <eq left="cmpf" right="#eq"/>
3538        <eq left="cmpf" right="#gt"/>
3539        <eq left="cmpf" right="#lt"/>
3540      </or>
3541    </derived>
3542    <derived start="9" size="3">
3543      <reserved/>
3544      <reserved/>
3545      <reserved/>
3546      <reserved/>
3547      <reserved/>
3548      <or>
3549        <eq left="cmpf" right="#ne"/>
3550        <eq left="cmpf" right="#eq"/>
3551      </or>
3552      <or>
3553        <eq left="cmpf" right="#ge"/>
3554        <eq left="cmpf" right="#gt"/>
3555      </or>
3556      <or>
3557        <eq left="cmpf" right="#le"/>
3558        <eq left="cmpf" right="#lt"/>
3559      </or>
3560    </derived>
3561  </ins>
3562
3563  <ins name="BRANCHZ.i16" mask="0xffe00" exact="0x6f800" last="true" dests="0" unit="add">
3564    <src start="0"/>
3565    <src start="6" mask="0xf7"/>
3566    <mod name="widen0" size="2">
3567      <opt>none</opt>
3568      <opt>h0</opt>
3569      <opt>h1</opt>
3570    </mod>
3571    <mod name="cmpf" size="1">
3572      <opt>eq</opt>
3573      <opt>ne</opt>
3574    </mod>
3575    <derived start="4" size="2">
3576      <reserved/>
3577      <eq left="widen0" right="#h1"/>
3578      <eq left="widen0" right="#h0"/>
3579      <reserved/>
3580    </derived>
3581    <derived start="3" size="1">
3582      <eq left="cmpf" right="#ne"/>
3583      <eq left="cmpf" right="#eq"/>
3584    </derived>
3585  </ins>
3586
3587  <ins name="BRANCHZ.i32" mask="0xffe30" exact="0x6f800" last="true" dests="0" unit="add">
3588    <src start="0"/>
3589    <src start="6" mask="0xf7"/>
3590    <mod name="cmpf" size="1">
3591      <opt>eq</opt>
3592      <opt>ne</opt>
3593    </mod>
3594    <derived start="3" size="1">
3595      <eq left="cmpf" right="#ne"/>
3596      <eq left="cmpf" right="#eq"/>
3597    </derived>
3598  </ins>
3599
3600  <ins name="BRANCHZ.s16" mask="0xff008" exact="0x6f008" last="true" dests="0" unit="add">
3601    <src start="0"/>
3602    <src start="6" mask="0xf7"/>
3603    <mod name="widen0" size="2">
3604      <opt>none</opt>
3605      <opt>h0</opt>
3606      <opt>h1</opt>
3607    </mod>
3608    <mod name="cmpf" size="2">
3609      <opt>gt</opt>
3610      <opt>ge</opt>
3611      <opt>lt</opt>
3612      <opt>le</opt>
3613    </mod>
3614    <derived start="4" size="2">
3615      <reserved/>
3616      <eq left="widen0" right="#h1"/>
3617      <eq left="widen0" right="#h0"/>
3618      <reserved/>
3619    </derived>
3620    <derived start="9" size="3">
3621      <eq left="cmpf" right="#lt"/>
3622      <eq left="cmpf" right="#le"/>
3623      <eq left="cmpf" right="#ge"/>
3624      <eq left="cmpf" right="#gt"/>
3625      <reserved/>
3626      <reserved/>
3627      <reserved/>
3628      <reserved/>
3629    </derived>
3630  </ins>
3631
3632  <ins name="BRANCHZ.s32" mask="0xff038" exact="0x6f008" last="true" dests="0" unit="add">
3633    <src start="0"/>
3634    <src start="6" mask="0xf7"/>
3635    <mod name="cmpf" size="2">
3636      <opt>gt</opt>
3637      <opt>ge</opt>
3638      <opt>lt</opt>
3639      <opt>le</opt>
3640    </mod>
3641    <derived start="9" size="3">
3642      <eq left="cmpf" right="#lt"/>
3643      <eq left="cmpf" right="#le"/>
3644      <eq left="cmpf" right="#ge"/>
3645      <eq left="cmpf" right="#gt"/>
3646      <reserved/>
3647      <reserved/>
3648      <reserved/>
3649      <reserved/>
3650    </derived>
3651  </ins>
3652
3653  <ins name="BRANCHZ.u16" mask="0xff008" exact="0x6f000" last="true" dests="0" unit="add">
3654    <src start="0"/>
3655    <src start="6" mask="0xf7"/>
3656    <mod name="widen0" size="2">
3657      <opt>none</opt>
3658      <opt>h0</opt>
3659      <opt>h1</opt>
3660    </mod>
3661    <mod name="cmpf" size="2">
3662      <opt>gt</opt>
3663      <opt>ge</opt>
3664      <opt>lt</opt>
3665      <opt>le</opt>
3666    </mod>
3667    <derived start="4" size="2">
3668      <reserved/>
3669      <eq left="widen0" right="#h1"/>
3670      <eq left="widen0" right="#h0"/>
3671      <reserved/>
3672    </derived>
3673    <derived start="9" size="3">
3674      <eq left="cmpf" right="#lt"/>
3675      <eq left="cmpf" right="#le"/>
3676      <eq left="cmpf" right="#ge"/>
3677      <eq left="cmpf" right="#gt"/>
3678      <reserved/>
3679      <reserved/>
3680      <reserved/>
3681      <reserved/>
3682    </derived>
3683  </ins>
3684
3685  <ins name="BRANCHZ.u32" mask="0xff038" exact="0x6f000" last="true" dests="0" unit="add">
3686    <src start="0"/>
3687    <src start="6" mask="0xf7"/>
3688    <mod name="cmpf" size="2">
3689      <opt>gt</opt>
3690      <opt>ge</opt>
3691      <opt>lt</opt>
3692      <opt>le</opt>
3693    </mod>
3694    <derived start="9" size="3">
3695      <eq left="cmpf" right="#lt"/>
3696      <eq left="cmpf" right="#le"/>
3697      <eq left="cmpf" right="#ge"/>
3698      <eq left="cmpf" right="#gt"/>
3699      <reserved/>
3700      <reserved/>
3701      <reserved/>
3702      <reserved/>
3703    </derived>
3704  </ins>
3705
3706  <ins name="BRANCH_DIVERG" mask="0xffe3f" exact="0x6f83c" last="true" dests="0" unit="add">
3707    <src start="6" mask="0xf7"/>
3708  </ins>
3709
3710  <ins name="BRANCH_LOWBITS.f32" mask="0xffe38" exact="0x6fa38" last="true" dests="0" unit="add">
3711    <src start="0"/>
3712    <src start="6" mask="0xf7"/>
3713  </ins>
3714
3715  <ins name="BRANCH_NO_DIVERG" mask="0xffe3f" exact="0x6fa34" last="true" dests="0" unit="add">
3716    <src start="6" mask="0xf7"/>
3717  </ins>
3718
3719  <ins name="CLPER_OLD.i32" mask="0xfffc0" exact="0x3f0c0" unit="add">
3720    <src start="0" mask="0x7"/>
3721    <src start="3"/>
3722  </ins>
3723
3724  <ins name="CLPER.i32" mask="0xfc000" exact="0x7c000" unit="add">
3725    <src start="0" mask="0x7"/>
3726    <src start="3"/>
3727    <mod name="lane_op" start="6" size="2">
3728      <opt>none</opt>
3729      <opt>xor</opt>
3730      <opt>accumulate</opt>
3731      <opt>shift</opt>
3732    </mod>
3733    <mod name="subgroup" start="8" size="2">
3734      <opt>subgroup2</opt>
3735      <opt>subgroup4</opt>
3736      <opt>subgroup8</opt>
3737      <opt pseudo="true">subgroup16</opt> <!-- Only on Valhall -->
3738    </mod>
3739    <mod name="inactive_result" start="10" size="4">
3740      <opt>zero</opt>
3741      <opt>umax</opt>
3742      <opt>i1</opt>
3743      <opt>v2i1</opt>
3744      <opt>smin</opt>
3745      <opt>smax</opt>
3746      <opt>v2smin</opt>
3747      <opt>v2smax</opt>
3748      <opt>v4smin</opt>
3749      <opt>v4smax</opt>
3750      <opt>f1</opt>
3751      <opt>v2f1</opt>
3752      <opt>infn</opt>
3753      <opt>inf</opt>
3754      <opt>v2infn</opt>
3755      <opt>v2inf</opt>
3756    </mod>
3757  </ins>
3758
3759  <ins name="CUBEFACE2" mask="0xffff8" exact="0x3de58" unit="add">
3760    <src start="0"/>
3761  </ins>
3762
3763  <ins name="CUBE_SSEL" mask="0xffc00" exact="0x3e000" unit="add">
3764    <src start="0"/>
3765    <src start="3"/>
3766    <src start="6"/>
3767    <mod name="neg0" size="1" opt="neg"/>
3768    <mod name="neg1" size="1" opt="neg"/>
3769    <derived start="9" size="1">
3770      <and>
3771        <eq left="neg0" right="#none"/>
3772        <eq left="neg1" right="#none"/>
3773      </and>
3774      <and>
3775        <eq left="neg0" right="#neg"/>
3776        <eq left="neg1" right="#neg"/>
3777      </and>
3778    </derived>
3779  </ins>
3780
3781  <ins name="CUBE_TSEL" mask="0xffc00" exact="0x3e400" unit="add">
3782    <src start="0"/>
3783    <src start="3"/>
3784    <src start="6"/>
3785    <mod name="neg0" size="1" opt="neg"/>
3786    <mod name="neg1" size="1" opt="neg"/>
3787    <derived start="9" size="1">
3788      <and>
3789        <eq left="neg0" right="#none"/>
3790        <eq left="neg1" right="#none"/>
3791      </and>
3792      <and>
3793        <eq left="neg0" right="#neg"/>
3794        <eq left="neg1" right="#neg"/>
3795      </and>
3796    </derived>
3797  </ins>
3798
3799  <ins name="DISCARD.f32" mask="0xff800" exact="0xc8800" dests="0" unit="add">
3800    <src start="0"/>
3801    <src start="3"/>
3802    <mod name="cmpf" size="3">
3803      <opt>eq</opt>
3804      <opt>gt</opt>
3805      <opt>ge</opt>
3806      <opt>ne</opt>
3807      <opt>lt</opt>
3808      <opt>le</opt>
3809    </mod>
3810    <mod name="widen0" size="2">
3811      <opt>none</opt>
3812      <opt>h0</opt>
3813      <opt>h1</opt>
3814    </mod>
3815    <mod name="widen1" size="2">
3816      <opt>none</opt>
3817      <opt>h0</opt>
3818      <opt>h1</opt>
3819    </mod>
3820    <derived start="6" size="2">
3821      <eq left="cmpf" right="#eq"/>
3822      <eq left="cmpf" right="#ne"/>
3823      <eq left="cmpf" right="#lt"/>
3824      <eq left="cmpf" right="#le"/>
3825    </derived>
3826    <derived start="8" size="3">
3827      <and>
3828        <eq left="widen0" right="#h0"/>
3829        <eq left="widen1" right="#h0"/>
3830      </and>
3831      <and>
3832        <eq left="widen0" right="#h1"/>
3833        <eq left="widen1" right="#h0"/>
3834      </and>
3835      <and>
3836        <eq left="widen0" right="#h0"/>
3837        <eq left="widen1" right="#h1"/>
3838      </and>
3839      <and>
3840        <eq left="widen0" right="#h1"/>
3841        <eq left="widen1" right="#h1"/>
3842      </and>
3843      <and>
3844        <eq left="widen0" right="#none"/>
3845        <eq left="widen1" right="#none"/>
3846      </and>
3847      <reserved/>
3848      <reserved/>
3849      <reserved/>
3850    </derived>
3851    <swap left="0" right="1">
3852      <or>
3853        <eq left="cmpf" right="#gt"/>
3854        <eq left="cmpf" right="#ge"/>
3855      </or>
3856      <rewrite name="cmpf">
3857        <map from="gt" to="lt"/>
3858        <map from="ge" to="le"/>
3859      </rewrite>
3860    </swap>
3861  </ins>
3862
3863  <ins name="DOORBELL" mask="0xffff8" exact="0xd7860" unused="true" message="job_management" dests="0" unit="add">
3864    <src start="0"/>
3865  </ins>
3866
3867  <ins name="EUREKA" mask="0xffff8" exact="0xd7850" unused="true" message="job_management" dests="0" unit="add">
3868    <src start="0"/>
3869  </ins>
3870
3871  <ins name="F16_TO_F32" mask="0xffff0" exact="0x3cd10" unit="add">
3872    <src start="0"/>
3873    <mod name="lane0" start="3" size="1" default="h0">
3874      <opt>h0</opt>
3875      <opt>h1</opt>
3876    </mod>
3877    <mod name="ftz" start="9" size="1" opt="ftz" pseudo="true"/>
3878  </ins>
3879
3880  <ins name="F16_TO_S32" unit="add">
3881    <src start="0"/>
3882    <mod name="round" size="3">
3883      <opt>none</opt>
3884      <opt>rtp</opt>
3885      <opt>rtn</opt>
3886      <opt>rtz</opt>
3887      <opt>rtna</opt>
3888    </mod>
3889    <mod name="lane0" size="1" default="h0">
3890      <opt>h0</opt>
3891      <opt>h1</opt>
3892    </mod>
3893    <encoding mask="0xfff48" exact="0x3c500">
3894      <neq left="round" right="#rtna"/>
3895      <copy name="lane0" start="7"/>
3896      <derived start="4" size="2">
3897        <eq left="round" right="#none"/>
3898        <eq left="round" right="#rtp"/>
3899        <eq left="round" right="#rtn"/>
3900        <eq left="round" right="#rtz"/>
3901      </derived>
3902    </encoding>
3903    <encoding mask="0xfffd8" exact="0x3cc40">
3904      <eq left="round" right="#rtna"/>
3905      <copy name="lane0" start="5"/>
3906    </encoding>
3907  </ins>
3908
3909  <ins name="F16_TO_U32" unit="add">
3910    <src start="0"/>
3911    <mod name="round" size="3">
3912      <opt>none</opt>
3913      <opt>rtp</opt>
3914      <opt>rtn</opt>
3915      <opt>rtz</opt>
3916      <opt>rtna</opt>
3917    </mod>
3918    <mod name="lane0" size="1" default="h0">
3919      <opt>h0</opt>
3920      <opt>h1</opt>
3921    </mod>
3922    <encoding mask="0xfff48" exact="0x3c508">
3923      <neq left="round" right="#rtna"/>
3924      <copy name="lane0" start="7"/>
3925      <derived start="4" size="2">
3926        <eq left="round" right="#none"/>
3927        <eq left="round" right="#rtp"/>
3928        <eq left="round" right="#rtn"/>
3929        <eq left="round" right="#rtz"/>
3930      </derived>
3931    </encoding>
3932    <encoding mask="0xfffd8" exact="0x3cc48">
3933      <eq left="round" right="#rtna"/>
3934      <copy name="lane0" start="5"/>
3935    </encoding>
3936  </ins>
3937
3938  <ins name="F32_TO_S32" unit="add">
3939    <src start="0"/>
3940    <mod name="round" size="3">
3941      <opt>none</opt>
3942      <opt>rtp</opt>
3943      <opt>rtn</opt>
3944      <opt>rtz</opt>
3945      <opt>rtna</opt>
3946    </mod>
3947    <encoding mask="0xfffc8" exact="0x3c980">
3948      <neq left="round" right="#rtna"/>
3949      <derived start="4" size="2">
3950        <eq left="round" right="#none"/>
3951        <eq left="round" right="#rtp"/>
3952        <eq left="round" right="#rtn"/>
3953        <eq left="round" right="#rtz"/>
3954      </derived>
3955    </encoding>
3956    <encoding mask="0xffff8" exact="0x3cca0">
3957      <eq left="round" right="#rtna"/>
3958    </encoding>
3959  </ins>
3960
3961  <ins name="F32_TO_U32" unit="add">
3962    <src start="0"/>
3963    <mod name="round" size="3">
3964      <opt>none</opt>
3965      <opt>rtp</opt>
3966      <opt>rtn</opt>
3967      <opt>rtz</opt>
3968      <opt>rtna</opt>
3969    </mod>
3970    <encoding mask="0xfffc8" exact="0x3c988">
3971      <neq left="round" right="#rtna"/>
3972      <derived start="4" size="2">
3973        <eq left="round" right="#none"/>
3974        <eq left="round" right="#rtp"/>
3975        <eq left="round" right="#rtn"/>
3976        <eq left="round" right="#rtz"/>
3977      </derived>
3978    </encoding>
3979    <encoding mask="0xffff8" exact="0x3cca8">
3980      <eq left="round" right="#rtna"/>
3981    </encoding>
3982  </ins>
3983
3984  <ins name="FADD.f32" unit="add">
3985    <src start="0"/>
3986    <src start="3"/>
3987    <mod name="round" size="3">
3988      <opt>none</opt>
3989      <opt>rtp</opt>
3990      <opt>rtn</opt>
3991      <opt>rtz</opt>
3992      <opt>rto</opt>
3993    </mod>
3994    <mod name="abs1" size="1" opt="abs"/>
3995    <mod name="neg0" size="1" opt="neg"/>
3996    <mod name="neg1" size="1" opt="neg"/>
3997    <mod name="clamp" size="2">
3998      <opt>none</opt>
3999      <opt>clamp_0_inf</opt>
4000      <opt>clamp_m1_1</opt>
4001      <opt>clamp_0_1</opt>
4002    </mod>
4003    <mod name="abs0" size="1" opt="abs"/>
4004    <mod name="widen0" size="2">
4005      <opt>none</opt>
4006      <opt>h0</opt>
4007      <opt>h1</opt>
4008    </mod>
4009    <mod name="widen1" size="2">
4010      <opt>none</opt>
4011      <opt>h0</opt>
4012      <opt>h1</opt>
4013    </mod>
4014    <encoding mask="0xf0000" exact="0x20000">
4015      <neq left="round" right="#rto"/>
4016      <copy name="abs1" start="6"/>
4017      <copy name="neg0" start="7"/>
4018      <copy name="neg1" start="8"/>
4019      <copy name="clamp" start="11"/>
4020      <copy name="abs0" start="15"/>
4021      <derived start="13" size="2">
4022        <eq left="round" right="#none"/>
4023        <eq left="round" right="#rtp"/>
4024        <eq left="round" right="#rtn"/>
4025        <eq left="round" right="#rtz"/>
4026      </derived>
4027      <derived start="9" size="2">
4028        <and>
4029          <eq left="widen0" right="#none"/>
4030          <eq left="widen1" right="#none"/>
4031        </and>
4032        <and>
4033          <eq left="widen0" right="#none"/>
4034          <eq left="widen1" right="#h0"/>
4035        </and>
4036        <and>
4037          <eq left="widen0" right="#none"/>
4038          <eq left="widen1" right="#h1"/>
4039        </and>
4040        <and>
4041          <eq left="widen0" right="#h0"/>
4042          <eq left="widen1" right="#h0"/>
4043        </and>
4044      </derived>
4045    </encoding>
4046    <encoding mask="0xfffc0" exact="0x75200">
4047      <and>
4048        <eq left="round" right="#rto"/>
4049        <eq left="widen0" right="#none"/>
4050        <eq left="widen1" right="#none"/>
4051        <eq left="abs0" right="#none"/>
4052        <eq left="abs1" right="#none"/>
4053        <eq left="neg0" right="#none"/>
4054        <eq left="neg1" right="#none"/>
4055        <eq left="clamp" right="#none"/>
4056      </and>
4057    </encoding>
4058    <swap left="0" right="1">
4059      <or>
4060        <and>
4061          <eq left="widen0" right="#h0"/>
4062          <eq left="widen1" right="#none"/>
4063        </and>
4064        <and>
4065          <eq left="widen0" right="#h1"/>
4066          <eq left="widen1" right="#none"/>
4067        </and>
4068      </or>
4069    </swap>
4070  </ins>
4071
4072  <ins name="FADD.v2f16" mask="0xf0000" exact="0xa0000" unit="add">
4073    <src start="0"/>
4074    <src start="3"/>
4075    <mod name="abs1" start="6" size="1" opt="abs"/>
4076    <mod name="neg0" start="7" size="1" opt="neg"/>
4077    <mod name="neg1" start="8" size="1" opt="neg"/>
4078    <mod name="swz0" start="9" size="2" default="h01">
4079      <opt>h00</opt>
4080      <opt>h10</opt>
4081      <opt>h01</opt>
4082      <opt>h11</opt>
4083    </mod>
4084    <mod name="swz1" start="11" size="2" default="h01">
4085      <opt>h00</opt>
4086      <opt>h10</opt>
4087      <opt>h01</opt>
4088      <opt>h11</opt>
4089    </mod>
4090    <mod name="round" start="13" size="2">
4091      <opt>none</opt>
4092      <opt>rtp</opt>
4093      <opt>rtn</opt>
4094      <opt>rtz</opt>
4095    </mod>
4096    <mod name="abs0" start="15" size="1" opt="abs"/>
4097  </ins>
4098
4099  <ins name="FADD_RSCALE.f32" mask="0xe8000" exact="0x88000" unit="add">
4100    <src start="0"/>
4101    <src start="3"/>
4102    <src start="6"/>
4103    <mod name="clamp" size="1" opt="clamp_0_1"/>
4104    <mod name="special" size="1" opt="n"/>
4105    <mod name="round" size="3">
4106      <opt>none</opt>
4107      <opt>rtp</opt>
4108      <opt>rtn</opt>
4109      <opt>rtz</opt>
4110      <opt>rtna</opt>
4111    </mod>
4112    <mod name="abs1" start="12" size="1" opt="abs"/>
4113    <mod name="neg0" start="13" size="1" opt="neg"/>
4114    <mod name="neg1" start="14" size="1" opt="neg"/>
4115    <mod name="abs0" start="16" size="1" opt="abs"/>
4116    <derived start="9" size="3">
4117      <and>
4118        <eq left="clamp" right="#none"/>
4119        <eq left="special" right="#none"/>
4120        <eq left="round" right="#none"/>
4121      </and>
4122      <reserved/>
4123      <and>
4124        <eq left="clamp" right="#clamp_0_1"/>
4125        <eq left="special" right="#none"/>
4126        <eq left="round" right="#none"/>
4127      </and>
4128      <and>
4129        <eq left="clamp" right="#none"/>
4130        <eq left="special" right="#n"/>
4131        <eq left="round" right="#rtna"/>
4132      </and>
4133      <and>
4134        <eq left="clamp" right="#none"/>
4135        <eq left="special" right="#n"/>
4136        <eq left="round" right="#none"/>
4137      </and>
4138      <and>
4139        <eq left="clamp" right="#none"/>
4140        <eq left="special" right="#n"/>
4141        <eq left="round" right="#rtp"/>
4142      </and>
4143      <and>
4144        <eq left="clamp" right="#none"/>
4145        <eq left="special" right="#n"/>
4146        <eq left="round" right="#rtn"/>
4147      </and>
4148      <and>
4149        <eq left="clamp" right="#none"/>
4150        <eq left="special" right="#n"/>
4151        <eq left="round" right="#rtz"/>
4152      </and>
4153    </derived>
4154  </ins>
4155
4156  <ins name="FATAN_ASSIST.f16" mask="0xfff00" exact="0x67800" unused="true" table="true" unit="add">
4157    <src start="0" mask="0xf7"/>
4158    <src start="3" mask="0xf7"/>
4159    <mod name="lane1" start="6" size="1" default="h0">
4160      <opt>h0</opt>
4161      <opt>h1</opt>
4162    </mod>
4163    <mod name="lane0" start="7" size="1" default="h0">
4164      <opt>h0</opt>
4165      <opt>h1</opt>
4166    </mod>
4167  </ins>
4168
4169  <ins name="FATAN_ASSIST.f32" mask="0xfffc0" exact="0x67a00" unused="true" table="true" unit="add">
4170    <src start="0" mask="0xf7"/>
4171    <src start="3" mask="0xf7"/>
4172  </ins>
4173
4174  <ins name="FATAN_TABLE.f16" mask="0xfff00" exact="0x67900" unused="true" table="true" unit="add">
4175    <src start="0" mask="0xf7"/>
4176    <src start="3" mask="0xf7"/>
4177    <mod name="lane1" start="6" size="1" default="h0">
4178      <opt>h0</opt>
4179      <opt>h1</opt>
4180    </mod>
4181    <mod name="lane0" start="7" size="1" default="h0">
4182      <opt>h0</opt>
4183      <opt>h1</opt>
4184    </mod>
4185  </ins>
4186
4187  <ins name="FATAN_TABLE.f32" mask="0xfffc0" exact="0x67a40" unused="true" table="true" unit="add">
4188    <src start="0" mask="0xf7"/>
4189    <src start="3" mask="0xf7"/>
4190  </ins>
4191
4192  <ins name="FCMP.f32" mask="0xf0000" exact="0x30000" unit="add">
4193    <src start="0"/>
4194    <src start="3"/>
4195    <mod name="widen0" size="2">
4196      <opt>none</opt>
4197      <opt>h0</opt>
4198      <opt>h1</opt>
4199    </mod>
4200    <mod name="widen1" size="2">
4201      <opt>none</opt>
4202      <opt>h0</opt>
4203      <opt>h1</opt>
4204    </mod>
4205    <mod name="neg0" size="1" opt="neg"/>
4206    <mod name="neg1" size="1" opt="neg"/>
4207    <mod name="cmpf" start="6" size="3">
4208      <opt>eq</opt>
4209      <opt>gt</opt>
4210      <opt>ge</opt>
4211      <opt>ne</opt>
4212      <opt>lt</opt>
4213      <opt>le</opt>
4214      <opt>gtlt</opt>
4215      <opt>total</opt>
4216    </mod>
4217    <mod name="abs0" start="11" size="1" opt="abs"/>
4218    <mod name="abs1" start="12" size="1" opt="abs"/>
4219    <mod name="result_type" start="14" size="2" default="i1">
4220      <opt>i1</opt>
4221      <opt>f1</opt>
4222      <opt>m1</opt>
4223    </mod>
4224    <derived start="9" size="2">
4225      <and>
4226        <eq left="widen0" right="#none"/>
4227        <eq left="widen1" right="#none"/>
4228      </and>
4229      <and>
4230        <eq left="widen0" right="#none"/>
4231        <eq left="widen1" right="#h0"/>
4232      </and>
4233      <and>
4234        <eq left="widen0" right="#none"/>
4235        <eq left="widen1" right="#h1"/>
4236      </and>
4237      <and>
4238        <eq left="widen0" right="#h0"/>
4239        <eq left="widen1" right="#h0"/>
4240      </and>
4241    </derived>
4242    <derived start="13" size="1">
4243      <and>
4244        <eq left="neg0" right="#none"/>
4245        <eq left="neg1" right="#none"/>
4246      </and>
4247      <and>
4248        <eq left="neg0" right="#neg"/>
4249        <eq left="neg1" right="#none"/>
4250      </and>
4251    </derived>
4252    <swap left="0" right="1">
4253      <or>
4254        <and>
4255          <eq left="neg0" right="#none"/>
4256          <eq left="neg1" right="#neg"/>
4257        </and>
4258        <and>
4259          <eq left="widen0" right="#h0"/>
4260          <eq left="widen1" right="#none"/>
4261        </and>
4262        <and>
4263          <eq left="widen0" right="#h1"/>
4264          <eq left="widen1" right="#none"/>
4265        </and>
4266      </or>
4267      <rewrite name="cmpf">
4268        <map from="lt" to="gt"/>
4269        <map from="le" to="ge"/>
4270        <map from="gt" to="lt"/>
4271        <map from="ge" to="le"/>
4272      </rewrite>
4273    </swap>
4274  </ins>
4275
4276  <ins name="FCMP.v2f16" mask="0xf0000" exact="0xb0000" unit="add">
4277    <src start="0"/>
4278    <src start="3"/>
4279    <mod name="neg0" size="1" opt="neg"/>
4280    <mod name="neg1" size="1" opt="neg"/>
4281    <mod name="cmpf" start="6" size="3">
4282      <opt>eq</opt>
4283      <opt>gt</opt>
4284      <opt>ge</opt>
4285      <opt>ne</opt>
4286      <opt>lt</opt>
4287      <opt>le</opt>
4288      <opt>gtlt</opt>
4289      <opt>total</opt>
4290    </mod>
4291    <mod name="swz0" start="9" size="2" default="h01">
4292      <opt>h00</opt>
4293      <opt>h10</opt>
4294      <opt>h01</opt>
4295      <opt>h11</opt>
4296    </mod>
4297    <mod name="swz1" start="11" size="2" default="h01">
4298      <opt>h00</opt>
4299      <opt>h10</opt>
4300      <opt>h01</opt>
4301      <opt>h11</opt>
4302    </mod>
4303    <mod name="result_type" start="14" size="2" default="i1">
4304      <opt>i1</opt>
4305      <opt>f1</opt>
4306      <opt>m1</opt>
4307    </mod>
4308    <derived start="13" size="1">
4309      <and>
4310        <eq left="neg0" right="#none"/>
4311        <eq left="neg1" right="#none"/>
4312      </and>
4313      <and>
4314        <eq left="neg0" right="#neg"/>
4315        <eq left="neg1" right="#none"/>
4316      </and>
4317    </derived>
4318    <swap left="0" right="1">
4319      <and>
4320        <eq left="neg0" right="#none"/>
4321        <eq left="neg1" right="#neg"/>
4322      </and>
4323      <rewrite name="cmpf">
4324        <map from="lt" to="gt"/>
4325        <map from="le" to="ge"/>
4326        <map from="gt" to="lt"/>
4327        <map from="ge" to="le"/>
4328      </rewrite>
4329    </swap>
4330  </ins>
4331
4332  <ins name="FCOS_TABLE.u6" mask="0xfffe8" exact="0x67a88" table="true" unit="add">
4333    <src start="0" mask="0xf7"/>
4334    <mod name="offset" start="4" size="1" opt="offset"/>
4335  </ins>
4336
4337  <ins name="FEXP.f32" mask="0xfffc0" exact="0x66ac0" table="true" unit="add">
4338    <src start="0" mask="0xf7"/>
4339    <src start="3" mask="0xf7"/>
4340  </ins>
4341
4342  <ins name="FEXP_TABLE.u4" mask="0xfffe0" exact="0x67ac0" table="true" unit="add">
4343    <src start="0" mask="0xf7"/>
4344    <mod name="adj" start="3" size="2">
4345      <opt>none</opt>
4346      <opt>small</opt>
4347      <opt>low</opt>
4348    </mod>
4349  </ins>
4350
4351  <ins name="FLOGD.f32" mask="0xffff8" exact="0x66340" table="true" unit="add">
4352    <src start="0" mask="0xf7"/>
4353  </ins>
4354
4355  <ins name="FLOG_TABLE.f32" table="true" unit="add">
4356    <src start="0" mask="0xf7"/>
4357    <mod name="widen0" size="2">
4358      <opt>none</opt>
4359      <opt>h0</opt>
4360      <opt>h1</opt>
4361    </mod>
4362    <mod name="mode" size="2">
4363      <opt>red</opt>
4364      <opt>base2</opt>
4365      <opt>natural</opt>
4366    </mod>
4367    <mod name="precision" size="2">
4368      <opt>none</opt>
4369      <opt>high</opt>
4370      <opt>low</opt>
4371    </mod>
4372    <mod name="neg0" size="1" opt="neg"/>
4373    <mod name="abs0" size="1" opt="abs"/>
4374    <mod name="divzero" size="1" opt="divzero"/>
4375    <encoding mask="0xfffc0" exact="0x67300">
4376      <and>
4377        <eq left="mode" right="#red"/>
4378        <eq left="widen0" right="#none"/>
4379        <eq left="precision" right="#none"/>
4380      </and>
4381      <copy name="neg0" start="3"/>
4382      <copy name="abs0" start="4"/>
4383      <copy name="divzero" start="5"/>
4384    </encoding>
4385    <encoding mask="0xfff40" exact="0x67340">
4386      <and>
4387        <eq left="mode" right="#red"/>
4388        <neq left="widen0" right="#none"/>
4389        <eq left="precision" right="#none"/>
4390      </and>
4391      <copy name="neg0" start="3"/>
4392      <copy name="abs0" start="4"/>
4393      <copy name="divzero" start="5"/>
4394      <derived start="7" size="1">
4395        <eq left="widen0" right="#h0"/>
4396        <eq left="widen0" right="#h1"/>
4397      </derived>
4398    </encoding>
4399    <encoding mask="0xfffc0" exact="0x67b00">
4400      <and>
4401        <neq left="mode" right="#red"/>
4402        <eq left="widen0" right="#none"/>
4403        <eq left="precision" right="#none"/>
4404        <eq left="divzero" right="#none"/>
4405      </and>
4406      <copy name="neg0" start="3"/>
4407      <copy name="abs0" start="4"/>
4408      <derived start="5" size="1">
4409        <eq left="mode" right="#base2"/>
4410        <eq left="mode" right="#natural"/>
4411      </derived>
4412    </encoding>
4413    <encoding mask="0xfff40" exact="0x67b40">
4414      <and>
4415        <neq left="mode" right="#red"/>
4416        <neq left="widen0" right="#none"/>
4417        <eq left="precision" right="#none"/>
4418        <eq left="divzero" right="#none"/>
4419      </and>
4420      <copy name="neg0" start="3"/>
4421      <copy name="abs0" start="4"/>
4422      <derived start="5" size="1">
4423        <eq left="mode" right="#base2"/>
4424        <eq left="mode" right="#natural"/>
4425      </derived>
4426      <derived start="7" size="1">
4427        <eq left="widen0" right="#h0"/>
4428        <eq left="widen0" right="#h1"/>
4429      </derived>
4430    </encoding>
4431    <encoding mask="0xfffe0" exact="0x67ae0">
4432      <and>
4433        <neq left="mode" right="#red"/>
4434        <eq left="widen0" right="#none"/>
4435        <neq left="precision" right="#none"/>
4436        <eq left="divzero" right="#none"/>
4437        <eq left="abs0" right="#none"/>
4438        <eq left="neg0" right="#none"/>
4439      </and>
4440      <derived start="3" size="1">
4441        <eq left="mode" right="#natural"/>
4442        <eq left="mode" right="#base2"/>
4443      </derived>
4444      <derived start="4" size="1">
4445        <eq left="precision" right="#high"/>
4446        <eq left="precision" right="#low"/>
4447      </derived>
4448    </encoding>
4449  </ins>
4450
4451  <ins name="FMAX.f32" mask="0xf0600" exact="0x0" unit="add">
4452    <src start="0"/>
4453    <src start="3"/>
4454    <mod name="abs1" start="6" size="1" opt="abs"/>
4455    <mod name="neg0" start="7" size="1" opt="neg"/>
4456    <mod name="neg1" start="8" size="1" opt="neg"/>
4457    <mod name="clamp" start="11" size="2">
4458      <opt>none</opt>
4459      <opt>clamp_0_inf</opt>
4460      <opt>clamp_m1_1</opt>
4461      <opt>clamp_0_1</opt>
4462    </mod>
4463    <mod name="sem" start="13" size="2" default="nan_suppress">
4464      <opt>nan_suppress</opt>
4465      <opt>nan_propagate</opt>
4466      <opt>c</opt>
4467      <opt>inverse_c</opt>
4468    </mod>
4469    <mod name="abs0" start="15" size="1" opt="abs"/>
4470  </ins>
4471
4472  <ins name="FMAX.v2f16" mask="0xf8000" exact="0x80000" unit="add">
4473    <src start="0"/>
4474    <src start="3"/>
4475    <mod name="abs0" size="1" opt="abs"/>
4476    <mod name="abs1" size="1" opt="abs"/>
4477    <mod name="neg0" start="7" size="1" opt="neg"/>
4478    <mod name="neg1" start="8" size="1" opt="neg"/>
4479    <mod name="swz0" start="9" size="2" default="h01">
4480      <opt>h00</opt>
4481      <opt>h10</opt>
4482      <opt>h01</opt>
4483      <opt>h11</opt>
4484    </mod>
4485    <mod name="swz1" start="11" size="2" default="h01">
4486      <opt>h00</opt>
4487      <opt>h10</opt>
4488      <opt>h01</opt>
4489      <opt>h11</opt>
4490    </mod>
4491    <mod name="sem" start="13" size="2" default="nan_suppress">
4492      <opt>nan_suppress</opt>
4493      <opt>nan_propagate</opt>
4494      <opt>c</opt>
4495      <opt>inverse_c</opt>
4496    </mod>
4497    <derived start="6" size="1">
4498      <or>
4499        <and>
4500          <eq left="abs0" right="#abs"/>
4501          <eq left="abs1" right="#none"/>
4502          <eq left="ordering" right="#gt"/>
4503        </and>
4504        <and>
4505          <eq left="abs0" right="#none"/>
4506          <eq left="abs1" right="#none"/>
4507          <neq left="ordering" right="#gt"/>
4508        </and>
4509      </or>
4510      <or>
4511        <and>
4512          <eq left="abs0" right="#abs"/>
4513          <eq left="abs1" right="#abs"/>
4514          <eq left="ordering" right="#gt"/>
4515        </and>
4516        <and>
4517          <eq left="abs0" right="#abs"/>
4518          <eq left="abs1" right="#none"/>
4519          <neq left="ordering" right="#gt"/>
4520        </and>
4521      </or>
4522    </derived>
4523    <swap left="0" right="1">
4524      <or>
4525        <and>
4526          <eq left="abs0" right="#none"/>
4527          <eq left="ordering" right="#gt"/>
4528        </and>
4529        <and>
4530          <eq left="abs1" right="#abs"/>
4531          <neq left="ordering" right="#gt"/>
4532        </and>
4533      </or>
4534      <rewrite name="sem">
4535        <map from="c" to="inverse_c"/>
4536        <map from="inverse_c" to="c"/>
4537      </rewrite>
4538    </swap>
4539  </ins>
4540
4541  <ins name="FMIN.f32" mask="0xf0600" exact="0x10000" unit="add">
4542    <src start="0"/>
4543    <src start="3"/>
4544    <mod name="abs1" start="6" size="1" opt="abs"/>
4545    <mod name="neg0" start="7" size="1" opt="neg"/>
4546    <mod name="neg1" start="8" size="1" opt="neg"/>
4547    <mod name="clamp" start="11" size="2">
4548      <opt>none</opt>
4549      <opt>clamp_0_inf</opt>
4550      <opt>clamp_m1_1</opt>
4551      <opt>clamp_0_1</opt>
4552    </mod>
4553    <mod name="sem" start="13" size="2" default="nan_suppress">
4554      <opt>nan_suppress</opt>
4555      <opt>nan_propagate</opt>
4556      <opt>c</opt>
4557      <opt>inverse_c</opt>
4558    </mod>
4559    <mod name="abs0" start="15" size="1" opt="abs"/>
4560  </ins>
4561
4562  <ins name="FMIN.v2f16" mask="0xf8000" exact="0x90000" unit="add">
4563    <src start="0"/>
4564    <src start="3"/>
4565    <mod name="abs0" size="1" opt="abs"/>
4566    <mod name="abs1" size="1" opt="abs"/>
4567    <mod name="neg0" start="7" size="1" opt="neg"/>
4568    <mod name="neg1" start="8" size="1" opt="neg"/>
4569    <mod name="swz0" start="9" size="2" default="h01">
4570      <opt>h00</opt>
4571      <opt>h10</opt>
4572      <opt>h01</opt>
4573      <opt>h11</opt>
4574    </mod>
4575    <mod name="swz1" start="11" size="2" default="h01">
4576      <opt>h00</opt>
4577      <opt>h10</opt>
4578      <opt>h01</opt>
4579      <opt>h11</opt>
4580    </mod>
4581    <mod name="sem" start="13" size="2" default="nan_suppress">
4582      <opt>nan_suppress</opt>
4583      <opt>nan_propagate</opt>
4584      <opt>c</opt>
4585      <opt>inverse_c</opt>
4586    </mod>
4587    <derived start="6" size="1">
4588      <or>
4589        <and>
4590          <eq left="abs0" right="#abs"/>
4591          <eq left="abs1" right="#none"/>
4592          <eq left="ordering" right="#gt"/>
4593        </and>
4594        <and>
4595          <eq left="abs0" right="#none"/>
4596          <eq left="abs1" right="#none"/>
4597          <neq left="ordering" right="#gt"/>
4598        </and>
4599      </or>
4600      <or>
4601        <and>
4602          <eq left="abs0" right="#abs"/>
4603          <eq left="abs1" right="#abs"/>
4604          <eq left="ordering" right="#gt"/>
4605        </and>
4606        <and>
4607          <eq left="abs0" right="#abs"/>
4608          <eq left="abs1" right="#none"/>
4609          <neq left="ordering" right="#gt"/>
4610        </and>
4611      </or>
4612    </derived>
4613    <swap left="0" right="1">
4614      <or>
4615        <and>
4616          <eq left="abs0" right="#none"/>
4617          <eq left="ordering" right="#gt"/>
4618        </and>
4619        <and>
4620          <eq left="abs1" right="#abs"/>
4621          <neq left="ordering" right="#gt"/>
4622        </and>
4623      </or>
4624      <rewrite name="sem">
4625        <map from="c" to="inverse_c"/>
4626        <map from="inverse_c" to="c"/>
4627      </rewrite>
4628    </swap>
4629  </ins>
4630
4631  <ins name="FPCLASS.f16" mask="0xffff0" exact="0x67c40" table="true" unit="add">
4632    <src start="0" mask="0xf7"/>
4633    <mod name="lane0" start="3" size="1" default="h0">
4634      <opt>h0</opt>
4635      <opt>h1</opt>
4636    </mod>
4637  </ins>
4638
4639  <ins name="FPCLASS.f32" mask="0xffff8" exact="0x67c50" table="true" unit="add">
4640    <src start="0" mask="0xf7"/>
4641  </ins>
4642
4643  <ins name="FPOW_SC_APPLY" mask="0xfffc0" exact="0x75080" unit="add">
4644    <src start="0"/>
4645    <src start="3"/>
4646  </ins>
4647
4648  <ins name="FPOW_SC_DET.f16" table="true" unit="add">
4649    <src start="0" mask="0xf7"/>
4650    <src start="3" mask="0xf7"/>
4651    <mod name="func" size="2">
4652      <opt>pow</opt>
4653      <opt>powr</opt>
4654      <opt>pown</opt>
4655      <opt>rootn</opt>
4656    </mod>
4657    <mod name="lane1" size="2">
4658      <opt>h0</opt>
4659      <opt>h1</opt>
4660      <opt>none</opt>
4661    </mod>
4662    <mod name="lane0" start="7" size="1" default="h0">
4663      <opt>h0</opt>
4664      <opt>h1</opt>
4665    </mod>
4666    <encoding mask="0xffe00" exact="0x67400">
4667      <or>
4668        <eq left="func" right="#pow"/>
4669        <eq left="func" right="#powr"/>
4670      </or>
4671      <derived start="6" size="1">
4672        <or>
4673          <eq alias="true" left="lane1" right="#none"/>
4674          <eq left="lane1" right="#h0"/>
4675        </or>
4676        <eq left="lane1" right="#h1"/>
4677      </derived>
4678      <derived start="8" size="1">
4679        <eq left="func" right="#pow"/>
4680        <eq left="func" right="#powr"/>
4681      </derived>
4682    </encoding>
4683    <encoding mask="0xffe40" exact="0x67600">
4684      <and>
4685        <or>
4686          <eq left="func" right="#pown"/>
4687          <eq left="func" right="#rootn"/>
4688        </or>
4689        <eq left="lane1" right="#none"/>
4690      </and>
4691      <derived start="8" size="1">
4692        <eq left="func" right="#pown"/>
4693        <eq left="func" right="#rootn"/>
4694      </derived>
4695    </encoding>
4696  </ins>
4697
4698  <ins name="FPOW_SC_DET.f32" mask="0xffe40" exact="0x67640" table="true" unit="add">
4699    <src start="0" mask="0xf7"/>
4700    <src start="3" mask="0xf7"/>
4701    <mod name="func" start="7" size="2">
4702      <opt>pow</opt>
4703      <opt>powr</opt>
4704      <opt>pown</opt>
4705      <opt>rootn</opt>
4706    </mod>
4707  </ins>
4708
4709  <ins name="FRCBRT_APPROX_A.f32" unused="true" table="true" unit="add">
4710    <src start="0" mask="0xf7"/>
4711    <mod name="widen0" size="2">
4712      <opt>none</opt>
4713      <opt>h0</opt>
4714      <opt>h1</opt>
4715    </mod>
4716    <mod name="neg0" start="3" size="1" opt="neg"/>
4717    <mod name="abs0" start="4" size="1" opt="abs"/>
4718    <mod name="divzero" start="5" size="1" opt="divzero"/>
4719    <encoding mask="0xfffc0" exact="0x67200">
4720      <eq left="widen0" right="#none"/>
4721    </encoding>
4722    <encoding mask="0xfff40" exact="0x67240">
4723      <neq left="widen0" right="#none"/>
4724      <derived start="7" size="1">
4725        <eq left="widen0" right="#h0"/>
4726        <eq left="widen0" right="#h1"/>
4727      </derived>
4728    </encoding>
4729  </ins>
4730
4731  <ins name="FRCBRT_APPROX_B.f32" mask="0xffff8" exact="0x67ab0" unused="true" table="true" unit="add">
4732    <src start="0" mask="0xf7"/>
4733  </ins>
4734
4735  <ins name="FRCBRT_APPROX_C.f32" mask="0xffff8" exact="0x67ab8" unused="true" table="true" unit="add">
4736    <src start="0" mask="0xf7"/>
4737  </ins>
4738
4739  <ins name="FRCP.f16" mask="0xffec0" exact="0x67080" table="true" unit="add">
4740    <src start="0" mask="0xf7"/>
4741    <mod name="neg0" start="3" size="1" opt="neg"/>
4742    <mod name="abs0" start="4" size="1" opt="abs"/>
4743    <mod name="divzero" start="5" size="1" opt="divzero"/>
4744    <mod name="lane0" start="8" size="1" default="h0">
4745      <opt>h0</opt>
4746      <opt>h1</opt>
4747    </mod>
4748  </ins>
4749
4750  <ins name="FRCP.f32" mask="0xfffa0" exact="0x66000" table="true" unit="add">
4751    <src start="0" mask="0xf7"/>
4752    <mod name="widen0" size="2">
4753      <opt>none</opt>
4754    </mod>
4755    <mod name="neg0" start="3" size="1" opt="neg"/>
4756    <mod name="abs0" start="4" size="1" opt="abs"/>
4757    <derived start="6" size="1">
4758      <eq left="widen0" right="#none"/>
4759      <reserved/>
4760    </derived>
4761  </ins>
4762
4763  <ins name="FRCP_APPROX.f32" table="true" unit="add">
4764    <src start="0" mask="0xf7"/>
4765    <mod name="widen0" size="2">
4766      <opt>none</opt>
4767      <opt>h0</opt>
4768      <opt>h1</opt>
4769    </mod>
4770    <mod name="neg0" start="3" size="1" opt="neg"/>
4771    <mod name="abs0" start="4" size="1" opt="abs"/>
4772    <mod name="divzero" start="5" size="1" opt="divzero"/>
4773    <encoding mask="0xfffc0" exact="0x67000">
4774      <eq left="widen0" right="#none"/>
4775    </encoding>
4776    <encoding mask="0xfff40" exact="0x67040">
4777      <neq left="widen0" right="#none"/>
4778      <derived start="7" size="1">
4779        <eq left="widen0" right="#h0"/>
4780        <eq left="widen0" right="#h1"/>
4781      </derived>
4782    </encoding>
4783  </ins>
4784
4785  <ins name="FREXPE.f32" unit="add">
4786    <src start="0"/>
4787    <mod name="neg0" size="1" opt="neg"/>
4788    <mod name="sqrt" size="1" opt="sqrt"/>
4789    <mod name="log" size="1" opt="log"/>
4790    <mod name="widen0" start="3" size="2">
4791      <reserved/>
4792      <opt>none</opt>
4793      <opt>h0</opt>
4794      <opt>h1</opt>
4795    </mod>
4796    <encoding mask="0xffea0" exact="0x3dc20">
4797      <eq left="log" right="#none"/>
4798      <copy name="neg0" start="6"/>
4799      <copy name="sqrt" start="8"/>
4800    </encoding>
4801    <encoding mask="0xfffe0" exact="0x3de20">
4802      <and>
4803        <eq left="log" right="#log"/>
4804        <eq left="sqrt" right="#none"/>
4805        <eq left="neg0" right="#none"/>
4806      </and>
4807    </encoding>
4808  </ins>
4809
4810  <ins name="FREXPE.v2f16" unit="add">
4811    <src start="0"/>
4812    <mod name="neg0" size="1" opt="neg"/>
4813    <mod name="sqrt" size="1" opt="sqrt"/>
4814    <mod name="log" size="1" opt="log"/>
4815    <mod name="swz0" start="3" size="2" default="h01">
4816      <opt>h00</opt>
4817      <opt>h10</opt>
4818      <opt>h01</opt>
4819      <opt>h11</opt>
4820    </mod>
4821    <encoding mask="0xffea0" exact="0x3dc00">
4822      <eq left="log" right="#none"/>
4823      <copy name="neg0" start="6"/>
4824      <copy name="sqrt" start="8"/>
4825    </encoding>
4826    <encoding mask="0xfffe0" exact="0x3de00">
4827      <and>
4828        <eq left="log" right="#log"/>
4829        <eq left="sqrt" right="#none"/>
4830        <eq left="neg0" right="#none"/>
4831      </and>
4832    </encoding>
4833  </ins>
4834
4835  <ins name="FREXPM.f32" unit="add">
4836    <src start="0"/>
4837    <mod name="abs0" start="6" size="1" opt="abs"/>
4838    <mod name="sqrt" size="1" opt="sqrt"/>
4839    <mod name="log" size="1" opt="log"/>
4840    <mod name="widen0" start="3" size="2">
4841      <reserved/>
4842      <opt>none</opt>
4843      <opt>h0</opt>
4844      <opt>h1</opt>
4845    </mod>
4846    <mod name="neg0" size="1" opt="neg"/>
4847    <encoding mask="0xfff20" exact="0x3db20">
4848      <and>
4849        <eq left="log" right="#none"/>
4850        <eq left="neg0" right="#none"/>
4851      </and>
4852      <copy name="sqrt" start="7"/>
4853    </encoding>
4854    <encoding mask="0xfff20" exact="0x3da20">
4855      <and>
4856        <eq left="log" right="#log"/>
4857        <eq left="sqrt" right="#none"/>
4858      </and>
4859      <copy name="neg0" start="7"/>
4860    </encoding>
4861  </ins>
4862
4863  <ins name="FREXPM.v2f16" unit="add">
4864    <src start="0"/>
4865    <mod name="abs0" start="6" size="1" opt="abs"/>
4866    <mod name="sqrt" size="1" opt="sqrt"/>
4867    <mod name="log" size="1" opt="log"/>
4868    <mod name="swz0" start="3" size="2" default="h01">
4869      <opt>h00</opt>
4870      <opt>h10</opt>
4871      <opt>h01</opt>
4872      <opt>h11</opt>
4873    </mod>
4874    <mod name="neg0" size="1" opt="neg"/>
4875    <encoding mask="0xfff20" exact="0x3db00">
4876      <and>
4877        <eq left="log" right="#none"/>
4878        <eq left="neg0" right="#none"/>
4879      </and>
4880      <copy name="sqrt" start="7"/>
4881    </encoding>
4882    <encoding mask="0xfff20" exact="0x3da00">
4883      <and>
4884        <eq left="log" right="#log"/>
4885        <eq left="sqrt" right="#none"/>
4886      </and>
4887      <copy name="neg0" start="7"/>
4888    </encoding>
4889  </ins>
4890
4891  <ins name="FROUND.f32" mask="0xff860" exact="0x3e820" unit="add">
4892    <src start="0"/>
4893    <mod name="abs0" start="7" size="1" opt="abs"/>
4894    <mod name="neg0" start="8" size="1" opt="neg"/>
4895    <mod name="widen0" start="3" size="2">
4896      <reserved/>
4897      <opt>none</opt>
4898      <opt>h0</opt>
4899      <opt>h1</opt>
4900    </mod>
4901    <mod name="round" start="9" size="2">
4902      <opt>none</opt>
4903      <opt>rtp</opt>
4904      <opt>rtn</opt>
4905      <opt>rtz</opt>
4906    </mod>
4907  </ins>
4908
4909  <ins name="FROUND.v2f16" mask="0xff860" exact="0x3e800" unit="add">
4910    <src start="0"/>
4911    <mod name="abs0" start="7" size="1" opt="abs"/>
4912    <mod name="neg0" start="8" size="1" opt="neg"/>
4913    <mod name="swz0" start="3" size="2" default="h01">
4914      <opt>h00</opt>
4915      <opt>h10</opt>
4916      <opt>h01</opt>
4917      <opt>h11</opt>
4918    </mod>
4919    <mod name="round" start="9" size="2">
4920      <opt>none</opt>
4921      <opt>rtp</opt>
4922      <opt>rtn</opt>
4923      <opt>rtz</opt>
4924    </mod>
4925  </ins>
4926
4927  <ins name="FRSQ.f16" mask="0xffec0" exact="0x67280" table="true" unit="add">
4928    <src start="0" mask="0xf7"/>
4929    <mod name="neg0" start="3" size="1" opt="neg"/>
4930    <mod name="abs0" start="4" size="1" opt="abs"/>
4931    <mod name="divzero" start="5" size="1" opt="divzero"/>
4932    <mod name="lane0" start="8" size="1" default="h0">
4933      <opt>h0</opt>
4934      <opt>h1</opt>
4935    </mod>
4936  </ins>
4937
4938  <ins name="FRSQ.f32" mask="0xfffa0" exact="0x66100" table="true" unit="add">
4939    <src start="0" mask="0xf7"/>
4940    <mod name="widen0" size="2">
4941      <opt>none</opt>
4942    </mod>
4943    <mod name="neg0" start="3" size="1" opt="neg"/>
4944    <mod name="abs0" start="4" size="1" opt="abs"/>
4945    <derived start="6" size="1">
4946      <eq left="widen0" right="#none"/>
4947      <reserved/>
4948    </derived>
4949  </ins>
4950
4951  <ins name="FRSQ_APPROX.f32" table="true" unit="add">
4952    <src start="0" mask="0xf7"/>
4953    <mod name="widen0" size="2">
4954      <opt>none</opt>
4955      <opt>h0</opt>
4956      <opt>h1</opt>
4957    </mod>
4958    <mod name="neg0" start="3" size="1" opt="neg"/>
4959    <mod name="abs0" start="4" size="1" opt="abs"/>
4960    <mod name="divzero" start="5" size="1" opt="divzero"/>
4961    <encoding mask="0xfffc0" exact="0x67100">
4962      <eq left="widen0" right="#none"/>
4963    </encoding>
4964    <encoding mask="0xfff40" exact="0x67140">
4965      <neq left="widen0" right="#none"/>
4966      <derived start="7" size="1">
4967        <eq left="widen0" right="#h0"/>
4968        <eq left="widen0" right="#h1"/>
4969      </derived>
4970    </encoding>
4971  </ins>
4972
4973  <ins name="FSINCOS_OFFSET.u6" mask="0xffff0" exact="0x67aa0" table="true" unit="add">
4974    <src start="0" mask="0xf7"/>
4975    <mod name="scale" start="3" size="1" opt="scale"/>
4976  </ins>
4977
4978  <ins name="FSIN_TABLE.u6" mask="0xfffe8" exact="0x67a80" table="true" unit="add">
4979    <src start="0" mask="0xf7"/>
4980    <mod name="offset" start="4" size="1" opt="offset"/>
4981  </ins>
4982
4983  <ins name="HADD.s32" mask="0xfefc0" exact="0xbc640" unit="add">
4984    <src start="0"/>
4985    <src start="3"/>
4986    <mod name="round" start="12" size="1" default="rtn">
4987      <opt>rtn</opt>
4988      <opt>rtp</opt>
4989    </mod>
4990  </ins>
4991
4992  <ins name="HADD.u32" mask="0xfefc0" exact="0xbc6c0" unit="add">
4993    <src start="0"/>
4994    <src start="3"/>
4995    <mod name="round" start="12" size="1" default="rtn">
4996      <opt>rtn</opt>
4997      <opt>rtp</opt>
4998    </mod>
4999  </ins>
5000
5001  <ins name="HADD.v2s16" mask="0xfe9c0" exact="0xbc840" unit="add">
5002    <src start="0"/>
5003    <src start="3"/>
5004    <mod name="round" start="12" size="1" default="rtn">
5005      <opt>rtn</opt>
5006      <opt>rtp</opt>
5007    </mod>
5008    <mod name="swap1" start="9" size="1" default="h01">
5009      <opt>h01</opt>
5010      <opt>h10</opt>
5011    </mod>
5012    <mod name="swap0" start="10" size="1" default="h01">
5013      <opt>h01</opt>
5014      <opt>h10</opt>
5015    </mod>
5016  </ins>
5017
5018  <ins name="HADD.v2u16" mask="0xfe9c0" exact="0xbc8c0" unit="add">
5019    <src start="0"/>
5020    <src start="3"/>
5021    <mod name="round" start="12" size="1" default="rtn">
5022      <opt>rtn</opt>
5023      <opt>rtp</opt>
5024    </mod>
5025    <mod name="swap1" start="9" size="1" default="h01">
5026      <opt>h01</opt>
5027      <opt>h10</opt>
5028    </mod>
5029    <mod name="swap0" start="10" size="1" default="h01">
5030      <opt>h01</opt>
5031      <opt>h10</opt>
5032    </mod>
5033  </ins>
5034
5035  <ins name="HADD.v4s8" mask="0xfefc0" exact="0xbc440" unit="add">
5036    <src start="0"/>
5037    <src start="3"/>
5038    <mod name="round" start="12" size="1" default="rtn">
5039      <opt>rtn</opt>
5040      <opt>rtp</opt>
5041    </mod>
5042  </ins>
5043
5044  <ins name="HADD.v4u8" mask="0xfefc0" exact="0xbc4c0" unit="add">
5045    <src start="0"/>
5046    <src start="3"/>
5047    <mod name="round" start="12" size="1" default="rtn">
5048      <opt>rtn</opt>
5049      <opt>rtp</opt>
5050    </mod>
5051  </ins>
5052
5053  <ins name="IABS.s32" mask="0xffff8" exact="0x3dea0" unit="add">
5054    <src start="0"/>
5055  </ins>
5056
5057  <ins name="IABS.v2s16" mask="0xfffc8" exact="0x3de88" unit="add">
5058    <src start="0"/>
5059    <mod name="swz0" start="4" size="2" default="h01">
5060      <opt>h00</opt>
5061      <opt>h10</opt>
5062      <opt>h01</opt>
5063      <opt>h11</opt>
5064    </mod>
5065  </ins>
5066
5067  <ins name="IABS.v4s8" mask="0xffff8" exact="0x3deb0" unit="add">
5068    <src start="0"/>
5069  </ins>
5070
5071  <ins name="IADD.s32" unit="add">
5072    <src start="0"/>
5073    <src start="3"/>
5074    <mod name="saturate" start="8" size="1" opt="sat"/>
5075    <mod name="lanes1" size="3">
5076      <opt>none</opt>
5077      <opt>h0</opt>
5078      <opt>h1</opt>
5079      <opt>b0</opt>
5080      <opt>b1</opt>
5081      <opt>b2</opt>
5082      <opt>b3</opt>
5083    </mod>
5084    <encoding mask="0xffec0" exact="0xbc600">
5085      <eq left="lanes1" right="#none"/>
5086    </encoding>
5087    <encoding mask="0xffcc0" exact="0xbec00">
5088      <or>
5089        <eq left="lanes1" right="#h0"/>
5090        <eq left="lanes1" right="#h1"/>
5091      </or>
5092      <derived start="9" size="1">
5093        <eq left="lanes1" right="#h0"/>
5094        <eq left="lanes1" right="#h1"/>
5095      </derived>
5096    </encoding>
5097    <encoding mask="0xff8c0" exact="0xbe000">
5098      <or>
5099        <eq left="lanes1" right="#b0"/>
5100        <eq left="lanes1" right="#b1"/>
5101        <eq left="lanes1" right="#b2"/>
5102        <eq left="lanes1" right="#b3"/>
5103      </or>
5104      <derived start="9" size="2">
5105        <eq left="lanes1" right="#b0"/>
5106        <eq left="lanes1" right="#b1"/>
5107        <eq left="lanes1" right="#b2"/>
5108        <eq left="lanes1" right="#b3"/>
5109      </derived>
5110    </encoding>
5111  </ins>
5112
5113  <ins name="IADD.u32" unit="add">
5114    <src start="0"/>
5115    <src start="3"/>
5116    <mod name="saturate" start="8" size="1" opt="sat"/>
5117    <mod name="lanes1" size="3">
5118      <opt>none</opt>
5119      <opt>h0</opt>
5120      <opt>h1</opt>
5121      <opt>b0</opt>
5122      <opt>b1</opt>
5123      <opt>b2</opt>
5124      <opt>b3</opt>
5125    </mod>
5126    <encoding mask="0xffe40" exact="0xbc600">
5127      <eq left="lanes1" right="#none"/>
5128      <derived start="7" size="1">
5129        <and alias="true">
5130          <eq left="saturate" right="#none"/>
5131          <eq left="lanes1" right="#none"/>
5132        </and>
5133        <or>
5134          <eq left="saturate" right="#sat"/>
5135          <neq left="lanes1" right="#none"/>
5136        </or>
5137      </derived>
5138    </encoding>
5139    <encoding mask="0xffc40" exact="0xbec00">
5140      <or>
5141        <eq left="lanes1" right="#h0"/>
5142        <eq left="lanes1" right="#h1"/>
5143      </or>
5144      <derived start="7" size="1">
5145        <and alias="true">
5146          <eq left="saturate" right="#none"/>
5147          <eq left="lanes1" right="#none"/>
5148        </and>
5149        <or>
5150          <eq left="saturate" right="#sat"/>
5151          <neq left="lanes1" right="#none"/>
5152        </or>
5153      </derived>
5154      <derived start="9" size="1">
5155        <eq left="lanes1" right="#h0"/>
5156        <eq left="lanes1" right="#h1"/>
5157      </derived>
5158    </encoding>
5159    <encoding mask="0xff840" exact="0xbe000">
5160      <or>
5161        <eq left="lanes1" right="#b0"/>
5162        <eq left="lanes1" right="#b1"/>
5163        <eq left="lanes1" right="#b2"/>
5164        <eq left="lanes1" right="#b3"/>
5165      </or>
5166      <derived start="7" size="1">
5167        <and alias="true">
5168          <eq left="saturate" right="#none"/>
5169          <eq left="lanes1" right="#none"/>
5170        </and>
5171        <or>
5172          <eq left="saturate" right="#sat"/>
5173          <neq left="lanes1" right="#none"/>
5174        </or>
5175      </derived>
5176      <derived start="9" size="2">
5177        <eq left="lanes1" right="#b0"/>
5178        <eq left="lanes1" right="#b1"/>
5179        <eq left="lanes1" right="#b2"/>
5180        <eq left="lanes1" right="#b3"/>
5181      </derived>
5182    </encoding>
5183  </ins>
5184
5185  <ins name="IADD.v2s16" unit="add">
5186    <src start="0"/>
5187    <src start="3"/>
5188    <mod name="saturate" start="8" size="1" opt="sat"/>
5189    <mod name="lanes0" size="1" default="h01">
5190      <opt>h01</opt>
5191      <opt>h10</opt>
5192    </mod>
5193    <mod name="lanes1" size="3" default="h01">
5194      <opt>h01</opt>
5195      <opt>h10</opt>
5196      <opt>h00</opt>
5197      <opt>h11</opt>
5198      <opt>b01</opt>
5199      <opt>b23</opt>
5200    </mod>
5201    <encoding mask="0xff8c0" exact="0xbc800">
5202      <and>
5203        <or>
5204          <eq left="lanes0" right="#h01"/>
5205          <eq left="lanes0" right="#h10"/>
5206        </or>
5207        <or>
5208          <eq left="lanes1" right="#h01"/>
5209          <eq left="lanes1" right="#h10"/>
5210        </or>
5211      </and>
5212      <derived start="9" size="1">
5213        <eq left="lanes1" right="#h01"/>
5214        <eq left="lanes1" right="#h10"/>
5215      </derived>
5216      <derived start="10" size="1">
5217        <eq left="lanes0" right="#h01"/>
5218        <eq left="lanes0" right="#h10"/>
5219      </derived>
5220    </encoding>
5221    <encoding mask="0xffcc0" exact="0xbec40">
5222      <and>
5223        <eq left="lanes0" right="#h01"/>
5224        <or>
5225          <eq left="lanes1" right="#h00"/>
5226          <eq left="lanes1" right="#h11"/>
5227        </or>
5228      </and>
5229      <derived start="9" size="1">
5230        <eq left="lanes1" right="#h00"/>
5231        <eq left="lanes1" right="#h11"/>
5232      </derived>
5233    </encoding>
5234    <encoding mask="0xffcc0" exact="0xbe800">
5235      <and>
5236        <eq left="lanes0" right="#h01"/>
5237        <or>
5238          <eq left="lanes1" right="#b01"/>
5239          <eq left="lanes1" right="#b23"/>
5240        </or>
5241      </and>
5242      <derived start="9" size="1">
5243        <eq left="lanes1" right="#b01"/>
5244        <eq left="lanes1" right="#b23"/>
5245      </derived>
5246    </encoding>
5247  </ins>
5248
5249  <ins name="IADD.v2u16" unit="add">
5250    <src start="0"/>
5251    <src start="3"/>
5252    <mod name="saturate" start="8" size="1" opt="sat"/>
5253    <mod name="lanes0" size="1" default="h01">
5254      <opt>h01</opt>
5255      <opt>h10</opt>
5256    </mod>
5257    <mod name="lanes1" size="3" default="h01">
5258      <opt>h01</opt>
5259      <opt>h10</opt>
5260      <opt>h00</opt>
5261      <opt>h11</opt>
5262      <opt>b01</opt>
5263      <opt>b23</opt>
5264    </mod>
5265    <encoding mask="0xff840" exact="0xbc800">
5266      <and>
5267        <or>
5268          <eq left="lanes0" right="#h01"/>
5269          <eq left="lanes0" right="#h10"/>
5270        </or>
5271        <or>
5272          <eq left="lanes1" right="#h01"/>
5273          <eq left="lanes1" right="#h10"/>
5274        </or>
5275      </and>
5276      <derived start="7" size="1">
5277        <and alias="true">
5278          <eq left="saturate" right="#none"/>
5279          <neq left="lanes1" right="#b01"/>
5280          <neq left="lanes1" right="#b23"/>
5281        </and>
5282        <or>
5283          <eq left="saturate" right="#sat"/>
5284          <eq left="lanes1" right="#b01"/>
5285          <eq left="lanes1" right="#b23"/>
5286        </or>
5287      </derived>
5288      <derived start="9" size="1">
5289        <eq left="lanes1" right="#h01"/>
5290        <eq left="lanes1" right="#h10"/>
5291      </derived>
5292      <derived start="10" size="1">
5293        <eq left="lanes0" right="#h01"/>
5294        <eq left="lanes0" right="#h10"/>
5295      </derived>
5296    </encoding>
5297    <encoding mask="0xffc40" exact="0xbec40">
5298      <and>
5299        <eq left="lanes0" right="#h01"/>
5300        <or>
5301          <eq left="lanes1" right="#h00"/>
5302          <eq left="lanes1" right="#h11"/>
5303        </or>
5304      </and>
5305      <derived start="7" size="1">
5306        <and alias="true">
5307          <eq left="saturate" right="#none"/>
5308          <neq left="lanes1" right="#b01"/>
5309          <neq left="lanes1" right="#b23"/>
5310        </and>
5311        <or>
5312          <eq left="saturate" right="#sat"/>
5313          <eq left="lanes1" right="#b01"/>
5314          <eq left="lanes1" right="#b23"/>
5315        </or>
5316      </derived>
5317      <derived start="9" size="1">
5318        <eq left="lanes1" right="#h00"/>
5319        <eq left="lanes1" right="#h11"/>
5320      </derived>
5321    </encoding>
5322    <encoding mask="0xffc40" exact="0xbe800">
5323      <and>
5324        <eq left="lanes0" right="#h01"/>
5325        <or>
5326          <eq left="lanes1" right="#b01"/>
5327          <eq left="lanes1" right="#b23"/>
5328        </or>
5329      </and>
5330      <derived start="7" size="1">
5331        <and alias="true">
5332          <eq left="saturate" right="#none"/>
5333          <neq left="lanes1" right="#b01"/>
5334          <neq left="lanes1" right="#b23"/>
5335        </and>
5336        <or>
5337          <eq left="saturate" right="#sat"/>
5338          <eq left="lanes1" right="#b01"/>
5339          <eq left="lanes1" right="#b23"/>
5340        </or>
5341      </derived>
5342      <derived start="9" size="1">
5343        <eq left="lanes1" right="#b01"/>
5344        <eq left="lanes1" right="#b23"/>
5345      </derived>
5346    </encoding>
5347  </ins>
5348
5349  <ins name="IADD.v4s8" unit="add">
5350    <src start="0"/>
5351    <src start="3"/>
5352    <mod name="saturate" start="8" size="1" opt="sat"/>
5353    <mod name="lanes0" size="3" default="b0123">
5354      <opt>b0123</opt>
5355    </mod>
5356    <mod name="lanes1" size="3" default="b0123">
5357      <opt>b0123</opt>
5358      <opt>b0000</opt>
5359      <opt>b1111</opt>
5360      <opt>b2222</opt>
5361      <opt>b3333</opt>
5362      <opt>b0101</opt>
5363      <opt>b2323</opt>
5364    </mod>
5365    <encoding mask="0xffec0" exact="0xbc400">
5366      <and>
5367        <eq left="lanes0" right="#b0123"/>
5368        <eq left="lanes1" right="#b0123"/>
5369      </and>
5370    </encoding>
5371    <encoding mask="0xff8c0" exact="0xbe040">
5372      <and>
5373        <eq left="lanes0" right="#b0123"/>
5374        <or>
5375          <eq left="lanes1" right="#b0000"/>
5376          <eq left="lanes1" right="#b1111"/>
5377          <eq left="lanes1" right="#b2222"/>
5378          <eq left="lanes1" right="#b3333"/>
5379        </or>
5380      </and>
5381      <derived start="9" size="2">
5382        <eq left="lanes1" right="#b0000"/>
5383        <eq left="lanes1" right="#b1111"/>
5384        <eq left="lanes1" right="#b2222"/>
5385        <eq left="lanes1" right="#b3333"/>
5386      </derived>
5387    </encoding>
5388    <encoding mask="0xffcc0" exact="0xbe840">
5389      <and>
5390        <eq left="lanes0" right="#b0123"/>
5391        <or>
5392          <eq left="lanes1" right="#b0101"/>
5393          <eq left="lanes1" right="#b2323"/>
5394        </or>
5395      </and>
5396      <derived start="9" size="1">
5397        <eq left="lanes1" right="#b0101"/>
5398        <eq left="lanes1" right="#b2323"/>
5399      </derived>
5400    </encoding>
5401  </ins>
5402
5403  <ins name="IADD.v4u8" unit="add">
5404    <src start="0"/>
5405    <src start="3"/>
5406    <mod name="saturate" start="8" size="1" opt="sat"/>
5407    <mod name="lanes0" size="3" default="b0123">
5408      <opt>b0123</opt>
5409    </mod>
5410    <mod name="lanes1" size="3" default="b0123">
5411      <opt>b0123</opt>
5412      <opt>b0000</opt>
5413      <opt>b1111</opt>
5414      <opt>b2222</opt>
5415      <opt>b3333</opt>
5416      <opt>b0101</opt>
5417      <opt>b2323</opt>
5418    </mod>
5419    <encoding mask="0xffe40" exact="0xbc400">
5420      <and>
5421        <eq left="lanes0" right="#b0123"/>
5422        <eq left="lanes1" right="#b0123"/>
5423      </and>
5424      <derived start="7" size="1">
5425        <eq alias="true" left="saturate" right="#none"/>
5426        <eq left="saturate" right="#sat"/>
5427      </derived>
5428    </encoding>
5429    <encoding mask="0xff840" exact="0xbe040">
5430      <and>
5431        <eq left="lanes0" right="#b0123"/>
5432        <or>
5433          <eq left="lanes1" right="#b0000"/>
5434          <eq left="lanes1" right="#b1111"/>
5435          <eq left="lanes1" right="#b2222"/>
5436          <eq left="lanes1" right="#b3333"/>
5437        </or>
5438      </and>
5439      <derived start="7" size="1">
5440        <eq alias="true" left="saturate" right="#none"/>
5441        <eq left="saturate" right="#sat"/>
5442      </derived>
5443      <derived start="9" size="2">
5444        <eq left="lanes1" right="#b0000"/>
5445        <eq left="lanes1" right="#b1111"/>
5446        <eq left="lanes1" right="#b2222"/>
5447        <eq left="lanes1" right="#b3333"/>
5448      </derived>
5449    </encoding>
5450    <encoding mask="0xffc40" exact="0xbe840">
5451      <and>
5452        <eq left="lanes0" right="#b0123"/>
5453        <or>
5454          <eq left="lanes1" right="#b0101"/>
5455          <eq left="lanes1" right="#b2323"/>
5456        </or>
5457      </and>
5458      <derived start="7" size="1">
5459        <eq alias="true" left="saturate" right="#none"/>
5460        <eq left="saturate" right="#sat"/>
5461      </derived>
5462      <derived start="9" size="1">
5463        <eq left="lanes1" right="#b0101"/>
5464        <eq left="lanes1" right="#b2323"/>
5465      </derived>
5466    </encoding>
5467  </ins>
5468
5469  <ins name="ICMP.i32" mask="0xffb80" exact="0x7b300" unit="add">
5470    <src start="0"/>
5471    <src start="3"/>
5472    <mod name="result_type" start="10" size="1" default="i1">
5473      <opt>i1</opt>
5474      <opt>m1</opt>
5475    </mod>
5476    <mod name="cmpf" start="6" size="1">
5477      <opt>eq</opt>
5478      <opt>ne</opt>
5479    </mod>
5480  </ins>
5481
5482  <ins name="ICMP.s32" mask="0xffb80" exact="0x7b200" unit="add">
5483    <src start="0"/>
5484    <src start="3"/>
5485    <mod name="result_type" start="10" size="1" default="i1">
5486      <opt>i1</opt>
5487      <opt>m1</opt>
5488    </mod>
5489    <mod name="cmpf" size="2">
5490      <opt>gt</opt>
5491      <opt>ge</opt>
5492      <opt>lt</opt>
5493      <opt>le</opt>
5494    </mod>
5495    <derived start="6" size="1">
5496      <eq left="cmpf" right="#gt"/>
5497      <eq left="cmpf" right="#ge"/>
5498    </derived>
5499    <swap left="0" right="1">
5500      <or>
5501        <eq left="cmpf" right="#lt"/>
5502        <eq left="cmpf" right="#le"/>
5503      </or>
5504      <rewrite name="cmpf">
5505        <map from="lt" to="gt"/>
5506        <map from="le" to="ge"/>
5507      </rewrite>
5508    </swap>
5509  </ins>
5510
5511  <ins name="ICMP.u32" mask="0xffb80" exact="0x7b280" unit="add">
5512    <src start="0"/>
5513    <src start="3"/>
5514    <mod name="result_type" start="10" size="1" default="i1">
5515      <opt>i1</opt>
5516      <opt>m1</opt>
5517    </mod>
5518    <mod name="cmpf" size="2">
5519      <opt>gt</opt>
5520      <opt>ge</opt>
5521      <opt>lt</opt>
5522      <opt>le</opt>
5523    </mod>
5524    <derived start="6" size="1">
5525      <eq left="cmpf" right="#gt"/>
5526      <eq left="cmpf" right="#ge"/>
5527    </derived>
5528    <swap left="0" right="1">
5529      <or>
5530        <eq left="cmpf" right="#lt"/>
5531        <eq left="cmpf" right="#le"/>
5532      </or>
5533      <rewrite name="cmpf">
5534        <map from="lt" to="gt"/>
5535        <map from="le" to="ge"/>
5536      </rewrite>
5537    </swap>
5538  </ins>
5539
5540  <ins name="ICMP.v2i16" mask="0xff000" exact="0x7a000" unit="add">
5541    <src start="0"/>
5542    <src start="3"/>
5543    <mod name="swz0" start="6" size="2" default="h01">
5544      <opt>h00</opt>
5545      <opt>h10</opt>
5546      <opt>h01</opt>
5547      <opt>h11</opt>
5548    </mod>
5549    <mod name="swz1" start="8" size="2" default="h01">
5550      <opt>h00</opt>
5551      <opt>h10</opt>
5552      <opt>h01</opt>
5553      <opt>h11</opt>
5554    </mod>
5555    <mod name="result_type" start="10" size="1" default="i1">
5556      <opt>i1</opt>
5557      <opt>m1</opt>
5558    </mod>
5559    <mod name="cmpf" start="11" size="1">
5560      <opt>eq</opt>
5561      <opt>ne</opt>
5562    </mod>
5563  </ins>
5564
5565  <ins name="ICMP.v2s16" mask="0xfe800" exact="0x78000" unit="add">
5566    <src start="0"/>
5567    <src start="3"/>
5568    <mod name="swz0" start="6" size="2" default="h01">
5569      <opt>h00</opt>
5570      <opt>h10</opt>
5571      <opt>h01</opt>
5572      <opt>h11</opt>
5573    </mod>
5574    <mod name="swz1" start="8" size="2" default="h01">
5575      <opt>h00</opt>
5576      <opt>h10</opt>
5577      <opt>h01</opt>
5578      <opt>h11</opt>
5579    </mod>
5580    <mod name="result_type" start="10" size="1" default="i1">
5581      <opt>i1</opt>
5582      <opt>m1</opt>
5583    </mod>
5584    <mod name="cmpf" size="2">
5585      <opt>gt</opt>
5586      <opt>ge</opt>
5587      <opt>lt</opt>
5588      <opt>le</opt>
5589    </mod>
5590    <derived start="12" size="1">
5591      <eq left="cmpf" right="#gt"/>
5592      <eq left="cmpf" right="#ge"/>
5593    </derived>
5594    <swap left="0" right="1">
5595      <or>
5596        <eq left="cmpf" right="#lt"/>
5597        <eq left="cmpf" right="#le"/>
5598      </or>
5599      <rewrite name="cmpf">
5600        <map from="lt" to="gt"/>
5601        <map from="le" to="ge"/>
5602      </rewrite>
5603    </swap>
5604  </ins>
5605
5606  <ins name="ICMP.v2u16" mask="0xfe800" exact="0x78800" unit="add">
5607    <src start="0"/>
5608    <src start="3"/>
5609    <mod name="swz0" start="6" size="2" default="h01">
5610      <opt>h00</opt>
5611      <opt>h10</opt>
5612      <opt>h01</opt>
5613      <opt>h11</opt>
5614    </mod>
5615    <mod name="swz1" start="8" size="2" default="h01">
5616      <opt>h00</opt>
5617      <opt>h10</opt>
5618      <opt>h01</opt>
5619      <opt>h11</opt>
5620    </mod>
5621    <mod name="result_type" start="10" size="1" default="i1">
5622      <opt>i1</opt>
5623      <opt>m1</opt>
5624    </mod>
5625    <mod name="cmpf" size="2">
5626      <opt>gt</opt>
5627      <opt>ge</opt>
5628      <opt>lt</opt>
5629      <opt>le</opt>
5630    </mod>
5631    <derived start="12" size="1">
5632      <eq left="cmpf" right="#gt"/>
5633      <eq left="cmpf" right="#ge"/>
5634    </derived>
5635    <swap left="0" right="1">
5636      <or>
5637        <eq left="cmpf" right="#lt"/>
5638        <eq left="cmpf" right="#le"/>
5639      </or>
5640      <rewrite name="cmpf">
5641        <map from="lt" to="gt"/>
5642        <map from="le" to="ge"/>
5643      </rewrite>
5644    </swap>
5645  </ins>
5646
5647  <ins name="ICMP.v4i8" mask="0xffb80" exact="0x7b100" unit="add">
5648    <src start="0"/>
5649    <src start="3"/>
5650    <mod name="result_type" start="10" size="1" default="i1">
5651      <opt>i1</opt>
5652      <opt>m1</opt>
5653    </mod>
5654    <mod name="cmpf" start="6" size="1">
5655      <opt>eq</opt>
5656      <opt>ne</opt>
5657    </mod>
5658  </ins>
5659
5660  <ins name="ICMP.v4s8" mask="0xffb80" exact="0x7b000" unit="add">
5661    <src start="0"/>
5662    <src start="3"/>
5663    <mod name="result_type" start="10" size="1" default="i1">
5664      <opt>i1</opt>
5665      <opt>m1</opt>
5666    </mod>
5667    <mod name="cmpf" size="2">
5668      <opt>gt</opt>
5669      <opt>ge</opt>
5670      <opt>lt</opt>
5671      <opt>le</opt>
5672    </mod>
5673    <derived start="6" size="1">
5674      <eq left="cmpf" right="#gt"/>
5675      <eq left="cmpf" right="#ge"/>
5676    </derived>
5677    <swap left="0" right="1">
5678      <or>
5679        <eq left="cmpf" right="#lt"/>
5680        <eq left="cmpf" right="#le"/>
5681      </or>
5682      <rewrite name="cmpf">
5683        <map from="lt" to="gt"/>
5684        <map from="le" to="ge"/>
5685      </rewrite>
5686    </swap>
5687  </ins>
5688
5689  <ins name="ICMP.v4u8" mask="0xffb80" exact="0x7b080" unit="add">
5690    <src start="0"/>
5691    <src start="3"/>
5692    <mod name="result_type" start="10" size="1" default="i1">
5693      <opt>i1</opt>
5694      <opt>m1</opt>
5695    </mod>
5696    <mod name="cmpf" size="2">
5697      <opt>gt</opt>
5698      <opt>ge</opt>
5699      <opt>lt</opt>
5700      <opt>le</opt>
5701    </mod>
5702    <derived start="6" size="1">
5703      <eq left="cmpf" right="#gt"/>
5704      <eq left="cmpf" right="#ge"/>
5705    </derived>
5706    <swap left="0" right="1">
5707      <or>
5708        <eq left="cmpf" right="#lt"/>
5709        <eq left="cmpf" right="#le"/>
5710      </or>
5711      <rewrite name="cmpf">
5712        <map from="lt" to="gt"/>
5713        <map from="le" to="ge"/>
5714      </rewrite>
5715    </swap>
5716  </ins>
5717
5718  <ins name="ICMPF.i32" mask="0xffe00" exact="0x7be00" unit="add">
5719    <src start="0"/>
5720    <src start="3"/>
5721    <src start="6"/>
5722  </ins>
5723
5724  <ins name="ICMPI.i32" mask="0xffb80" exact="0x7b900" unit="add">
5725    <src start="0"/>
5726    <src start="3"/>
5727    <mod name="result_type" start="10" size="1" default="i1">
5728      <opt>i1</opt>
5729      <opt>m1</opt>
5730    </mod>
5731    <mod name="cmpf" start="6" size="1">
5732      <opt>eq</opt>
5733      <opt>ne</opt>
5734    </mod>
5735  </ins>
5736
5737  <ins name="ICMPI.s32" mask="0xffb80" exact="0x7b800" unit="add">
5738    <src start="0"/>
5739    <src start="3"/>
5740    <mod name="result_type" start="10" size="1" default="i1">
5741      <opt>i1</opt>
5742      <opt>m1</opt>
5743    </mod>
5744    <mod name="cmpf" start="6" size="1">
5745      <opt>gt</opt>
5746      <opt>ge</opt>
5747    </mod>
5748  </ins>
5749
5750  <ins name="ICMPI.u32" mask="0xffb80" exact="0x7b880" unit="add">
5751    <src start="0"/>
5752    <src start="3"/>
5753    <mod name="result_type" start="10" size="1" default="i1">
5754      <opt>i1</opt>
5755      <opt>m1</opt>
5756    </mod>
5757    <mod name="cmpf" start="6" size="1">
5758      <opt>gt</opt>
5759      <opt>ge</opt>
5760    </mod>
5761  </ins>
5762
5763  <ins name="ICMPM.i32" mask="0xffe00" exact="0x7ba00" unit="add">
5764    <src start="0"/>
5765    <src start="3"/>
5766    <src start="6"/>
5767  </ins>
5768
5769  <ins name="ILOGB.f32" mask="0xfffe0" exact="0x3d9e0" unit="add">
5770    <src start="0"/>
5771    <mod name="widen0" start="3" size="2">
5772      <reserved/>
5773      <opt>none</opt>
5774      <opt>h0</opt>
5775      <opt>h1</opt>
5776    </mod>
5777  </ins>
5778
5779  <ins name="ILOGB.v2f16" mask="0xfffe0" exact="0x3d9c0" unit="add">
5780    <src start="0"/>
5781    <mod name="swz0" start="3" size="2" default="h01">
5782      <opt>h00</opt>
5783      <opt>h10</opt>
5784      <opt>h01</opt>
5785      <opt>h11</opt>
5786    </mod>
5787  </ins>
5788
5789  <ins name="IMOV_FMA" mask="0xffff7" exact="0xd7820" unit="add">
5790    <mod name="threads" start="3" size="1" default="odd">
5791      <opt>even</opt>
5792      <opt>odd</opt>
5793    </mod>
5794  </ins>
5795
5796  <ins name="ISUB.s32" unit="add">
5797    <src start="0"/>
5798    <src start="3"/>
5799    <mod name="saturate" start="8" size="1" opt="sat"/>
5800    <mod name="lanes1" size="3">
5801      <opt>none</opt>
5802      <opt>h0</opt>
5803      <opt>h1</opt>
5804      <opt>b0</opt>
5805      <opt>b1</opt>
5806      <opt>b2</opt>
5807      <opt>b3</opt>
5808    </mod>
5809    <encoding mask="0xffec0" exact="0xbd600">
5810      <eq left="lanes1" right="#none"/>
5811    </encoding>
5812    <encoding mask="0xffcc0" exact="0xbfc00">
5813      <or>
5814        <eq left="lanes1" right="#h0"/>
5815        <eq left="lanes1" right="#h1"/>
5816      </or>
5817      <derived start="9" size="1">
5818        <eq left="lanes1" right="#h0"/>
5819        <eq left="lanes1" right="#h1"/>
5820      </derived>
5821    </encoding>
5822    <encoding mask="0xff8c0" exact="0xbf000">
5823      <or>
5824        <eq left="lanes1" right="#b0"/>
5825        <eq left="lanes1" right="#b1"/>
5826        <eq left="lanes1" right="#b2"/>
5827        <eq left="lanes1" right="#b3"/>
5828      </or>
5829      <derived start="9" size="2">
5830        <eq left="lanes1" right="#b0"/>
5831        <eq left="lanes1" right="#b1"/>
5832        <eq left="lanes1" right="#b2"/>
5833        <eq left="lanes1" right="#b3"/>
5834      </derived>
5835    </encoding>
5836  </ins>
5837
5838  <ins name="ISUB.u32" unit="add">
5839    <src start="0"/>
5840    <src start="3"/>
5841    <mod name="saturate" start="8" size="1" opt="sat"/>
5842    <mod name="lanes1" size="3">
5843      <opt>none</opt>
5844      <opt>h0</opt>
5845      <opt>h1</opt>
5846      <opt>b0</opt>
5847      <opt>b1</opt>
5848      <opt>b2</opt>
5849      <opt>b3</opt>
5850    </mod>
5851    <encoding mask="0xffe40" exact="0xbd600">
5852      <eq left="lanes1" right="#none"/>
5853      <derived start="7" size="1">
5854        <and alias="true">
5855          <eq left="saturate" right="#none"/>
5856          <eq left="lanes1" right="#none"/>
5857        </and>
5858        <or>
5859          <eq left="saturate" right="#sat"/>
5860          <neq left="lanes1" right="#none"/>
5861        </or>
5862      </derived>
5863    </encoding>
5864    <encoding mask="0xffc40" exact="0xbfc00">
5865      <or>
5866        <eq left="lanes1" right="#h0"/>
5867        <eq left="lanes1" right="#h1"/>
5868      </or>
5869      <derived start="7" size="1">
5870        <and alias="true">
5871          <eq left="saturate" right="#none"/>
5872          <eq left="lanes1" right="#none"/>
5873        </and>
5874        <or>
5875          <eq left="saturate" right="#sat"/>
5876          <neq left="lanes1" right="#none"/>
5877        </or>
5878      </derived>
5879      <derived start="9" size="1">
5880        <eq left="lanes1" right="#h0"/>
5881        <eq left="lanes1" right="#h1"/>
5882      </derived>
5883    </encoding>
5884    <encoding mask="0xff840" exact="0xbf000">
5885      <or>
5886        <eq left="lanes1" right="#b0"/>
5887        <eq left="lanes1" right="#b1"/>
5888        <eq left="lanes1" right="#b2"/>
5889        <eq left="lanes1" right="#b3"/>
5890      </or>
5891      <derived start="7" size="1">
5892        <and alias="true">
5893          <eq left="saturate" right="#none"/>
5894          <eq left="lanes1" right="#none"/>
5895        </and>
5896        <or>
5897          <eq left="saturate" right="#sat"/>
5898          <neq left="lanes1" right="#none"/>
5899        </or>
5900      </derived>
5901      <derived start="9" size="2">
5902        <eq left="lanes1" right="#b0"/>
5903        <eq left="lanes1" right="#b1"/>
5904        <eq left="lanes1" right="#b2"/>
5905        <eq left="lanes1" right="#b3"/>
5906      </derived>
5907    </encoding>
5908  </ins>
5909
5910  <ins name="ISUB.v2s16" unit="add">
5911    <src start="0"/>
5912    <src start="3"/>
5913    <mod name="saturate" start="8" size="1" opt="sat"/>
5914    <mod name="lanes0" size="1" default="h01">
5915      <opt>h01</opt>
5916      <opt>h10</opt>
5917    </mod>
5918    <mod name="lanes1" size="3" default="h01">
5919      <opt>h01</opt>
5920      <opt>h10</opt>
5921      <opt>h00</opt>
5922      <opt>h11</opt>
5923      <opt>b01</opt>
5924      <opt>b23</opt>
5925    </mod>
5926    <encoding mask="0xff8c0" exact="0xbd800">
5927      <and>
5928        <or>
5929          <eq left="lanes0" right="#h01"/>
5930          <eq left="lanes0" right="#h10"/>
5931        </or>
5932        <or>
5933          <eq left="lanes1" right="#h01"/>
5934          <eq left="lanes1" right="#h10"/>
5935        </or>
5936      </and>
5937      <derived start="9" size="1">
5938        <eq left="lanes1" right="#h01"/>
5939        <eq left="lanes1" right="#h10"/>
5940      </derived>
5941      <derived start="10" size="1">
5942        <eq left="lanes0" right="#h01"/>
5943        <eq left="lanes0" right="#h10"/>
5944      </derived>
5945    </encoding>
5946    <encoding mask="0xffcc0" exact="0xbfc40">
5947      <and>
5948        <eq left="lanes0" right="#h01"/>
5949        <or>
5950          <eq left="lanes1" right="#h00"/>
5951          <eq left="lanes1" right="#h11"/>
5952        </or>
5953      </and>
5954      <derived start="9" size="1">
5955        <eq left="lanes1" right="#h00"/>
5956        <eq left="lanes1" right="#h11"/>
5957      </derived>
5958    </encoding>
5959    <encoding mask="0xffcc0" exact="0xbf800">
5960      <and>
5961        <eq left="lanes0" right="#h01"/>
5962        <or>
5963          <eq left="lanes1" right="#b01"/>
5964          <eq left="lanes1" right="#b23"/>
5965        </or>
5966      </and>
5967      <derived start="9" size="1">
5968        <eq left="lanes1" right="#b01"/>
5969        <eq left="lanes1" right="#b23"/>
5970      </derived>
5971    </encoding>
5972  </ins>
5973
5974  <ins name="ISUB.v2u16" unit="add">
5975    <src start="0"/>
5976    <src start="3"/>
5977    <mod name="saturate" start="8" size="1" opt="sat"/>
5978    <mod name="lanes0" size="1" default="h01">
5979      <opt>h01</opt>
5980      <opt>h10</opt>
5981    </mod>
5982    <mod name="lanes1" size="3" default="h01">
5983      <opt>h01</opt>
5984      <opt>h10</opt>
5985      <opt>h00</opt>
5986      <opt>h11</opt>
5987      <opt>b01</opt>
5988      <opt>b23</opt>
5989    </mod>
5990    <encoding mask="0xff840" exact="0xbd800">
5991      <and>
5992        <or>
5993          <eq left="lanes0" right="#h01"/>
5994          <eq left="lanes0" right="#h10"/>
5995        </or>
5996        <or>
5997          <eq left="lanes1" right="#h01"/>
5998          <eq left="lanes1" right="#h10"/>
5999        </or>
6000      </and>
6001      <derived start="7" size="1">
6002        <and alias="true">
6003          <eq left="saturate" right="#none"/>
6004          <neq left="lanes1" right="#b01"/>
6005          <neq left="lanes1" right="#b23"/>
6006        </and>
6007        <or>
6008          <eq left="saturate" right="#sat"/>
6009          <eq left="lanes1" right="#b01"/>
6010          <eq left="lanes1" right="#b23"/>
6011        </or>
6012      </derived>
6013      <derived start="9" size="1">
6014        <eq left="lanes1" right="#h01"/>
6015        <eq left="lanes1" right="#h10"/>
6016      </derived>
6017      <derived start="10" size="1">
6018        <eq left="lanes0" right="#h01"/>
6019        <eq left="lanes0" right="#h10"/>
6020      </derived>
6021    </encoding>
6022    <encoding mask="0xffc40" exact="0xbfc40">
6023      <and>
6024        <eq left="lanes0" right="#h01"/>
6025        <or>
6026          <eq left="lanes1" right="#h00"/>
6027          <eq left="lanes1" right="#h11"/>
6028        </or>
6029      </and>
6030      <derived start="7" size="1">
6031        <and alias="true">
6032          <eq left="saturate" right="#none"/>
6033          <neq left="lanes1" right="#b01"/>
6034          <neq left="lanes1" right="#b23"/>
6035        </and>
6036        <or>
6037          <eq left="saturate" right="#sat"/>
6038          <eq left="lanes1" right="#b01"/>
6039          <eq left="lanes1" right="#b23"/>
6040        </or>
6041      </derived>
6042      <derived start="9" size="1">
6043        <eq left="lanes1" right="#h00"/>
6044        <eq left="lanes1" right="#h11"/>
6045      </derived>
6046    </encoding>
6047    <encoding mask="0xffc40" exact="0xbf800">
6048      <and>
6049        <eq left="lanes0" right="#h01"/>
6050        <or>
6051          <eq left="lanes1" right="#b01"/>
6052          <eq left="lanes1" right="#b23"/>
6053        </or>
6054      </and>
6055      <derived start="7" size="1">
6056        <and alias="true">
6057          <eq left="saturate" right="#none"/>
6058          <neq left="lanes1" right="#b01"/>
6059          <neq left="lanes1" right="#b23"/>
6060        </and>
6061        <or>
6062          <eq left="saturate" right="#sat"/>
6063          <eq left="lanes1" right="#b01"/>
6064          <eq left="lanes1" right="#b23"/>
6065        </or>
6066      </derived>
6067      <derived start="9" size="1">
6068        <eq left="lanes1" right="#b01"/>
6069        <eq left="lanes1" right="#b23"/>
6070      </derived>
6071    </encoding>
6072  </ins>
6073
6074  <ins name="ISUB.v4s8" unit="add">
6075    <src start="0"/>
6076    <src start="3"/>
6077    <mod name="saturate" start="8" size="1" opt="sat"/>
6078    <mod name="lanes0" size="3" default="b0123">
6079      <opt>b0123</opt>
6080    </mod>
6081    <mod name="lanes1" size="3" default="b0123">
6082      <opt>b0123</opt>
6083      <opt>b0000</opt>
6084      <opt>b1111</opt>
6085      <opt>b2222</opt>
6086      <opt>b3333</opt>
6087      <opt>b0101</opt>
6088      <opt>b2323</opt>
6089    </mod>
6090    <encoding mask="0xffec0" exact="0xbd400">
6091      <and>
6092        <eq left="lanes0" right="#b0123"/>
6093        <eq left="lanes1" right="#b0123"/>
6094      </and>
6095    </encoding>
6096    <encoding mask="0xff8c0" exact="0xbf040">
6097      <and>
6098        <eq left="lanes0" right="#b0123"/>
6099        <or>
6100          <eq left="lanes1" right="#b0000"/>
6101          <eq left="lanes1" right="#b1111"/>
6102          <eq left="lanes1" right="#b2222"/>
6103          <eq left="lanes1" right="#b3333"/>
6104        </or>
6105      </and>
6106      <derived start="9" size="2">
6107        <eq left="lanes1" right="#b0000"/>
6108        <eq left="lanes1" right="#b1111"/>
6109        <eq left="lanes1" right="#b2222"/>
6110        <eq left="lanes1" right="#b3333"/>
6111      </derived>
6112    </encoding>
6113    <encoding mask="0xffcc0" exact="0xbf840">
6114      <and>
6115        <eq left="lanes0" right="#b0123"/>
6116        <or>
6117          <eq left="lanes1" right="#b0101"/>
6118          <eq left="lanes1" right="#b2323"/>
6119        </or>
6120      </and>
6121      <derived start="9" size="1">
6122        <eq left="lanes1" right="#b0101"/>
6123        <eq left="lanes1" right="#b2323"/>
6124      </derived>
6125    </encoding>
6126  </ins>
6127
6128  <ins name="ISUB.v4u8" unit="add">
6129    <src start="0"/>
6130    <src start="3"/>
6131    <mod name="saturate" start="8" size="1" opt="sat"/>
6132    <mod name="lanes0" size="3" default="b0123">
6133      <opt>b0123</opt>
6134    </mod>
6135    <mod name="lanes1" size="3" default="b0123">
6136      <opt>b0123</opt>
6137      <opt>b0000</opt>
6138      <opt>b1111</opt>
6139      <opt>b2222</opt>
6140      <opt>b3333</opt>
6141      <opt>b0101</opt>
6142      <opt>b2323</opt>
6143    </mod>
6144    <encoding mask="0xffe40" exact="0xbd400">
6145      <and>
6146        <eq left="lanes0" right="#b0123"/>
6147        <eq left="lanes1" right="#b0123"/>
6148      </and>
6149      <derived start="7" size="1">
6150        <eq alias="true" left="saturate" right="#none"/>
6151        <eq left="saturate" right="#sat"/>
6152      </derived>
6153    </encoding>
6154    <encoding mask="0xff840" exact="0xbf040">
6155      <and>
6156        <eq left="lanes0" right="#b0123"/>
6157        <or>
6158          <eq left="lanes1" right="#b0000"/>
6159          <eq left="lanes1" right="#b1111"/>
6160          <eq left="lanes1" right="#b2222"/>
6161          <eq left="lanes1" right="#b3333"/>
6162        </or>
6163      </and>
6164      <derived start="7" size="1">
6165        <eq alias="true" left="saturate" right="#none"/>
6166        <eq left="saturate" right="#sat"/>
6167      </derived>
6168      <derived start="9" size="2">
6169        <eq left="lanes1" right="#b0000"/>
6170        <eq left="lanes1" right="#b1111"/>
6171        <eq left="lanes1" right="#b2222"/>
6172        <eq left="lanes1" right="#b3333"/>
6173      </derived>
6174    </encoding>
6175    <encoding mask="0xffc40" exact="0xbf840">
6176      <and>
6177        <eq left="lanes0" right="#b0123"/>
6178        <or>
6179          <eq left="lanes1" right="#b0101"/>
6180          <eq left="lanes1" right="#b2323"/>
6181        </or>
6182      </and>
6183      <derived start="7" size="1">
6184        <eq alias="true" left="saturate" right="#none"/>
6185        <eq left="saturate" right="#sat"/>
6186      </derived>
6187      <derived start="9" size="1">
6188        <eq left="lanes1" right="#b0101"/>
6189        <eq left="lanes1" right="#b2323"/>
6190      </derived>
6191    </encoding>
6192  </ins>
6193
6194  <ins name="JUMP" mask="0xffe3f" exact="0x6fe34" last="true" dests="0" unit="add">
6195    <src start="6" mask="0xf7"/>
6196  </ins>
6197
6198  <ins name="KABOOM" mask="0xffff8" exact="0xd7858" message="job" dests="0" unit="add">
6199    <src start="0"/>
6200  </ins>
6201
6202  <ins name="LDEXP.f32" mask="0xffe00" exact="0x74c00" unit="add">
6203    <src start="0"/>
6204    <src start="3"/>
6205    <mod name="round" start="6" size="3">
6206      <opt>none</opt>
6207      <opt>rtp</opt>
6208      <opt>rtn</opt>
6209      <opt>rtz</opt>
6210      <opt>rtna</opt>
6211      <reserved/>
6212      <opt>inf</opt>
6213      <opt>inf0</opt>
6214    </mod>
6215  </ins>
6216
6217  <ins name="LDEXP.v2f16" mask="0xffe00" exact="0x74e00" unit="add">
6218    <src start="0"/>
6219    <src start="3"/>
6220    <mod name="round" start="6" size="3">
6221      <opt>none</opt>
6222      <opt>rtp</opt>
6223      <opt>rtn</opt>
6224      <opt>rtz</opt>
6225      <opt>rtna</opt>
6226      <reserved/>
6227      <opt>inf</opt>
6228      <opt>inf0</opt>
6229    </mod>
6230  </ins>
6231
6232  <ins name="LD_ATTR" staging="w=format" message="attribute" unit="add">
6233    <src start="0"/>
6234    <src start="3"/>
6235    <src start="6"/>
6236    <mod name="register_format" size="4">
6237      <opt>f16</opt>
6238      <opt>f32</opt>
6239      <opt>s32</opt>
6240      <opt>u32</opt>
6241      <opt>s16</opt>
6242      <opt>u16</opt>
6243      <opt>f64</opt>
6244      <opt>i64</opt>
6245      <opt>auto</opt>
6246    </mod>
6247    <mod name="vecsize" start="11" size="2">
6248      <opt>none</opt>
6249      <opt>v2</opt>
6250      <opt>v3</opt>
6251      <opt>v4</opt>
6252    </mod>
6253    <encoding mask="0xf0600" exact="0x40400">
6254      <neq left="register_format" right="#auto"/>
6255      <derived start="13" size="3">
6256        <eq left="register_format" right="#f16"/>
6257        <eq left="register_format" right="#f32"/>
6258        <eq left="register_format" right="#s32"/>
6259        <eq left="register_format" right="#u32"/>
6260        <eq left="register_format" right="#s16"/>
6261        <eq left="register_format" right="#u16"/>
6262        <eq left="register_format" right="#f64"/>
6263        <eq left="register_format" right="#i64"/>
6264      </derived>
6265    </encoding>
6266    <encoding mask="0xfe600" exact="0xc4400">
6267      <eq left="register_format" right="#auto"/>
6268    </encoding>
6269  </ins>
6270
6271  <ins name="LD_ATTR_IMM" staging="w=format" message="attribute" unit="add">
6272    <src start="0"/>
6273    <src start="3"/>
6274    <immediate name="attribute_index" start="6" size="4"/>
6275    <mod name="register_format" size="4">
6276      <opt>f16</opt>
6277      <opt>f32</opt>
6278      <opt>s32</opt>
6279      <opt>u32</opt>
6280      <opt>s16</opt>
6281      <opt>u16</opt>
6282      <opt>f64</opt>
6283      <opt>i64</opt>
6284      <opt>auto</opt>
6285    </mod>
6286    <mod name="vecsize" start="11" size="2">
6287      <opt>none</opt>
6288      <opt>v2</opt>
6289      <opt>v3</opt>
6290      <opt>v4</opt>
6291    </mod>
6292    <encoding mask="0xf0400" exact="0x40000">
6293      <neq left="register_format" right="#auto"/>
6294      <derived start="13" size="3">
6295        <eq left="register_format" right="#f16"/>
6296        <eq left="register_format" right="#f32"/>
6297        <eq left="register_format" right="#s32"/>
6298        <eq left="register_format" right="#u32"/>
6299        <eq left="register_format" right="#s16"/>
6300        <eq left="register_format" right="#u16"/>
6301        <eq left="register_format" right="#f64"/>
6302        <eq left="register_format" right="#i64"/>
6303      </derived>
6304    </encoding>
6305    <encoding mask="0xfe400" exact="0xc4000">
6306      <eq left="register_format" right="#auto"/>
6307    </encoding>
6308  </ins>
6309
6310  <ins name="LD_ATTR_TEX" staging="w=format" message="attribute" unit="add">
6311    <src start="0"/>
6312    <src start="3"/>
6313    <src start="6"/>
6314    <mod name="register_format" size="4">
6315      <opt>f16</opt>
6316      <opt>f32</opt>
6317      <opt>s32</opt>
6318      <opt>u32</opt>
6319      <opt>s16</opt>
6320      <opt>u16</opt>
6321      <opt>f64</opt>
6322      <opt>i64</opt>
6323      <opt>auto</opt>
6324    </mod>
6325    <mod name="vecsize" start="11" size="2">
6326      <opt>none</opt>
6327      <opt>v2</opt>
6328      <opt>v3</opt>
6329      <opt>v4</opt>
6330    </mod>
6331    <encoding mask="0xf0600" exact="0x40600">
6332      <neq left="register_format" right="#auto"/>
6333      <derived start="13" size="3">
6334        <eq left="register_format" right="#f16"/>
6335        <eq left="register_format" right="#f32"/>
6336        <eq left="register_format" right="#s32"/>
6337        <eq left="register_format" right="#u32"/>
6338        <eq left="register_format" right="#s16"/>
6339        <eq left="register_format" right="#u16"/>
6340        <eq left="register_format" right="#f64"/>
6341        <eq left="register_format" right="#i64"/>
6342      </derived>
6343    </encoding>
6344    <encoding mask="0xfe600" exact="0xc4600">
6345      <eq left="register_format" right="#auto"/>
6346    </encoding>
6347  </ins>
6348
6349  <ins name="LD_CVT" staging="w=format" mask="0xff800" exact="0xc9000" message="load" unit="add">
6350    <src start="0"/>
6351    <src start="3"/>
6352    <src start="6" mask="0xf7"/>
6353    <mod name="register_format" size="4" pseudo="true">
6354      <opt>f16</opt>
6355      <opt>f32</opt>
6356      <opt>s32</opt>
6357      <opt>u32</opt>
6358      <opt>s16</opt>
6359      <opt>u16</opt>
6360      <opt>f64</opt>
6361      <opt>i64</opt>
6362    </mod>
6363    <mod name="vecsize" start="9" size="2">
6364      <opt>none</opt>
6365      <opt>v2</opt>
6366      <opt>v3</opt>
6367      <opt>v4</opt>
6368    </mod>
6369  </ins>
6370
6371  <ins name="LD_GCLK.u64" staging="w=2" mask="0xffff8" exact="0xd7800" message="attribute" unit="add">
6372    <mod name="source" start="0" size="3">
6373      <reserved/>
6374      <reserved/>
6375      <reserved/>
6376      <reserved/>
6377      <reserved/>
6378      <reserved/>
6379      <opt>system_timestamp</opt>
6380      <opt>cycle_counter</opt>
6381    </mod>
6382  </ins>
6383
6384  <ins name="LD_TILE" staging="w=format" mask="0xff800" exact="0xcb000" message="tile" unit="add">
6385    <src start="0"/>
6386    <src start="3"/>
6387    <src start="6" mask="0xf7"/>
6388    <mod name="vecsize" start="9" size="2">
6389      <opt>none</opt>
6390      <opt>v2</opt>
6391      <opt>v3</opt>
6392      <opt>v4</opt>
6393    </mod>
6394    <mod name="register_format" size="3" pseudo="true">
6395      <opt>f32</opt>
6396      <opt>f16</opt>
6397      <opt>u32</opt>
6398      <opt>s32</opt>
6399    </mod>
6400  </ins>
6401
6402  <ins name="LD_VAR" staging="w=format" message="varying" unit="add">
6403    <src start="0"/>
6404    <src start="3"/>
6405    <mod name="vecsize" start="8" size="2">
6406      <opt>none</opt>
6407      <opt>v2</opt>
6408      <opt>v3</opt>
6409      <opt>v4</opt>
6410    </mod>
6411    <mod name="update" size="2">
6412      <opt>store</opt>
6413      <opt>retrieve</opt>
6414      <opt>conditional</opt>
6415      <opt>clobber</opt>
6416    </mod>
6417    <mod name="register_format" size="2">
6418      <opt>f32</opt>
6419      <opt>f16</opt>
6420      <opt>auto</opt>
6421    </mod>
6422    <mod name="sample" size="3">
6423      <opt>center</opt>
6424      <opt>centroid</opt>
6425      <opt>sample</opt>
6426      <opt>explicit</opt>
6427      <opt>none</opt>
6428    </mod>
6429    <encoding mask="0x7c0c0" exact="0x500c0">
6430      <neq left="register_format" right="#auto"/>
6431      <derived start="19" size="1">
6432        <eq left="register_format" right="#f32"/>
6433        <eq left="register_format" right="#f16"/>
6434      </derived>
6435      <derived start="10" size="4">
6436        <and>
6437          <eq left="sample" right="#center"/>
6438          <eq left="update" right="#store"/>
6439        </and>
6440        <and>
6441          <eq left="sample" right="#centroid"/>
6442          <eq left="update" right="#store"/>
6443        </and>
6444        <and>
6445          <eq left="sample" right="#sample"/>
6446          <eq left="update" right="#store"/>
6447        </and>
6448        <and>
6449          <eq left="sample" right="#explicit"/>
6450          <eq left="update" right="#store"/>
6451        </and>
6452        <and>
6453          <eq left="sample" right="#none"/>
6454          <eq left="update" right="#retrieve"/>
6455        </and>
6456        <reserved/>
6457        <reserved/>
6458        <reserved/>
6459        <and>
6460          <eq left="sample" right="#center"/>
6461          <eq left="update" right="#conditional"/>
6462        </and>
6463        <and>
6464          <eq left="sample" right="#centroid"/>
6465          <eq left="update" right="#conditional"/>
6466        </and>
6467        <and>
6468          <eq left="sample" right="#center"/>
6469          <eq left="update" right="#clobber"/>
6470        </and>
6471        <and>
6472          <eq left="sample" right="#centroid"/>
6473          <eq left="update" right="#clobber"/>
6474        </and>
6475        <and>
6476          <eq left="sample" right="#sample"/>
6477          <eq left="update" right="#clobber"/>
6478        </and>
6479        <and>
6480          <eq left="sample" right="#explicit"/>
6481          <eq left="update" right="#clobber"/>
6482        </and>
6483        <reserved/>
6484        <reserved/>
6485      </derived>
6486    </encoding>
6487    <encoding mask="0xfc0c0" exact="0xcc0c0">
6488      <eq left="register_format" right="#auto"/>
6489      <derived start="10" size="4">
6490        <and>
6491          <eq left="sample" right="#center"/>
6492          <eq left="update" right="#store"/>
6493        </and>
6494        <and>
6495          <eq left="sample" right="#centroid"/>
6496          <eq left="update" right="#store"/>
6497        </and>
6498        <and>
6499          <eq left="sample" right="#sample"/>
6500          <eq left="update" right="#store"/>
6501        </and>
6502        <and>
6503          <eq left="sample" right="#explicit"/>
6504          <eq left="update" right="#store"/>
6505        </and>
6506        <and>
6507          <eq left="sample" right="#none"/>
6508          <eq left="update" right="#retrieve"/>
6509        </and>
6510        <reserved/>
6511        <reserved/>
6512        <reserved/>
6513        <and>
6514          <eq left="sample" right="#center"/>
6515          <eq left="update" right="#conditional"/>
6516        </and>
6517        <and>
6518          <eq left="sample" right="#centroid"/>
6519          <eq left="update" right="#conditional"/>
6520        </and>
6521        <and>
6522          <eq left="sample" right="#center"/>
6523          <eq left="update" right="#clobber"/>
6524        </and>
6525        <and>
6526          <eq left="sample" right="#centroid"/>
6527          <eq left="update" right="#clobber"/>
6528        </and>
6529        <and>
6530          <eq left="sample" right="#sample"/>
6531          <eq left="update" right="#clobber"/>
6532        </and>
6533        <and>
6534          <eq left="sample" right="#explicit"/>
6535          <eq left="update" right="#clobber"/>
6536        </and>
6537        <reserved/>
6538        <reserved/>
6539      </derived>
6540    </encoding>
6541  </ins>
6542
6543  <ins name="LD_VAR_FLAT" staging="w=format" message="varying" unit="add">
6544    <src start="3"/>
6545    <mod name="vecsize" start="8" size="2">
6546      <opt>none</opt>
6547      <opt>v2</opt>
6548      <opt>v3</opt>
6549      <opt>v4</opt>
6550    </mod>
6551    <mod name="register_format" size="3">
6552      <opt>f32</opt>
6553      <opt>f16</opt>
6554      <opt>u32</opt>
6555      <opt>s32</opt>
6556      <opt>auto</opt>
6557    </mod>
6558    <mod name="function" start="0" size="3">
6559      <reserved/>
6560      <reserved/>
6561      <reserved/>
6562      <opt>none</opt>
6563      <reserved/>
6564      <reserved/>
6565      <opt>and</opt>
6566      <opt>or</opt>
6567    </mod>
6568    <encoding mask="0x7f8c0" exact="0x538c0">
6569      <neq left="register_format" right="#auto"/>
6570      <derived start="10" size="1">
6571        <or>
6572          <eq left="register_format" right="#f32"/>
6573          <eq left="register_format" right="#f16"/>
6574        </or>
6575        <or>
6576          <eq left="register_format" right="#u32"/>
6577          <eq left="register_format" right="#s32"/>
6578        </or>
6579      </derived>
6580      <derived start="19" size="1">
6581        <or>
6582          <eq left="register_format" right="#f32"/>
6583          <eq left="register_format" right="#u32"/>
6584        </or>
6585        <or>
6586          <eq left="register_format" right="#f16"/>
6587          <eq left="register_format" right="#s32"/>
6588        </or>
6589      </derived>
6590    </encoding>
6591    <encoding mask="0xffcc0" exact="0xcf8c0">
6592      <eq left="register_format" right="#auto"/>
6593    </encoding>
6594  </ins>
6595
6596  <ins name="LD_VAR_FLAT_IMM" staging="w=format" message="varying" unit="add">
6597    <immediate name="index" start="3" size="5"/>
6598    <mod name="vecsize" start="8" size="2">
6599      <opt>none</opt>
6600      <opt>v2</opt>
6601      <opt>v3</opt>
6602      <opt>v4</opt>
6603    </mod>
6604    <mod name="register_format" size="3">
6605      <opt>f32</opt>
6606      <opt>f16</opt>
6607      <opt>u32</opt>
6608      <opt>s32</opt>
6609      <opt>auto</opt>
6610    </mod>
6611    <mod name="function" start="0" size="3">
6612      <reserved/>
6613      <reserved/>
6614      <reserved/>
6615      <opt>none</opt>
6616      <reserved/>
6617      <reserved/>
6618      <opt>and</opt>
6619      <opt>or</opt>
6620    </mod>
6621    <encoding mask="0x7f800" exact="0x53800">
6622      <neq left="register_format" right="#auto"/>
6623      <derived start="10" size="1">
6624        <or>
6625          <eq left="register_format" right="#f32"/>
6626          <eq left="register_format" right="#f16"/>
6627        </or>
6628        <or>
6629          <eq left="register_format" right="#u32"/>
6630          <eq left="register_format" right="#s32"/>
6631        </or>
6632      </derived>
6633      <derived start="19" size="1">
6634        <or>
6635          <eq left="register_format" right="#f32"/>
6636          <eq left="register_format" right="#u32"/>
6637        </or>
6638        <or>
6639          <eq left="register_format" right="#f16"/>
6640          <eq left="register_format" right="#s32"/>
6641        </or>
6642      </derived>
6643    </encoding>
6644    <encoding mask="0xffc00" exact="0xcf800">
6645      <eq left="register_format" right="#auto"/>
6646    </encoding>
6647  </ins>
6648
6649  <ins name="LD_VAR_IMM" staging="w=format" message="varying" unit="add">
6650    <src start="0"/>
6651    <immediate name="index" start="3" size="5"/>
6652    <mod name="vecsize" start="8" size="2">
6653      <opt>none</opt>
6654      <opt>v2</opt>
6655      <opt>v3</opt>
6656      <opt>v4</opt>
6657    </mod>
6658    <mod name="update" size="2">
6659      <opt>store</opt>
6660      <opt>retrieve</opt>
6661      <opt>conditional</opt>
6662      <opt>clobber</opt>
6663    </mod>
6664    <mod name="register_format" size="2">
6665      <opt>f32</opt>
6666      <opt>f16</opt>
6667      <opt>auto</opt>
6668    </mod>
6669    <mod name="sample" size="3">
6670      <opt>center</opt>
6671      <opt>centroid</opt>
6672      <opt>sample</opt>
6673      <opt>explicit</opt>
6674      <opt>none</opt>
6675    </mod>
6676    <encoding mask="0x7c000" exact="0x50000">
6677      <neq left="register_format" right="#auto"/>
6678      <derived start="19" size="1">
6679        <eq left="register_format" right="#f32"/>
6680        <eq left="register_format" right="#f16"/>
6681      </derived>
6682      <derived start="10" size="4">
6683        <and>
6684          <eq left="sample" right="#center"/>
6685          <eq left="update" right="#store"/>
6686        </and>
6687        <and>
6688          <eq left="sample" right="#centroid"/>
6689          <eq left="update" right="#store"/>
6690        </and>
6691        <and>
6692          <eq left="sample" right="#sample"/>
6693          <eq left="update" right="#store"/>
6694        </and>
6695        <and>
6696          <eq left="sample" right="#explicit"/>
6697          <eq left="update" right="#store"/>
6698        </and>
6699        <and>
6700          <eq left="sample" right="#none"/>
6701          <eq left="update" right="#retrieve"/>
6702        </and>
6703        <reserved/>
6704        <reserved/>
6705        <reserved/>
6706        <and>
6707          <eq left="sample" right="#center"/>
6708          <eq left="update" right="#conditional"/>
6709        </and>
6710        <and>
6711          <eq left="sample" right="#centroid"/>
6712          <eq left="update" right="#conditional"/>
6713        </and>
6714        <and>
6715          <eq left="sample" right="#center"/>
6716          <eq left="update" right="#clobber"/>
6717        </and>
6718        <and>
6719          <eq left="sample" right="#centroid"/>
6720          <eq left="update" right="#clobber"/>
6721        </and>
6722        <and>
6723          <eq left="sample" right="#sample"/>
6724          <eq left="update" right="#clobber"/>
6725        </and>
6726        <and>
6727          <eq left="sample" right="#explicit"/>
6728          <eq left="update" right="#clobber"/>
6729        </and>
6730        <reserved/>
6731        <reserved/>
6732      </derived>
6733    </encoding>
6734    <encoding mask="0xfc000" exact="0xcc000">
6735      <eq left="register_format" right="#auto"/>
6736      <derived start="10" size="4">
6737        <and>
6738          <eq left="sample" right="#center"/>
6739          <eq left="update" right="#store"/>
6740        </and>
6741        <and>
6742          <eq left="sample" right="#centroid"/>
6743          <eq left="update" right="#store"/>
6744        </and>
6745        <and>
6746          <eq left="sample" right="#sample"/>
6747          <eq left="update" right="#store"/>
6748        </and>
6749        <and>
6750          <eq left="sample" right="#explicit"/>
6751          <eq left="update" right="#store"/>
6752        </and>
6753        <and>
6754          <eq left="sample" right="#none"/>
6755          <eq left="update" right="#retrieve"/>
6756        </and>
6757        <reserved/>
6758        <reserved/>
6759        <reserved/>
6760        <and>
6761          <eq left="sample" right="#center"/>
6762          <eq left="update" right="#conditional"/>
6763        </and>
6764        <and>
6765          <eq left="sample" right="#centroid"/>
6766          <eq left="update" right="#conditional"/>
6767        </and>
6768        <and>
6769          <eq left="sample" right="#center"/>
6770          <eq left="update" right="#clobber"/>
6771        </and>
6772        <and>
6773          <eq left="sample" right="#centroid"/>
6774          <eq left="update" right="#clobber"/>
6775        </and>
6776        <and>
6777          <eq left="sample" right="#sample"/>
6778          <eq left="update" right="#clobber"/>
6779        </and>
6780        <and>
6781          <eq left="sample" right="#explicit"/>
6782          <eq left="update" right="#clobber"/>
6783        </and>
6784        <reserved/>
6785        <reserved/>
6786      </derived>
6787    </encoding>
6788  </ins>
6789
6790  <ins name="LD_VAR_SPECIAL" staging="w=format" message="varying" unit="add">
6791    <src start="0"/>
6792    <mod name="varying_name" size="5">
6793      <opt>point</opt>
6794      <reserved/>
6795      <opt>frag_w</opt>
6796      <opt>frag_z</opt>
6797    </mod>
6798    <mod name="vecsize" size="2">
6799      <opt>none</opt>
6800      <opt>v2</opt>
6801      <opt>v3</opt>
6802      <opt>v4</opt>
6803    </mod>
6804    <mod name="update" size="2">
6805      <opt>store</opt>
6806      <opt>retrieve</opt>
6807      <opt>conditional</opt>
6808      <opt>clobber</opt>
6809    </mod>
6810    <mod name="register_format" size="2">
6811      <opt>f32</opt>
6812      <opt>f16</opt>
6813      <opt>auto</opt>
6814    </mod>
6815    <mod name="sample" size="3">
6816      <opt>center</opt>
6817      <opt>centroid</opt>
6818      <opt>sample</opt>
6819      <opt>explicit</opt>
6820      <opt>none</opt>
6821    </mod>
6822    <encoding mask="0x7c3e0" exact="0x500a0">
6823      <neq left="register_format" right="#auto"/>
6824      <derived start="3" size="2">
6825        <and>
6826          <eq left="varying_name" right="#point"/>
6827          <eq left="vecsize" right="#v2"/>
6828          <eq left="update" right="#clobber"/>
6829        </and>
6830        <reserved/>
6831        <and>
6832          <eq left="varying_name" right="#frag_w"/>
6833          <eq left="vecsize" right="#none"/>
6834          <eq left="update" right="#clobber"/>
6835        </and>
6836        <and>
6837          <eq left="varying_name" right="#frag_z"/>
6838          <eq left="vecsize" right="#none"/>
6839          <eq left="update" right="#clobber"/>
6840          <neq left="sample" right="#explicit"/>
6841          <neq left="register_format" right="#auto"/>
6842        </and>
6843      </derived>
6844      <derived start="19" size="1">
6845        <eq left="register_format" right="#f32"/>
6846        <eq left="register_format" right="#f16"/>
6847      </derived>
6848      <derived start="10" size="4">
6849        <and>
6850          <eq left="sample" right="#center"/>
6851          <eq left="update" right="#store"/>
6852        </and>
6853        <and>
6854          <eq left="sample" right="#centroid"/>
6855          <eq left="update" right="#store"/>
6856        </and>
6857        <and>
6858          <eq left="sample" right="#sample"/>
6859          <eq left="update" right="#store"/>
6860        </and>
6861        <and>
6862          <eq left="sample" right="#explicit"/>
6863          <eq left="update" right="#store"/>
6864        </and>
6865        <and>
6866          <eq left="sample" right="#none"/>
6867          <eq left="update" right="#retrieve"/>
6868        </and>
6869        <reserved/>
6870        <reserved/>
6871        <reserved/>
6872        <and>
6873          <eq left="sample" right="#center"/>
6874          <eq left="update" right="#conditional"/>
6875        </and>
6876        <and>
6877          <eq left="sample" right="#centroid"/>
6878          <eq left="update" right="#conditional"/>
6879        </and>
6880        <and>
6881          <eq left="sample" right="#center"/>
6882          <eq left="update" right="#clobber"/>
6883        </and>
6884        <and>
6885          <eq left="sample" right="#centroid"/>
6886          <eq left="update" right="#clobber"/>
6887        </and>
6888        <and>
6889          <eq left="sample" right="#sample"/>
6890          <eq left="update" right="#clobber"/>
6891        </and>
6892        <and>
6893          <eq left="sample" right="#explicit"/>
6894          <eq left="update" right="#clobber"/>
6895        </and>
6896        <reserved/>
6897        <reserved/>
6898      </derived>
6899    </encoding>
6900    <encoding mask="0xfc3e0" exact="0xcc0a0">
6901      <eq left="register_format" right="#auto"/>
6902      <derived start="3" size="2">
6903        <and>
6904          <eq left="varying_name" right="#point"/>
6905          <eq left="vecsize" right="#v2"/>
6906          <eq left="update" right="#clobber"/>
6907        </and>
6908        <reserved/>
6909        <and>
6910          <eq left="varying_name" right="#frag_w"/>
6911          <eq left="vecsize" right="#none"/>
6912          <eq left="update" right="#clobber"/>
6913        </and>
6914        <and>
6915          <eq left="varying_name" right="#frag_z"/>
6916          <eq left="vecsize" right="#none"/>
6917          <eq left="update" right="#clobber"/>
6918          <neq left="sample" right="#explicit"/>
6919          <neq left="register_format" right="#auto"/>
6920        </and>
6921      </derived>
6922      <derived start="10" size="4">
6923        <and>
6924          <eq left="sample" right="#center"/>
6925          <eq left="update" right="#store"/>
6926        </and>
6927        <and>
6928          <eq left="sample" right="#centroid"/>
6929          <eq left="update" right="#store"/>
6930        </and>
6931        <and>
6932          <eq left="sample" right="#sample"/>
6933          <eq left="update" right="#store"/>
6934        </and>
6935        <and>
6936          <eq left="sample" right="#explicit"/>
6937          <eq left="update" right="#store"/>
6938        </and>
6939        <and>
6940          <eq left="sample" right="#none"/>
6941          <eq left="update" right="#retrieve"/>
6942        </and>
6943        <reserved/>
6944        <reserved/>
6945        <reserved/>
6946        <and>
6947          <eq left="sample" right="#center"/>
6948          <eq left="update" right="#conditional"/>
6949        </and>
6950        <and>
6951          <eq left="sample" right="#centroid"/>
6952          <eq left="update" right="#conditional"/>
6953        </and>
6954        <and>
6955          <eq left="sample" right="#center"/>
6956          <eq left="update" right="#clobber"/>
6957        </and>
6958        <and>
6959          <eq left="sample" right="#centroid"/>
6960          <eq left="update" right="#clobber"/>
6961        </and>
6962        <and>
6963          <eq left="sample" right="#sample"/>
6964          <eq left="update" right="#clobber"/>
6965        </and>
6966        <and>
6967          <eq left="sample" right="#explicit"/>
6968          <eq left="update" right="#clobber"/>
6969        </and>
6970        <reserved/>
6971        <reserved/>
6972      </derived>
6973    </encoding>
6974  </ins>
6975
6976  <ins name="LEA_ATTR" staging="w=3" message="attribute" unit="add">
6977    <src start="0"/>
6978    <src start="3"/>
6979    <src start="6"/>
6980    <mod name="register_format" size="4">
6981      <opt>f16</opt>
6982      <opt>f32</opt>
6983      <opt>s32</opt>
6984      <opt>u32</opt>
6985      <opt>s16</opt>
6986      <opt>u16</opt>
6987      <opt>f64</opt>
6988      <opt>i64</opt>
6989      <opt>auto</opt>
6990    </mod>
6991    <encoding mask="0xfc600" exact="0xc0400">
6992      <neq left="register_format" right="#auto"/>
6993      <derived start="11" size="3">
6994        <eq left="register_format" right="#f16"/>
6995        <eq left="register_format" right="#f32"/>
6996        <eq left="register_format" right="#s32"/>
6997        <eq left="register_format" right="#u32"/>
6998        <eq left="register_format" right="#s16"/>
6999        <eq left="register_format" right="#u16"/>
7000        <eq left="register_format" right="#f64"/>
7001        <eq left="register_format" right="#i64"/>
7002      </derived>
7003    </encoding>
7004    <encoding mask="0xffe00" exact="0xc8400">
7005      <eq left="register_format" right="#auto"/>
7006    </encoding>
7007  </ins>
7008
7009  <ins name="LEA_ATTR_IMM" staging="w=3" message="attribute" unit="add">
7010    <src start="0"/>
7011    <src start="3"/>
7012    <immediate name="attribute_index" start="6" size="4"/>
7013    <mod name="register_format" size="4">
7014      <opt>f16</opt>
7015      <opt>f32</opt>
7016      <opt>s32</opt>
7017      <opt>u32</opt>
7018      <opt>s16</opt>
7019      <opt>u16</opt>
7020      <opt>f64</opt>
7021      <opt>i64</opt>
7022      <opt>auto</opt>
7023    </mod>
7024    <encoding mask="0xfc400" exact="0xc0000">
7025      <neq left="register_format" right="#auto"/>
7026      <derived start="11" size="3">
7027        <eq left="register_format" right="#f16"/>
7028        <eq left="register_format" right="#f32"/>
7029        <eq left="register_format" right="#s32"/>
7030        <eq left="register_format" right="#u32"/>
7031        <eq left="register_format" right="#s16"/>
7032        <eq left="register_format" right="#u16"/>
7033        <eq left="register_format" right="#f64"/>
7034        <eq left="register_format" right="#i64"/>
7035      </derived>
7036    </encoding>
7037    <encoding mask="0xffc00" exact="0xc8000">
7038      <eq left="register_format" right="#auto"/>
7039    </encoding>
7040  </ins>
7041
7042  <ins name="LEA_ATTR_TEX" staging="w=3" message="attribute" unit="add">
7043    <src start="0"/>
7044    <src start="3"/>
7045    <src start="6"/>
7046    <mod name="register_format" size="4">
7047      <opt>f16</opt>
7048      <opt>f32</opt>
7049      <opt>s32</opt>
7050      <opt>u32</opt>
7051      <opt>s16</opt>
7052      <opt>u16</opt>
7053      <opt>f64</opt>
7054      <opt>i64</opt>
7055      <opt>auto</opt>
7056    </mod>
7057    <encoding mask="0xfc600" exact="0xc0600">
7058      <neq left="register_format" right="#auto"/>
7059      <derived start="11" size="3">
7060        <eq left="register_format" right="#f16"/>
7061        <eq left="register_format" right="#f32"/>
7062        <eq left="register_format" right="#s32"/>
7063        <eq left="register_format" right="#u32"/>
7064        <eq left="register_format" right="#s16"/>
7065        <eq left="register_format" right="#u16"/>
7066        <eq left="register_format" right="#f64"/>
7067        <eq left="register_format" right="#i64"/>
7068      </derived>
7069    </encoding>
7070    <encoding mask="0xffe00" exact="0xc8600">
7071      <eq left="register_format" right="#auto"/>
7072    </encoding>
7073  </ins>
7074
7075  <ins name="LEA_TEX" staging="w=3" mask="0xff600" exact="0xd6600" message="attribute" unit="add">
7076    <src start="0"/>
7077    <src start="3"/>
7078    <src start="6"/>
7079    <mod name="format" start="11" size="1">
7080      <opt>u16</opt>
7081      <opt>u32</opt>
7082    </mod>
7083  </ins>
7084
7085  <ins name="LEA_TEX_IMM" staging="w=3" mask="0xff000" exact="0xd6000" message="attribute" unit="add">
7086    <src start="0"/>
7087    <src start="3"/>
7088    <immediate name="texture_index" start="6" size="5"/>
7089    <mod name="format" start="11" size="1">
7090      <opt>u16</opt>
7091      <opt>u32</opt>
7092    </mod>
7093  </ins>
7094
7095  <ins name="LOAD.i128" staging="w=4" mask="0xffe00" exact="0x61000" message="load" unit="add">
7096    <src start="0"/>
7097    <src start="3"/>
7098    <mod name="seg" start="6" size="3">
7099      <reserved/>
7100      <opt>none</opt>
7101      <opt>wls</opt>
7102      <opt>stream</opt>
7103      <opt>ubo</opt>
7104      <reserved/>
7105      <reserved/>
7106      <opt>tl</opt>
7107    </mod>
7108    <immediate name="byte_offset" size="16" pseudo="true"/>
7109  </ins>
7110
7111  <ins name="LOAD.i16" staging="w=1" message="load" unit="add">
7112    <src start="0"/>
7113    <src start="3"/>
7114    <mod name="seg" start="6" size="3">
7115      <reserved/>
7116      <opt>none</opt>
7117      <opt>wls</opt>
7118      <opt>stream</opt>
7119      <opt>ubo</opt>
7120      <reserved/>
7121      <reserved/>
7122      <opt>tl</opt>
7123    </mod>
7124    <mod name="lane_dest" size="2" default="h0">
7125      <opt>h0</opt>
7126      <opt>h1</opt>
7127      <opt>w0</opt>
7128      <opt>d0</opt>
7129    </mod>
7130    <mod name="extend" size="2">
7131      <opt>none</opt>
7132      <opt>sext</opt>
7133      <opt>zext</opt>
7134    </mod>
7135    <encoding mask="0xffc00" exact="0x60800">
7136      <and>
7137        <eq left="extend" right="#none"/>
7138        <or>
7139          <eq left="lane_dest" right="#h0"/>
7140          <eq left="lane_dest" right="#h1"/>
7141        </or>
7142      </and>
7143      <derived start="9" size="1">
7144        <eq left="lane_dest" right="#h0"/>
7145        <eq left="lane_dest" right="#h1"/>
7146      </derived>
7147    </encoding>
7148    <encoding mask="0xffc00" exact="0x63000">
7149      <and>
7150        <neq left="extend" right="#none"/>
7151        <eq left="lane_dest" right="#w0"/>
7152      </and>
7153      <derived start="9" size="1">
7154        <eq left="extend" right="#sext"/>
7155        <eq left="extend" right="#zext"/>
7156      </derived>
7157    </encoding>
7158    <encoding mask="0xffc00" exact="0x61800">
7159      <and>
7160        <neq left="extend" right="#none"/>
7161        <eq left="lane_dest" right="#d0"/>
7162      </and>
7163      <derived start="9" size="1">
7164        <eq left="extend" right="#sext"/>
7165        <eq left="extend" right="#zext"/>
7166      </derived>
7167    </encoding>
7168    <immediate name="byte_offset" size="16" pseudo="true"/>
7169  </ins>
7170
7171  <ins name="LOAD.i24" staging="w=1" mask="0xffe00" exact="0x65000" message="load" unit="add">
7172    <src start="0"/>
7173    <src start="3"/>
7174    <mod name="seg" start="6" size="3">
7175      <reserved/>
7176      <opt>none</opt>
7177      <opt>wls</opt>
7178      <opt>stream</opt>
7179      <opt>ubo</opt>
7180      <reserved/>
7181      <reserved/>
7182      <opt>tl</opt>
7183    </mod>
7184    <immediate name="byte_offset" size="16" pseudo="true"/>
7185  </ins>
7186
7187  <ins name="LOAD.i32" staging="w=1" message="load" unit="add">
7188    <src start="0"/>
7189    <src start="3"/>
7190    <mod name="seg" start="6" size="3">
7191      <reserved/>
7192      <opt>none</opt>
7193      <opt>wls</opt>
7194      <opt>stream</opt>
7195      <opt>ubo</opt>
7196      <reserved/>
7197      <reserved/>
7198      <opt>tl</opt>
7199    </mod>
7200    <mod name="lane_dest" size="1" opt="d0"/>
7201    <mod name="extend" size="2">
7202      <opt>none</opt>
7203      <opt>sext</opt>
7204      <opt>zext</opt>
7205    </mod>
7206    <encoding mask="0xffe00" exact="0x60c00">
7207      <and>
7208        <eq left="extend" right="#none"/>
7209        <eq left="lane_dest" right="#none"/>
7210      </and>
7211    </encoding>
7212    <encoding mask="0xffc00" exact="0x61c00">
7213      <and>
7214        <neq left="extend" right="#none"/>
7215        <eq left="lane_dest" right="#d0"/>
7216      </and>
7217      <derived start="9" size="1">
7218        <eq left="extend" right="#sext"/>
7219        <eq left="extend" right="#zext"/>
7220      </derived>
7221    </encoding>
7222    <immediate name="byte_offset" size="16" pseudo="true"/>
7223  </ins>
7224
7225  <ins name="LOAD.i48" staging="w=2" mask="0xffe00" exact="0x65200" message="load" unit="add">
7226    <src start="0"/>
7227    <src start="3"/>
7228    <mod name="seg" start="6" size="3">
7229      <reserved/>
7230      <opt>none</opt>
7231      <opt>wls</opt>
7232      <opt>stream</opt>
7233      <opt>ubo</opt>
7234      <reserved/>
7235      <reserved/>
7236      <opt>tl</opt>
7237    </mod>
7238    <immediate name="byte_offset" size="16" pseudo="true"/>
7239  </ins>
7240
7241  <ins name="LOAD.i64" staging="w=2" mask="0xffe00" exact="0x60e00" message="load" unit="add">
7242    <src start="0"/>
7243    <src start="3"/>
7244    <mod name="seg" start="6" size="3">
7245      <reserved/>
7246      <opt>none</opt>
7247      <opt>wls</opt>
7248      <opt>stream</opt>
7249      <opt>ubo</opt>
7250      <reserved/>
7251      <reserved/>
7252      <opt>tl</opt>
7253    </mod>
7254    <immediate name="byte_offset" size="16" pseudo="true"/>
7255  </ins>
7256
7257  <ins name="LOAD.i8" staging="w=1" message="load" unit="add">
7258    <src start="0"/>
7259    <src start="3"/>
7260    <mod name="seg" start="6" size="3">
7261      <reserved/>
7262      <opt>none</opt>
7263      <opt>wls</opt>
7264      <opt>stream</opt>
7265      <opt>ubo</opt>
7266      <reserved/>
7267      <reserved/>
7268      <opt>tl</opt>
7269    </mod>
7270    <mod name="lane_dest" size="3" default="b0">
7271      <opt>b0</opt>
7272      <opt>b1</opt>
7273      <opt>b2</opt>
7274      <opt>b3</opt>
7275      <opt>h0</opt>
7276      <opt>h1</opt>
7277      <opt>w0</opt>
7278      <opt>d0</opt>
7279    </mod>
7280    <mod name="extend" size="2">
7281      <opt>none</opt>
7282      <opt>sext</opt>
7283      <opt>zext</opt>
7284    </mod>
7285    <encoding mask="0xff800" exact="0x60000">
7286      <and>
7287        <eq left="extend" right="#none"/>
7288        <or>
7289          <eq left="lane_dest" right="#b0"/>
7290          <eq left="lane_dest" right="#b1"/>
7291          <eq left="lane_dest" right="#b2"/>
7292          <eq left="lane_dest" right="#b3"/>
7293        </or>
7294      </and>
7295      <derived start="9" size="2">
7296        <eq left="lane_dest" right="#b0"/>
7297        <eq left="lane_dest" right="#b1"/>
7298        <eq left="lane_dest" right="#b2"/>
7299        <eq left="lane_dest" right="#b3"/>
7300      </derived>
7301    </encoding>
7302    <encoding mask="0xff800" exact="0x63800">
7303      <and>
7304        <neq left="extend" right="#none"/>
7305        <or>
7306          <eq left="lane_dest" right="#h0"/>
7307          <eq left="lane_dest" right="#h1"/>
7308        </or>
7309      </and>
7310      <derived start="9" size="1">
7311        <eq left="extend" right="#sext"/>
7312        <eq left="extend" right="#zext"/>
7313      </derived>
7314      <derived start="10" size="1">
7315        <eq left="lane_dest" right="#h0"/>
7316        <eq left="lane_dest" right="#h1"/>
7317      </derived>
7318    </encoding>
7319    <encoding mask="0xffc00" exact="0x63400">
7320      <and>
7321        <neq left="extend" right="#none"/>
7322        <eq left="lane_dest" right="#w0"/>
7323      </and>
7324      <derived start="9" size="1">
7325        <eq left="extend" right="#sext"/>
7326        <eq left="extend" right="#zext"/>
7327      </derived>
7328    </encoding>
7329    <encoding mask="0xffc00" exact="0x61400">
7330      <and>
7331        <neq left="extend" right="#none"/>
7332        <eq left="lane_dest" right="#d0"/>
7333      </and>
7334      <derived start="9" size="1">
7335        <eq left="extend" right="#sext"/>
7336        <eq left="extend" right="#zext"/>
7337      </derived>
7338    </encoding>
7339    <immediate name="byte_offset" size="16" pseudo="true"/>
7340  </ins>
7341
7342  <ins name="LOAD.i96" staging="w=3" mask="0xffe00" exact="0x65400" message="load" unit="add">
7343    <src start="0"/>
7344    <src start="3"/>
7345    <mod name="seg" start="6" size="3">
7346      <reserved/>
7347      <opt>none</opt>
7348      <opt>wls</opt>
7349      <opt>stream</opt>
7350      <opt>ubo</opt>
7351      <reserved/>
7352      <reserved/>
7353      <opt>tl</opt>
7354    </mod>
7355    <immediate name="byte_offset" size="16" pseudo="true"/>
7356  </ins>
7357
7358  <ins name="LOGB.f32" mask="0xfffe0" exact="0x3d9a0" unit="add">
7359    <src start="0"/>
7360    <mod name="widen0" start="3" size="2">
7361      <reserved/>
7362      <opt>none</opt>
7363      <opt>h0</opt>
7364      <opt>h1</opt>
7365    </mod>
7366  </ins>
7367
7368  <ins name="LOGB.v2f16" mask="0xfffe0" exact="0x3d980" unit="add">
7369    <src start="0"/>
7370    <mod name="swz0" start="3" size="2" default="h01">
7371      <opt>h00</opt>
7372      <opt>h10</opt>
7373      <opt>h01</opt>
7374      <opt>h11</opt>
7375    </mod>
7376  </ins>
7377
7378  <ins name="MKVEC.v2i16" mask="0xfff00" exact="0x75300" unit="add">
7379    <src start="0"/>
7380    <src start="3"/>
7381    <mod name="lane0" start="6" size="1" default="h0">
7382      <opt>h0</opt>
7383      <opt>h1</opt>
7384    </mod>
7385    <mod name="lane1" start="7" size="1" default="h0">
7386      <opt>h0</opt>
7387      <opt>h1</opt>
7388    </mod>
7389  </ins>
7390
7391  <ins name="MOV.i32" mask="0xffff8" exact="0x3d968" unit="add">
7392    <src start="0"/>
7393  </ins>
7394
7395  <ins name="MUX.i32" mask="0xff800" exact="0x74000" unit="add">
7396    <src start="0"/>
7397    <src start="3"/>
7398    <src start="6"/>
7399    <mod name="mux" start="9" size="2" default="int_zero">
7400      <opt>neg</opt>
7401      <opt>int_zero</opt>
7402      <opt>fp_zero</opt>
7403      <opt>bit</opt>
7404    </mod>
7405  </ins>
7406
7407  <ins name="MUX.v2i16" mask="0xfc000" exact="0x70000" unit="add">
7408    <src start="0"/>
7409    <src start="3"/>
7410    <src start="6"/>
7411    <mod name="mux" start="9" size="2" default="int_zero">
7412      <opt>neg</opt>
7413      <opt>int_zero</opt>
7414      <opt>fp_zero</opt>
7415      <opt>bit</opt>
7416    </mod>
7417    <mod name="swap2" start="11" size="1" default="h01">
7418      <opt>h01</opt>
7419      <opt>h10</opt>
7420    </mod>
7421    <mod name="swap1" start="12" size="1" default="h01">
7422      <opt>h01</opt>
7423      <opt>h10</opt>
7424    </mod>
7425    <mod name="swap0" start="13" size="1" default="h01">
7426      <opt>h01</opt>
7427      <opt>h10</opt>
7428    </mod>
7429  </ins>
7430
7431  <ins name="MUX.v4i8" mask="0xffc00" exact="0x74800" unit="add">
7432    <src start="0"/>
7433    <src start="3"/>
7434    <src start="6"/>
7435    <mod name="mux" start="9" size="1" default="int_zero">
7436      <opt>neg</opt>
7437      <opt>int_zero</opt>
7438    </mod>
7439  </ins>
7440
7441  <ins name="NOP" mask="0xfffff" exact="0x3d964" dests="0" unit="add"/>
7442
7443  <ins name="QUIET.f32" mask="0xffff8" exact="0x3d970" unit="add">
7444    <src start="0"/>
7445  </ins>
7446
7447  <ins name="QUIET.v2f16" mask="0xfffc8" exact="0x3d900" unit="add">
7448    <src start="0"/>
7449    <mod name="swz0" start="4" size="2" default="h01">
7450      <opt>h00</opt>
7451      <opt>h10</opt>
7452      <opt>h01</opt>
7453      <opt>h11</opt>
7454    </mod>
7455  </ins>
7456
7457  <ins name="S16_TO_F32" mask="0xfffe8" exact="0x3cce0" unit="add">
7458    <src start="0"/>
7459    <mod name="lane0" start="4" size="1" default="h0">
7460      <opt>h0</opt>
7461      <opt>h1</opt>
7462    </mod>
7463  </ins>
7464
7465  <ins name="S16_TO_S32" mask="0xfffe8" exact="0x3ccc0" unit="add">
7466    <src start="0"/>
7467    <mod name="lane0" start="4" size="1" default="h0">
7468      <opt>h0</opt>
7469      <opt>h1</opt>
7470    </mod>
7471  </ins>
7472
7473  <ins name="S32_TO_F32" unit="add">
7474    <src start="0"/>
7475    <mod name="round" size="3">
7476      <opt>none</opt>
7477      <opt>rtp</opt>
7478      <opt>rtn</opt>
7479      <opt>rtz</opt>
7480      <opt>rtna</opt>
7481    </mod>
7482    <encoding mask="0xfffc8" exact="0x3cbc0">
7483      <neq left="round" right="#rtna"/>
7484      <derived start="4" size="2">
7485        <eq left="round" right="#none"/>
7486        <eq left="round" right="#rtp"/>
7487        <eq left="round" right="#rtn"/>
7488        <eq left="round" right="#rtz"/>
7489      </derived>
7490    </encoding>
7491    <encoding mask="0xffff8" exact="0x3cd00">
7492      <eq left="round" right="#rtna"/>
7493    </encoding>
7494  </ins>
7495
7496  <ins name="S8_TO_F32" mask="0xfffc8" exact="0x3cb80" unit="add">
7497    <src start="0"/>
7498    <mod name="lane0" start="4" size="2" default="b0">
7499      <opt>b0</opt>
7500      <opt>b1</opt>
7501      <opt>b2</opt>
7502      <opt>b3</opt>
7503    </mod>
7504  </ins>
7505
7506  <ins name="S8_TO_S32" mask="0xfffc8" exact="0x3cb40" unit="add">
7507    <src start="0"/>
7508    <mod name="lane0" start="4" size="2" default="b0">
7509      <opt>b0</opt>
7510      <opt>b1</opt>
7511      <opt>b2</opt>
7512      <opt>b3</opt>
7513    </mod>
7514  </ins>
7515
7516  <ins name="SEG_ADD" mask="0xfff40" exact="0x3d500" unit="add">
7517    <src start="0"/>
7518    <mod name="seg" start="3" size="3">
7519      <reserved/>
7520      <reserved/>
7521      <opt>wls</opt>
7522      <reserved/>
7523      <reserved/>
7524      <reserved/>
7525      <reserved/>
7526      <opt>tl</opt>
7527    </mod>
7528    <mod name="preserve_null" start="7" size="1" opt="preserve_null"/>
7529  </ins>
7530
7531  <ins name="SEG_SUB" mask="0xfff40" exact="0x3d540" unused="true" unit="add">
7532    <src start="0"/>
7533    <mod name="seg" start="3" size="3">
7534      <reserved/>
7535      <reserved/>
7536      <opt>wls</opt>
7537      <reserved/>
7538      <reserved/>
7539      <reserved/>
7540      <reserved/>
7541      <opt>tl</opt>
7542    </mod>
7543    <mod name="preserve_null" start="7" size="1" opt="preserve_null"/>
7544  </ins>
7545
7546  <ins name="SHADDXH.i32" mask="0xfffc0" exact="0x3f8c0" unit="add">
7547    <src start="0"/>
7548    <src start="3"/>
7549  </ins>
7550
7551  <ins name="SHIFT_DOUBLE.i32" mask="0xffe00" exact="0xefe00" unit="add">
7552    <src start="0"/>
7553    <src start="3"/>
7554    <src start="6"/>
7555  </ins>
7556
7557  <ins name="STORE.i128" staging="r=4" mask="0xffe00" exact="0x61200" message="store" dests="0" unit="add">
7558    <src start="0"/>
7559    <src start="3"/>
7560    <mod name="seg" start="6" size="3">
7561      <reserved/>
7562      <opt>none</opt>
7563      <opt>wls</opt>
7564      <opt>stream</opt>
7565      <opt pseudo="true">pos</opt>
7566      <opt pseudo="true">vary</opt>
7567      <reserved/>
7568      <opt>tl</opt>
7569    </mod>
7570    <immediate name="byte_offset" size="16" pseudo="true"/>
7571  </ins>
7572
7573  <ins name="STORE.i16" staging="r=1" mask="0xffe00" exact="0x62800" message="store" dests="0" unit="add">
7574    <src start="0"/>
7575    <src start="3"/>
7576    <mod name="seg" start="6" size="3">
7577      <reserved/>
7578      <opt>none</opt>
7579      <opt>wls</opt>
7580      <opt>stream</opt>
7581      <opt pseudo="true">pos</opt>
7582      <opt pseudo="true">vary</opt>
7583      <reserved/>
7584      <opt>tl</opt>
7585    </mod>
7586    <immediate name="byte_offset" size="16" pseudo="true"/>
7587  </ins>
7588
7589  <ins name="STORE.i24" staging="r=1" mask="0xffe00" exact="0x65800" message="store" dests="0" unit="add">
7590    <src start="0"/>
7591    <src start="3"/>
7592    <mod name="seg" start="6" size="3">
7593      <reserved/>
7594      <opt>none</opt>
7595      <opt>wls</opt>
7596      <opt>stream</opt>
7597      <opt pseudo="true">pos</opt>
7598      <opt pseudo="true">vary</opt>
7599      <reserved/>
7600      <opt>tl</opt>
7601    </mod>
7602    <immediate name="byte_offset" size="16" pseudo="true"/>
7603  </ins>
7604
7605  <ins name="STORE.i32" staging="r=1" mask="0xffe00" exact="0x62c00" message="store" dests="0" unit="add">
7606    <src start="0"/>
7607    <src start="3"/>
7608    <mod name="seg" start="6" size="3">
7609      <reserved/>
7610      <opt>none</opt>
7611      <opt>wls</opt>
7612      <opt>stream</opt>
7613      <opt pseudo="true">pos</opt>
7614      <opt pseudo="true">vary</opt>
7615      <reserved/>
7616      <opt>tl</opt>
7617    </mod>
7618    <immediate name="byte_offset" size="16" pseudo="true"/>
7619  </ins>
7620
7621  <ins name="STORE.i48" staging="r=2" mask="0xffe00" exact="0x65a00" message="store" dests="0" unit="add">
7622    <src start="0"/>
7623    <src start="3"/>
7624    <mod name="seg" start="6" size="3">
7625      <reserved/>
7626      <opt>none</opt>
7627      <opt>wls</opt>
7628      <opt>stream</opt>
7629      <opt pseudo="true">pos</opt>
7630      <opt pseudo="true">vary</opt>
7631      <reserved/>
7632      <opt>tl</opt>
7633    </mod>
7634    <immediate name="byte_offset" size="16" pseudo="true"/>
7635  </ins>
7636
7637  <ins name="STORE.i64" staging="r=2" mask="0xffe00" exact="0x62e00" message="store" dests="0" unit="add">
7638    <src start="0"/>
7639    <src start="3"/>
7640    <mod name="seg" start="6" size="3">
7641      <reserved/>
7642      <opt>none</opt>
7643      <opt>wls</opt>
7644      <opt>stream</opt>
7645      <opt pseudo="true">pos</opt>
7646      <opt pseudo="true">vary</opt>
7647      <reserved/>
7648      <opt>tl</opt>
7649    </mod>
7650    <immediate name="byte_offset" size="16" pseudo="true"/>
7651  </ins>
7652
7653  <ins name="STORE.i8" staging="r=1" mask="0xffe00" exact="0x62000" message="store" dests="0" unit="add">
7654    <src start="0"/>
7655    <src start="3"/>
7656    <mod name="seg" start="6" size="3">
7657      <reserved/>
7658      <opt>none</opt>
7659      <opt>wls</opt>
7660      <opt>stream</opt>
7661      <opt pseudo="true">pos</opt>
7662      <opt pseudo="true">vary</opt>
7663      <reserved/>
7664      <opt>tl</opt>
7665    </mod>
7666    <immediate name="byte_offset" size="16" pseudo="true"/>
7667  </ins>
7668
7669  <ins name="STORE.i96" staging="r=3" mask="0xffe00" exact="0x65c00" message="store" dests="0" unit="add">
7670    <src start="0"/>
7671    <src start="3"/>
7672    <mod name="seg" start="6" size="3">
7673      <reserved/>
7674      <opt>none</opt>
7675      <opt>wls</opt>
7676      <opt>stream</opt>
7677      <opt pseudo="true">pos</opt>
7678      <opt pseudo="true">vary</opt>
7679      <reserved/>
7680      <opt>tl</opt>
7681    </mod>
7682    <immediate name="byte_offset" size="16" pseudo="true"/>
7683  </ins>
7684
7685  <ins name="ST_CVT" staging="r=format" mask="0xff800" exact="0xc9800" message="store" dests="0" unit="add">
7686    <src start="0"/>
7687    <src start="3"/>
7688    <src start="6" mask="0xf7"/>
7689    <mod name="register_format" size="4" pseudo="true">
7690      <opt>f16</opt>
7691      <opt>f32</opt>
7692      <opt>s32</opt>
7693      <opt>u32</opt>
7694      <opt>s16</opt>
7695      <opt>u16</opt>
7696      <opt>f64</opt>
7697      <opt>i64</opt>
7698    </mod>
7699    <mod name="vecsize" start="9" size="2">
7700      <opt>none</opt>
7701      <opt>v2</opt>
7702      <opt>v3</opt>
7703      <opt>v4</opt>
7704    </mod>
7705  </ins>
7706
7707  <ins name="ST_TILE" staging="r=format" mask="0xff800" exact="0xcb800" message="tile" dests="0" unit="add">
7708    <src start="0"/>
7709    <src start="3"/>
7710    <src start="6" mask="0xf7"/>
7711    <mod name="vecsize" start="9" size="2">
7712      <opt>none</opt>
7713      <opt>v2</opt>
7714      <opt>v3</opt>
7715      <opt>v4</opt>
7716    </mod>
7717    <mod name="register_format" size="3" pseudo="true">
7718      <opt>f32</opt>
7719      <opt>f16</opt>
7720      <opt>u32</opt>
7721      <opt>s32</opt>
7722    </mod>
7723  </ins>
7724
7725  <ins name="SWZ.v2i16" mask="0xfffc8" exact="0x3d948" unit="add">
7726    <src start="0"/>
7727    <mod name="swz0" start="4" size="2">
7728      <opt>h00</opt>
7729      <opt>h10</opt>
7730      <reserved/>
7731      <opt>h11</opt>
7732    </mod>
7733  </ins>
7734
7735  <ins name="SWZ.v4i8" mask="0xfffc0" exact="0x3df40" unit="add">
7736    <src start="0"/>
7737    <mod name="swz0" start="3" size="3">
7738      <opt>b0000</opt>
7739      <opt>b1111</opt>
7740      <opt>b2222</opt>
7741      <opt>b3333</opt>
7742      <opt>b0011</opt>
7743      <opt>b2233</opt>
7744      <opt>b1032</opt>
7745      <opt>b3210</opt>
7746    </mod>
7747  </ins>
7748
7749  <ins name="TEXC" staging="rw=sr_count" mask="0xffc00" exact="0xd7000" message="tex" unit="add">
7750    <src start="0"/>
7751    <src start="3"/>
7752    <src start="6" mask="0xf7"/>
7753    <mod name="skip" start="9" size="1" opt="skip"/>
7754    <!-- not actually encoded, but used for IR -->
7755    <immediate name="sr_count" size="4" pseudo="true"/>
7756    <immediate name="sr_count_2" size="4" pseudo="true"/>
7757    <mod name="lod_mode" start="13" size="1" default="zero_lod" pseudo="true">
7758      <opt>computed_lod</opt>
7759      <opt>zero_lod</opt>
7760    </mod>
7761  </ins>
7762
7763  <!-- Pseudo instruction representing dual texturing on Bifrost. Lowered to
7764       TEXC after register allocation, when the second destination register can
7765       be combined with the texture operation descriptor. -->
7766  <ins name="TEXC_DUAL" staging="rw=sr_count" pseudo="true" message="tex" dests="2" unit="add">
7767    <src start="0"/>
7768    <src start="3"/>
7769    <src start="6" mask="0xf7"/>
7770    <mod name="skip" start="9" size="1" opt="skip"/>
7771    <immediate name="sr_count" size="4" pseudo="true"/>
7772    <immediate name="sr_count_2" size="4" pseudo="true"/>
7773    <mod name="lod_mode" start="13" size="1" default="zero_lod" pseudo="true">
7774      <opt>computed_lod</opt>
7775      <opt>zero_lod</opt>
7776    </mod>
7777  </ins>
7778
7779  <ins name="TEXS_2D.f16" staging="w=2" mask="0xfc000" exact="0xd8000" message="tex" unit="add">
7780    <src start="0"/>
7781    <src start="3"/>
7782    <immediate name="texture_index" start="6" size="3"/>
7783    <immediate name="sampler_index" start="10" size="3"/>
7784    <mod name="skip" start="9" size="1" opt="skip"/>
7785    <mod name="lod_mode" start="13" size="1" default="zero_lod">
7786      <opt>computed_lod</opt>
7787      <opt>zero_lod</opt>
7788    </mod>
7789  </ins>
7790
7791  <ins name="TEXS_2D.f32" staging="w=4" mask="0xfc000" exact="0x58000" message="tex" unit="add">
7792    <src start="0"/>
7793    <src start="3"/>
7794    <immediate name="texture_index" start="6" size="3"/>
7795    <immediate name="sampler_index" start="10" size="3"/>
7796    <mod name="skip" start="9" size="1" opt="skip"/>
7797    <mod name="lod_mode" start="13" size="1" default="zero_lod">
7798      <opt>computed_lod</opt>
7799      <opt>zero_lod</opt>
7800    </mod>
7801  </ins>
7802
7803  <ins name="TEXS_CUBE.f16" staging="w=2" mask="0xfc000" exact="0xdc000" message="tex" unit="add">
7804    <src start="0"/>
7805    <src start="3"/>
7806    <src start="6"/>
7807    <immediate name="sampler_index" start="10" size="2"/>
7808    <immediate name="texture_index" start="12" size="2"/>
7809    <mod name="skip" start="9" size="1" opt="skip"/>
7810  </ins>
7811
7812  <ins name="TEXS_CUBE.f32" staging="w=4" mask="0xfc000" exact="0x5c000" message="tex" unit="add">
7813    <src start="0"/>
7814    <src start="3"/>
7815    <src start="6"/>
7816    <immediate name="sampler_index" start="10" size="2"/>
7817    <immediate name="texture_index" start="12" size="2"/>
7818    <mod name="skip" start="9" size="1" opt="skip"/>
7819  </ins>
7820
7821  <ins name="U16_TO_F32" mask="0xfffe8" exact="0x3cce8" unit="add">
7822    <src start="0"/>
7823    <mod name="lane0" start="4" size="1" default="h0">
7824      <opt>h0</opt>
7825      <opt>h1</opt>
7826    </mod>
7827  </ins>
7828
7829  <ins name="U16_TO_U32" mask="0xfffe8" exact="0x3ccc8" unit="add">
7830    <src start="0"/>
7831    <mod name="lane0" start="4" size="1" default="h0">
7832      <opt>h0</opt>
7833      <opt>h1</opt>
7834    </mod>
7835  </ins>
7836
7837  <ins name="U32_TO_F32" unit="add">
7838    <src start="0"/>
7839    <mod name="round" size="3">
7840      <opt>none</opt>
7841      <opt>rtp</opt>
7842      <opt>rtn</opt>
7843      <opt>rtz</opt>
7844      <opt>rtna</opt>
7845    </mod>
7846    <encoding mask="0xfffc8" exact="0x3cbc8">
7847      <neq left="round" right="#rtna"/>
7848      <derived start="4" size="2">
7849        <eq left="round" right="#none"/>
7850        <eq left="round" right="#rtp"/>
7851        <eq left="round" right="#rtn"/>
7852        <eq left="round" right="#rtz"/>
7853      </derived>
7854    </encoding>
7855    <encoding mask="0xffff8" exact="0x3cd08">
7856      <eq left="round" right="#rtna"/>
7857    </encoding>
7858  </ins>
7859
7860  <ins name="U8_TO_F32" mask="0xfffc8" exact="0x3cb88" unit="add">
7861    <src start="0"/>
7862    <mod name="lane0" start="4" size="2" default="b0">
7863      <opt>b0</opt>
7864      <opt>b1</opt>
7865      <opt>b2</opt>
7866      <opt>b3</opt>
7867    </mod>
7868  </ins>
7869
7870  <ins name="U8_TO_U32" mask="0xfffc8" exact="0x3cb48" unit="add">
7871    <src start="0"/>
7872    <mod name="lane0" start="4" size="2" default="b0">
7873      <opt>b0</opt>
7874      <opt>b1</opt>
7875      <opt>b2</opt>
7876      <opt>b3</opt>
7877    </mod>
7878  </ins>
7879
7880  <ins name="V2F16_TO_V2S16" unit="add">
7881    <src start="0"/>
7882    <mod name="round" size="3">
7883      <opt>none</opt>
7884      <opt>rtp</opt>
7885      <opt>rtn</opt>
7886      <opt>rtz</opt>
7887      <opt>rtna</opt>
7888    </mod>
7889    <mod name="swz0" size="2" default="h01">
7890      <opt>h00</opt>
7891      <opt>h10</opt>
7892      <opt>h01</opt>
7893      <opt>h11</opt>
7894    </mod>
7895    <encoding mask="0xfff08" exact="0x3c200">
7896      <neq left="round" right="#rtna"/>
7897      <copy name="swz0" start="6"/>
7898      <derived start="4" size="2">
7899        <eq left="round" right="#none"/>
7900        <eq left="round" right="#rtp"/>
7901        <eq left="round" right="#rtn"/>
7902        <eq left="round" right="#rtz"/>
7903      </derived>
7904    </encoding>
7905    <encoding mask="0xfffc8" exact="0x3ca80">
7906      <eq left="round" right="#rtna"/>
7907      <copy name="swz0" start="4"/>
7908    </encoding>
7909  </ins>
7910
7911  <ins name="V2F16_TO_V2U16" unit="add">
7912    <src start="0"/>
7913    <mod name="round" size="3">
7914      <opt>none</opt>
7915      <opt>rtp</opt>
7916      <opt>rtn</opt>
7917      <opt>rtz</opt>
7918      <opt>rtna</opt>
7919    </mod>
7920    <mod name="swz0" size="2" default="h01">
7921      <opt>h00</opt>
7922      <opt>h10</opt>
7923      <opt>h01</opt>
7924      <opt>h11</opt>
7925    </mod>
7926    <encoding mask="0xfff08" exact="0x3c208">
7927      <neq left="round" right="#rtna"/>
7928      <copy name="swz0" start="6"/>
7929      <derived start="4" size="2">
7930        <eq left="round" right="#none"/>
7931        <eq left="round" right="#rtp"/>
7932        <eq left="round" right="#rtn"/>
7933        <eq left="round" right="#rtz"/>
7934      </derived>
7935    </encoding>
7936    <encoding mask="0xfffc8" exact="0x3ca88">
7937      <eq left="round" right="#rtna"/>
7938      <copy name="swz0" start="4"/>
7939    </encoding>
7940  </ins>
7941
7942  <ins name="V2F32_TO_V2F16" mask="0xfe000" exact="0x76000" unit="add">
7943    <src start="0"/>
7944    <src start="3"/>
7945    <mod name="abs0" size="1" opt="abs"/>
7946    <mod name="abs1" size="1" opt="abs"/>
7947    <mod name="neg0" size="1" opt="neg"/>
7948    <mod name="neg1" size="1" opt="neg"/>
7949    <mod name="clamp" start="8" size="2">
7950      <opt>none</opt>
7951      <opt>clamp_0_inf</opt>
7952      <opt>clamp_m1_1</opt>
7953      <opt>clamp_0_1</opt>
7954    </mod>
7955    <mod name="round" start="10" size="3">
7956      <opt>none</opt>
7957      <opt>rtp</opt>
7958      <opt>rtn</opt>
7959      <opt>rtz</opt>
7960      <opt>rtna</opt>
7961    </mod>
7962    <mod name="ftz" start="9" size="1" opt="ftz" pseudo="true"/>
7963    <derived start="6" size="1">
7964      <and>
7965        <eq left="abs0" right="#none"/>
7966        <eq left="abs1" right="#none"/>
7967      </and>
7968      <and>
7969        <eq left="abs0" right="#abs"/>
7970        <eq left="abs1" right="#abs"/>
7971      </and>
7972    </derived>
7973    <derived start="7" size="1">
7974      <and>
7975        <eq left="neg0" right="#none"/>
7976        <eq left="neg1" right="#none"/>
7977      </and>
7978      <and>
7979        <eq left="neg0" right="#neg"/>
7980        <eq left="neg1" right="#neg"/>
7981      </and>
7982    </derived>
7983  </ins>
7984
7985  <ins name="V2S16_TO_V2F16" unit="add">
7986    <src start="0"/>
7987    <mod name="round" size="3">
7988      <opt>none</opt>
7989      <opt>rtp</opt>
7990      <opt>rtn</opt>
7991      <opt>rtz</opt>
7992      <opt>rtna</opt>
7993    </mod>
7994    <mod name="swz0" size="2" default="h01">
7995      <opt>h00</opt>
7996      <opt>h10</opt>
7997      <opt>h01</opt>
7998      <opt>h11</opt>
7999    </mod>
8000    <encoding mask="0xfff08" exact="0x3c600">
8001      <neq left="round" right="#rtna"/>
8002      <copy name="swz0" start="6"/>
8003      <derived start="4" size="2">
8004        <eq left="round" right="#none"/>
8005        <eq left="round" right="#rtp"/>
8006        <eq left="round" right="#rtn"/>
8007        <eq left="round" right="#rtz"/>
8008      </derived>
8009    </encoding>
8010    <encoding mask="0xfffc8" exact="0x3cb00">
8011      <eq left="round" right="#rtna"/>
8012      <copy name="swz0" start="4"/>
8013    </encoding>
8014  </ins>
8015
8016  <ins name="V2S8_TO_V2F16" mask="0xfff08" exact="0x3c800" unit="add">
8017    <src start="0"/>
8018    <mod name="swz0" start="4" size="4" default="b01">
8019      <opt>b00</opt>
8020      <opt>b10</opt>
8021      <opt>b20</opt>
8022      <opt>b30</opt>
8023      <opt>b01</opt>
8024      <opt>b11</opt>
8025      <opt>b21</opt>
8026      <opt>b31</opt>
8027      <opt>b02</opt>
8028      <opt>b12</opt>
8029      <opt>b22</opt>
8030      <opt>b32</opt>
8031      <opt>b03</opt>
8032      <opt>b13</opt>
8033      <opt>b23</opt>
8034      <opt>b33</opt>
8035    </mod>
8036  </ins>
8037
8038  <ins name="V2S8_TO_V2S16" mask="0xfff08" exact="0x3c700" unit="add">
8039    <src start="0"/>
8040    <mod name="swz0" start="4" size="4" default="b01">
8041      <opt>b00</opt>
8042      <opt>b10</opt>
8043      <opt>b20</opt>
8044      <opt>b30</opt>
8045      <opt>b01</opt>
8046      <opt>b11</opt>
8047      <opt>b21</opt>
8048      <opt>b31</opt>
8049      <opt>b02</opt>
8050      <opt>b12</opt>
8051      <opt>b22</opt>
8052      <opt>b32</opt>
8053      <opt>b03</opt>
8054      <opt>b13</opt>
8055      <opt>b23</opt>
8056      <opt>b33</opt>
8057    </mod>
8058  </ins>
8059
8060  <ins name="V2U16_TO_V2F16" unit="add">
8061    <src start="0"/>
8062    <mod name="round" size="3">
8063      <opt>none</opt>
8064      <opt>rtp</opt>
8065      <opt>rtn</opt>
8066      <opt>rtz</opt>
8067      <opt>rtna</opt>
8068    </mod>
8069    <mod name="swz0" size="2" default="h01">
8070      <opt>h00</opt>
8071      <opt>h10</opt>
8072      <opt>h01</opt>
8073      <opt>h11</opt>
8074    </mod>
8075    <encoding mask="0xfff08" exact="0x3c608">
8076      <neq left="round" right="#rtna"/>
8077      <copy name="swz0" start="6"/>
8078      <derived start="4" size="2">
8079        <eq left="round" right="#none"/>
8080        <eq left="round" right="#rtp"/>
8081        <eq left="round" right="#rtn"/>
8082        <eq left="round" right="#rtz"/>
8083      </derived>
8084    </encoding>
8085    <encoding mask="0xfffc8" exact="0x3cb08">
8086      <eq left="round" right="#rtna"/>
8087      <copy name="swz0" start="4"/>
8088    </encoding>
8089  </ins>
8090
8091  <ins name="V2U8_TO_V2F16" mask="0xfff08" exact="0x3c808" unit="add">
8092    <src start="0"/>
8093    <mod name="swz0" start="4" size="4" default="b01">
8094      <opt>b00</opt>
8095      <opt>b10</opt>
8096      <opt>b20</opt>
8097      <opt>b30</opt>
8098      <opt>b01</opt>
8099      <opt>b11</opt>
8100      <opt>b21</opt>
8101      <opt>b31</opt>
8102      <opt>b02</opt>
8103      <opt>b12</opt>
8104      <opt>b22</opt>
8105      <opt>b32</opt>
8106      <opt>b03</opt>
8107      <opt>b13</opt>
8108      <opt>b23</opt>
8109      <opt>b33</opt>
8110    </mod>
8111  </ins>
8112
8113  <ins name="V2U8_TO_V2U16" mask="0xfff08" exact="0x3c708" unit="add">
8114    <src start="0"/>
8115    <mod name="swz0" start="4" size="4" default="b01">
8116      <opt>b00</opt>
8117      <opt>b10</opt>
8118      <opt>b20</opt>
8119      <opt>b30</opt>
8120      <opt>b01</opt>
8121      <opt>b11</opt>
8122      <opt>b21</opt>
8123      <opt>b31</opt>
8124      <opt>b02</opt>
8125      <opt>b12</opt>
8126      <opt>b22</opt>
8127      <opt>b32</opt>
8128      <opt>b03</opt>
8129      <opt>b13</opt>
8130      <opt>b23</opt>
8131      <opt>b33</opt>
8132    </mod>
8133  </ins>
8134
8135  <ins name="VAR_TEX.f16" staging="w=2" mask="0xffd00" exact="0xca100" message="vartex" unit="add">
8136    <immediate name="varying_index" start="0" size="3"/>
8137    <immediate name="texture_index" start="3" size="2"/>
8138    <mod name="update" size="1">
8139      <opt>store</opt>
8140      <opt>retrieve</opt>
8141    </mod>
8142    <mod name="skip" start="7" size="1" opt="skip"/>
8143    <mod name="lod_mode" start="9" size="1" default="zero_lod">
8144      <opt>computed_lod</opt>
8145      <opt>zero_lod</opt>
8146    </mod>
8147    <mod name="sample" size="1">
8148      <opt>center</opt>
8149      <opt>none</opt>
8150    </mod>
8151    <derived start="5" size="2">
8152      <and>
8153        <eq left="sample" right="#center"/>
8154        <eq left="update" right="#store"/>
8155      </and>
8156      <and>
8157        <eq left="sample" right="#none"/>
8158        <eq left="update" right="#retrieve"/>
8159      </and>
8160      <reserved/>
8161      <reserved/>
8162    </derived>
8163  </ins>
8164
8165  <ins name="VAR_TEX.f32" staging="w=4" mask="0xffd00" exact="0xca000" message="vartex" unit="add">
8166    <immediate name="varying_index" start="0" size="3"/>
8167    <immediate name="texture_index" start="3" size="2"/>
8168    <mod name="update" size="1">
8169      <opt>store</opt>
8170      <opt>retrieve</opt>
8171    </mod>
8172    <mod name="skip" start="7" size="1" opt="skip"/>
8173    <mod name="lod_mode" start="9" size="1" default="zero_lod">
8174      <opt>computed_lod</opt>
8175      <opt>zero_lod</opt>
8176    </mod>
8177    <mod name="sample" size="1">
8178      <opt>center</opt>
8179      <opt>none</opt>
8180    </mod>
8181    <derived start="5" size="2">
8182      <and>
8183        <eq left="sample" right="#center"/>
8184        <eq left="update" right="#store"/>
8185      </and>
8186      <and>
8187        <eq left="sample" right="#none"/>
8188        <eq left="update" right="#retrieve"/>
8189      </and>
8190      <reserved/>
8191      <reserved/>
8192    </derived>
8193  </ins>
8194
8195  <ins name="VN_ASST2.f32" unit="add">
8196    <src start="0"/>
8197    <mod name="scale" size="1" opt="scale"/>
8198    <mod name="neg0" size="1" opt="neg"/>
8199    <encoding mask="0xffff0" exact="0x3df80">
8200      <eq left="scale" right="#none"/>
8201      <copy name="neg0" start="3"/>
8202    </encoding>
8203    <encoding mask="0xfffe8" exact="0x3de80">
8204      <eq left="scale" right="#scale"/>
8205      <copy name="neg0" start="4"/>
8206    </encoding>
8207  </ins>
8208
8209  <ins name="VN_ASST2.v2f16" mask="0xffff0" exact="0x3dfa0" unit="add">
8210    <src start="0"/>
8211    <mod name="neg0" start="3" size="1" opt="neg"/>
8212  </ins>
8213
8214  <ins name="WMASK" mask="0xfffc0" exact="0x3d700" unit="add">
8215    <src start="0"/>
8216    <immediate name="fill" start="3" size="1"/>
8217    <mod name="subgroup" start="4" size="2">
8218      <opt>subgroup2</opt>
8219      <opt>subgroup4</opt>
8220      <opt>subgroup8</opt>
8221    </mod>
8222  </ins>
8223
8224  <ins name="ZS_EMIT" staging="w=1" mask="0xff800" exact="0xd7800" message="z_stencil" unit="add">
8225    <src start="0"/>
8226    <src start="3"/>
8227    <src start="6"/>
8228    <mod name="stencil" size="1" opt="stencil"/>
8229    <mod name="z" size="1" opt="z"/>
8230    <derived start="9" size="2">
8231      <reserved/>
8232      <and>
8233        <eq left="stencil" right="#stencil"/>
8234        <eq left="z" right="#none"/>
8235      </and>
8236      <and>
8237        <eq left="stencil" right="#none"/>
8238        <eq left="z" right="#z"/>
8239      </and>
8240      <and>
8241        <eq left="stencil" right="#stencil"/>
8242        <eq left="z" right="#z"/>
8243      </and>
8244    </derived>
8245  </ins>
8246
8247  <!--- Lowered to *SEG_ADD/+SEG_ADD -->
8248  <ins name="SEG_ADD.i64" pseudo="true" unit="add">
8249    <src start="0"/>
8250    <src start="3"/>
8251    <mod name="seg" size="3">
8252      <reserved/>
8253      <reserved/>
8254      <opt>wls</opt>
8255      <reserved/>
8256      <reserved/>
8257      <reserved/>
8258      <reserved/>
8259      <opt>tl</opt>
8260    </mod>
8261    <mod name="preserve_null" size="1" opt="preserve_null"/>
8262  </ins>
8263
8264  <!-- Scheduler lowered to *ATOM_C.i32/+ATOM_CX. Real Valhall instructions. -->
8265  <ins name="ATOM_RETURN.i32" pseudo="true" staging="rw=sr_count" message="atomic" unit="add">
8266    <src start="0"/>
8267    <src start="3"/>
8268    <mod name="atom_opc" start="9" size="5">
8269      <reserved/>
8270      <reserved/>
8271      <opt>aadd</opt>
8272      <reserved/>
8273      <reserved/>
8274      <reserved/>
8275      <reserved/>
8276      <reserved/>
8277      <opt>asmin</opt>
8278      <opt>asmax</opt>
8279      <opt>aumin</opt>
8280      <opt>aumax</opt>
8281      <opt>aand</opt>
8282      <opt>aor</opt>
8283      <opt>axor</opt>
8284      <opt>axchg</opt> <!-- For Valhall -->
8285      <opt>acmpxchg</opt> <!-- For Valhall -->
8286    </mod>
8287    <!-- not actually encoded, but used for IR -->
8288    <immediate name="sr_count" size="4" pseudo="true"/>
8289  </ins>
8290
8291  <ins name="ATOM1_RETURN.i32" pseudo="true" staging="w=sr_count" message="atomic" unit="add">
8292    <src start="0"/>
8293    <src start="3"/>
8294    <mod name="atom_opc" start="6" size="3">
8295      <opt>ainc</opt>
8296      <opt>adec</opt>
8297      <opt>aumax1</opt>
8298      <opt>asmax1</opt>
8299      <opt>aor1</opt>
8300    </mod>
8301    <!-- not actually encoded, but used for IR -->
8302    <immediate name="sr_count" size="4" pseudo="true"/>
8303  </ins>
8304
8305  <ins name="ATOM.i32" pseudo="true" staging="r=sr_count" message="atomic" unit="add">
8306    <src start="0"/>
8307    <src start="3"/>
8308    <mod name="atom_opc" start="9" size="4">
8309      <reserved/>
8310      <reserved/>
8311      <opt>aadd</opt>
8312      <reserved/>
8313      <reserved/>
8314      <reserved/>
8315      <reserved/>
8316      <reserved/>
8317      <opt>asmin</opt>
8318      <opt>asmax</opt>
8319      <opt>aumin</opt>
8320      <opt>aumax</opt>
8321      <opt>aand</opt>
8322      <opt>aor</opt>
8323      <opt>axor</opt>
8324    </mod>
8325    <!-- not actually encoded, but used for IR -->
8326    <immediate name="sr_count" size="4" pseudo="true"/>
8327  </ins>
8328
8329  <!-- *CUBEFACE1/+CUBEFACE2 pair, two destinations, scheduler lowered -->
8330  <ins name="CUBEFACE" pseudo="true" dests="2" unit="add">
8331    <src start="0"/>
8332    <src start="3"/>
8333    <src start="6"/>
8334    <mod name="neg0" size="1" opt="neg"/>
8335    <mod name="neg1" size="1" opt="neg"/>
8336    <mod name="neg2" size="1" opt="neg"/>
8337  </ins>
8338
8339  <ins name="IADD_IMM.i32" pseudo="true" unit="add">
8340    <src start="0"/>
8341    <immediate name="index" size="32"/>
8342  </ins>
8343
8344  <ins name="IADD_IMM.v2i16" pseudo="true" unit="add">
8345    <src start="0"/>
8346    <immediate name="index" size="32"/>
8347  </ins>
8348
8349  <ins name="IADD_IMM.v4i8" pseudo="true" unit="add">
8350    <src start="0"/>
8351    <immediate name="index" size="32"/>
8352  </ins>
8353
8354  <ins name="FADD_IMM.f32" pseudo="true" unit="add">
8355    <src start="0"/>
8356    <immediate name="index" size="32"/>
8357  </ins>
8358
8359  <ins name="FADD_IMM.v2f16" pseudo="true" unit="add">
8360    <src start="0"/>
8361    <immediate name="index" size="32"/>
8362  </ins>
8363
8364  <ins name="FABSNEG.f32" pseudo="true" unit="fma">
8365    <src start="0" mask="0xfb"/>
8366    <mod name="neg0" start="7" size="1" opt="neg"/>
8367    <mod name="abs0" start="12" size="1" opt="abs"/>
8368    <mod name="widen0" size="2">
8369      <opt>none</opt>
8370      <opt>h0</opt>
8371      <opt>h1</opt>
8372    </mod>
8373  </ins>
8374
8375  <ins name="FABSNEG.v2f16" pseudo="true" unit="fma">
8376    <src start="0" mask="0xfb"/>
8377    <mod name="abs0" size="1" opt="abs"/>
8378    <mod name="neg0" start="7" size="1" opt="neg"/>
8379    <mod name="swz0" start="9" size="2" default="h01">
8380      <opt>h00</opt>
8381      <opt>h10</opt>
8382      <opt>h01</opt>
8383      <opt>h11</opt>
8384    </mod>
8385  </ins>
8386
8387  <ins name="FCLAMP.f32" pseudo="true" unit="fma">
8388    <src start="0" mask="0xfb"/>
8389    <mod name="clamp" start="15" size="2">
8390      <opt>none</opt>
8391      <opt>clamp_0_inf</opt>
8392      <opt>clamp_m1_1</opt>
8393      <opt>clamp_0_1</opt>
8394    </mod>
8395  </ins>
8396
8397  <ins name="FCLAMP.v2f16" pseudo="true" unit="fma">
8398    <src start="0" mask="0xfb"/>
8399    <mod name="clamp" start="15" size="2">
8400      <opt>none</opt>
8401      <opt>clamp_0_inf</opt>
8402      <opt>clamp_m1_1</opt>
8403      <opt>clamp_0_1</opt>
8404    </mod>
8405  </ins>
8406
8407  <ins name="DISCARD.b32" pseudo="true" dests="0" unit="add">
8408    <src start="0"/>
8409    <mod name="widen0" size="2">
8410      <opt>none</opt>
8411      <opt>h0</opt>
8412      <opt>h1</opt>
8413    </mod>
8414  </ins>
8415
8416  <ins name="TEX_SINGLE" staging="rw=sr_count" message="tex" pseudo="true" unit="add">
8417    <src start="0"/>
8418    <src start="1"/>
8419    <immediate name="sr_count" size="4" pseudo="true"/>
8420    <mod name="wide_indices" start="8" size="1" opt="wide_indices"/>
8421    <mod name="texel_offset" start="9" size="1" opt="texel_offset"/>
8422    <mod name="skip" start="9" size="1" opt="skip"/>
8423    <mod name="shadow" start="9" size="1" opt="shadow"/>
8424    <mod name="array_enable" start="9" size="1" opt="array_enable"/>
8425    <mod name="dimension" start="9" size="2">
8426      <opt>1d</opt>
8427      <opt>2d</opt>
8428      <opt>3d</opt>
8429      <opt>cube</opt>
8430    </mod>
8431    <mod name="write_mask" start="9" size="4">
8432      <opt>none</opt>
8433      <opt>r</opt>
8434      <opt>g</opt>
8435      <opt>rg</opt>
8436      <opt>b</opt>
8437      <opt>rb</opt>
8438      <opt>gb</opt>
8439      <opt>rgb</opt>
8440      <opt>a</opt>
8441      <opt>ra</opt>
8442      <opt>ga</opt>
8443      <opt>rga</opt>
8444      <opt>ba</opt>
8445      <opt>rba</opt>
8446      <opt>gba</opt>
8447      <opt>rgba</opt>
8448    </mod>
8449    <mod name="va_lod_mode" start="13" size="3" default="zero_lod">
8450      <opt>zero_lod</opt>
8451      <opt>computed_lod</opt>
8452      <opt>explicit</opt>
8453      <opt>computed_bias</opt>
8454      <opt>grdesc</opt>
8455    </mod>
8456    <mod name="register_format" size="4">
8457      <opt>f16</opt>
8458      <opt>f32</opt>
8459      <opt>s32</opt>
8460      <opt>u32</opt>
8461      <opt>s16</opt>
8462      <opt>u16</opt>
8463    </mod>
8464  </ins>
8465
8466  <ins name="TEX_FETCH" staging="rw=sr_count" message="tex" pseudo="true" unit="add">
8467    <src start="0"/>
8468    <src start="1"/>
8469    <immediate name="sr_count" size="4" pseudo="true"/>
8470    <mod name="wide_indices" start="8" size="1" opt="wide_indices"/>
8471    <mod name="texel_offset" start="9" size="1" opt="texel_offset"/>
8472    <mod name="skip" start="9" size="1" opt="skip"/>
8473    <mod name="array_enable" start="9" size="1" opt="array_enable"/>
8474    <mod name="dimension" start="9" size="2">
8475      <opt>1d</opt>
8476      <opt>2d</opt>
8477      <opt>3d</opt>
8478      <opt>cube</opt>
8479    </mod>
8480    <mod name="write_mask" start="9" size="4">
8481      <opt>none</opt>
8482      <opt>r</opt>
8483      <opt>g</opt>
8484      <opt>rg</opt>
8485      <opt>b</opt>
8486      <opt>rb</opt>
8487      <opt>gb</opt>
8488      <opt>rgb</opt>
8489      <opt>a</opt>
8490      <opt>ra</opt>
8491      <opt>ga</opt>
8492      <opt>rga</opt>
8493      <opt>ba</opt>
8494      <opt>rba</opt>
8495      <opt>gba</opt>
8496      <opt>rgba</opt>
8497    </mod>
8498    <mod name="register_format" size="4">
8499      <opt>f16</opt>
8500      <opt>f32</opt>
8501      <opt>s32</opt>
8502      <opt>u32</opt>
8503      <opt>s16</opt>
8504      <opt>u16</opt>
8505    </mod>
8506  </ins>
8507
8508  <ins name="TEX_GATHER" staging="rw=sr_count" message="tex" pseudo="true" unit="add">
8509    <src start="0"/>
8510    <src start="1"/>
8511    <immediate name="sr_count" size="4" pseudo="true"/>
8512    <mod name="wide_indices" start="8" size="1" opt="wide_indices"/>
8513    <mod name="texel_offset" start="9" size="1" opt="texel_offset"/>
8514    <mod name="skip" start="9" size="1" opt="skip"/>
8515    <mod name="shadow" start="9" size="1" opt="shadow"/>
8516    <mod name="array_enable" start="9" size="1" opt="array_enable"/>
8517    <mod name="integer_coordinates" start="9" size="1" opt="integer_coordinates"/>
8518    <mod name="fetch_component" start="9" size="2">
8519      <opt>gather4_r</opt>
8520      <opt>gather4_g</opt>
8521      <opt>gather4_b</opt>
8522      <opt>gather4_a</opt>
8523    </mod>
8524    <mod name="dimension" start="9" size="2">
8525      <opt>1d</opt>
8526      <opt>2d</opt>
8527      <opt>3d</opt>
8528      <opt>cube</opt>
8529    </mod>
8530    <mod name="write_mask" start="9" size="4">
8531      <opt>none</opt>
8532      <opt>r</opt>
8533      <opt>g</opt>
8534      <opt>rg</opt>
8535      <opt>b</opt>
8536      <opt>rb</opt>
8537      <opt>gb</opt>
8538      <opt>rgb</opt>
8539      <opt>a</opt>
8540      <opt>ra</opt>
8541      <opt>ga</opt>
8542      <opt>rga</opt>
8543      <opt>ba</opt>
8544      <opt>rba</opt>
8545      <opt>gba</opt>
8546      <opt>rgba</opt>
8547    </mod>
8548    <mod name="register_format" size="4">
8549      <opt>f16</opt>
8550      <opt>f32</opt>
8551      <opt>s32</opt>
8552      <opt>u32</opt>
8553      <opt>s16</opt>
8554      <opt>u16</opt>
8555    </mod>
8556  </ins>
8557
8558  <ins name="CUBEFACE2_V9" pseudo="true" unit="add">
8559    <src start="0" mask="0xfb"/>
8560    <src start="3" mask="0xfb"/>
8561    <src start="6"/>
8562    <mod name="neg0" size="1" opt="neg"/>
8563    <mod name="neg1" size="1" opt="neg"/>
8564    <mod name="neg2" size="1" opt="neg"/>
8565  </ins>
8566
8567  <ins name="LD_VAR_BUF_IMM.f32" staging="w=format" message="varying" pseudo="true" unit="add">
8568    <src start="0"/>
8569    <immediate name="index" start="3" size="5"/>
8570    <mod name="vecsize" start="8" size="2">
8571      <opt>none</opt>
8572      <opt>v2</opt>
8573      <opt>v3</opt>
8574      <opt>v4</opt>
8575    </mod>
8576    <mod name="update" size="2">
8577      <opt>store</opt>
8578      <opt>retrieve</opt>
8579      <opt>conditional</opt>
8580      <opt>clobber</opt>
8581    </mod>
8582    <mod name="register_format" size="2">
8583      <opt>f32</opt>
8584      <opt>f16</opt>
8585      <opt>u32</opt>
8586      <opt>u16</opt>
8587    </mod>
8588    <mod name="source_format" size="2">
8589      <opt>flat32</opt>
8590      <opt>flat16</opt>
8591      <opt>f32</opt>
8592      <opt>f16</opt>
8593    </mod>
8594    <mod name="sample" size="3">
8595      <opt>center</opt>
8596      <opt>centroid</opt>
8597      <opt>sample</opt>
8598      <opt>explicit</opt>
8599      <opt>none</opt>
8600    </mod>
8601  </ins>
8602
8603  <ins name="LD_VAR_BUF.f32" staging="w=format" message="varying" pseudo="true" unit="add">
8604    <src start="0"/>
8605    <src start="1"/>
8606    <mod name="vecsize" start="8" size="2">
8607      <opt>none</opt>
8608      <opt>v2</opt>
8609      <opt>v3</opt>
8610      <opt>v4</opt>
8611    </mod>
8612    <mod name="update" size="2">
8613      <opt>store</opt>
8614      <opt>retrieve</opt>
8615      <opt>conditional</opt>
8616      <opt>clobber</opt>
8617    </mod>
8618    <mod name="register_format" size="2">
8619      <opt>f32</opt>
8620      <opt>f16</opt>
8621      <opt>u32</opt>
8622      <opt>u16</opt>
8623    </mod>
8624    <mod name="source_format" size="2">
8625      <opt>flat32</opt>
8626      <opt>flat16</opt>
8627      <opt>f32</opt>
8628      <opt>f16</opt>
8629    </mod>
8630    <mod name="sample" size="3">
8631      <opt>center</opt>
8632      <opt>centroid</opt>
8633      <opt>sample</opt>
8634      <opt>explicit</opt>
8635      <opt>none</opt>
8636    </mod>
8637  </ins>
8638
8639  <ins name="LD_VAR_BUF_IMM.f16" staging="w=format" message="varying" pseudo="true" unit="add">
8640    <src start="0"/>
8641    <immediate name="index" start="3" size="5"/>
8642    <mod name="vecsize" start="8" size="2">
8643      <opt>none</opt>
8644      <opt>v2</opt>
8645      <opt>v3</opt>
8646      <opt>v4</opt>
8647    </mod>
8648    <mod name="update" size="2">
8649      <opt>store</opt>
8650      <opt>retrieve</opt>
8651      <opt>conditional</opt>
8652      <opt>clobber</opt>
8653    </mod>
8654    <mod name="register_format" size="2">
8655      <opt>f32</opt>
8656      <opt>f16</opt>
8657      <opt>u32</opt>
8658      <opt>u16</opt>
8659    </mod>
8660    <mod name="source_format" size="2">
8661      <opt>flat32</opt>
8662      <opt>flat16</opt>
8663      <opt>f32</opt>
8664      <opt>f16</opt>
8665    </mod>
8666    <mod name="sample" size="3">
8667      <opt>center</opt>
8668      <opt>centroid</opt>
8669      <opt>sample</opt>
8670      <opt>explicit</opt>
8671      <opt>none</opt>
8672    </mod>
8673  </ins>
8674
8675  <ins name="LD_VAR_BUF.f16" staging="w=format" message="varying" pseudo="true" unit="add">
8676    <src start="0"/>
8677    <src start="1"/>
8678    <mod name="vecsize" start="8" size="2">
8679      <opt>none</opt>
8680      <opt>v2</opt>
8681      <opt>v3</opt>
8682      <opt>v4</opt>
8683    </mod>
8684    <mod name="update" size="2">
8685      <opt>store</opt>
8686      <opt>retrieve</opt>
8687      <opt>conditional</opt>
8688      <opt>clobber</opt>
8689    </mod>
8690    <mod name="register_format" size="2">
8691      <opt>f32</opt>
8692      <opt>f16</opt>
8693      <opt>u32</opt>
8694      <opt>u16</opt>
8695    </mod>
8696    <mod name="source_format" size="2">
8697      <opt>flat32</opt>
8698      <opt>flat16</opt>
8699      <opt>f32</opt>
8700      <opt>f16</opt>
8701    </mod>
8702    <mod name="sample" size="3">
8703      <opt>center</opt>
8704      <opt>centroid</opt>
8705      <opt>sample</opt>
8706      <opt>explicit</opt>
8707      <opt>none</opt>
8708    </mod>
8709  </ins>
8710
8711  <ins name="LEA_BUF_IMM" staging="w=2" message="attribute" pseudo="true" unit="add">
8712    <src start="0"/>
8713  </ins>
8714
8715  <ins name="LD_BUFFER.i128" staging="w=4" pseudo="true" message="load" unit="add">
8716    <src start="0"/>
8717    <src start="3"/>
8718  </ins>
8719
8720  <ins name="LD_BUFFER.i16" staging="w=1" pseudo="true" message="load" unit="add">
8721    <src start="0"/>
8722    <src start="3"/>
8723    <mod name="lane_dest" size="2" default="h0">
8724      <opt>h0</opt>
8725      <opt>h1</opt>
8726      <opt>w0</opt>
8727      <opt>d0</opt>
8728    </mod>
8729    <mod name="extend" size="2">
8730      <opt>none</opt>
8731      <opt>sext</opt>
8732      <opt>zext</opt>
8733    </mod>
8734  </ins>
8735
8736  <ins name="LD_BUFFER.i24" staging="w=1" pseudo="true" message="load" unit="add">
8737    <src start="0"/>
8738    <src start="3"/>
8739  </ins>
8740
8741  <ins name="LD_BUFFER.i32" staging="w=1" pseudo="true" message="load" unit="add">
8742    <src start="0"/>
8743    <src start="3"/>
8744    <mod name="lane_dest" size="1" opt="d0"/>
8745    <mod name="extend" size="2">
8746      <opt>none</opt>
8747      <opt>sext</opt>
8748      <opt>zext</opt>
8749    </mod>
8750  </ins>
8751
8752  <ins name="LD_BUFFER.i48" staging="w=2" pseudo="true" message="load" unit="add">
8753    <src start="0"/>
8754    <src start="3"/>
8755  </ins>
8756
8757  <ins name="LD_BUFFER.i64" staging="w=2" pseudo="true" message="load" unit="add">
8758    <src start="0"/>
8759    <src start="3"/>
8760  </ins>
8761
8762  <ins name="LD_BUFFER.i8" staging="w=1" pseudo="true" message="load" unit="add">
8763    <src start="0"/>
8764    <src start="3"/>
8765    <mod name="lane_dest" size="3" default="b0">
8766      <opt>b0</opt>
8767      <opt>b1</opt>
8768      <opt>b2</opt>
8769      <opt>b3</opt>
8770      <opt>h0</opt>
8771      <opt>h1</opt>
8772      <opt>w0</opt>
8773      <opt>d0</opt>
8774    </mod>
8775    <mod name="extend" size="2">
8776      <opt>none</opt>
8777      <opt>sext</opt>
8778      <opt>zext</opt>
8779    </mod>
8780  </ins>
8781
8782  <ins name="LD_BUFFER.i96" staging="w=3" pseudo="true" message="load" unit="add">
8783    <src start="0"/>
8784    <src start="3"/>
8785  </ins>
8786
8787  <ins name="BRANCHZI" pseudo="true" last="true" dests="0" unit="add">
8788    <src start="0"/>
8789    <src start="6" mask="0xf7"/>
8790    <mod name="cmpf" size="1">
8791      <opt>eq</opt>
8792      <opt>ne</opt>
8793    </mod>
8794  </ins>
8795
8796  <ins name="LD_TEX" pseudo="true" staging="w=format" message="attribute" unit="add">
8797    <src start="0"/>
8798    <src start="3"/>
8799    <src start="6"/>
8800    <mod name="register_format" size="4">
8801      <opt>f16</opt>
8802      <opt>f32</opt>
8803      <opt>s32</opt>
8804      <opt>u32</opt>
8805      <opt>s16</opt>
8806      <opt>u16</opt>
8807      <opt>f64</opt>
8808      <opt>i64</opt>
8809      <opt>auto</opt>
8810    </mod>
8811    <mod name="vecsize" start="11" size="2">
8812      <opt>none</opt>
8813      <opt>v2</opt>
8814      <opt>v3</opt>
8815      <opt>v4</opt>
8816    </mod>
8817  </ins>
8818
8819  <ins name="LD_TEX_IMM" pseudo="true" staging="w=format" message="attribute" unit="add">
8820    <src start="0"/>
8821    <src start="3"/>
8822    <immediate name="texture_index" start="6" size="4"/>
8823    <mod name="register_format" size="4">
8824      <opt>f16</opt>
8825      <opt>f32</opt>
8826      <opt>s32</opt>
8827      <opt>u32</opt>
8828      <opt>s16</opt>
8829      <opt>u16</opt>
8830      <opt>f64</opt>
8831      <opt>i64</opt>
8832      <opt>auto</opt>
8833    </mod>
8834    <mod name="vecsize" start="11" size="2">
8835      <opt>none</opt>
8836      <opt>v2</opt>
8837      <opt>v3</opt>
8838      <opt>v4</opt>
8839    </mod>
8840  </ins>
8841
8842  <ins name="MKVEC.v2i8" pseudo="true" unit="fma">
8843    <src start="0"/>
8844    <src start="3"/>
8845    <src start="6"/>
8846    <mod name="lane0" start="12" size="2" default="b0">
8847      <opt>b0</opt>
8848      <opt>b1</opt>
8849      <opt>b2</opt>
8850      <opt>b3</opt>
8851    </mod>
8852    <mod name="lane1" start="13" size="2" default="b0">
8853      <opt>b0</opt>
8854      <opt>b1</opt>
8855      <opt>b2</opt>
8856      <opt>b3</opt>
8857    </mod>
8858  </ins>
8859
8860  <ins name="PHI" pseudo="true" variable_srcs="true" unit="add"/>
8861
8862  <ins name="COLLECT.i32" pseudo="true" variable_srcs="true" unit="add"/>
8863
8864  <ins name="SPLIT.i32" pseudo="true" variable_dests="true" unit="add">
8865    <src start="0"/>
8866  </ins>
8867
8868  <ins name="FCMP_OR.f32" pseudo="true" unit="fma">
8869    <src start="0" mask="0xfb"/>
8870    <src start="3" mask="0xfb"/>
8871    <src start="6" mask="0xfb"/>
8872    <mod name="widen0" size="2">
8873      <opt>none</opt>
8874      <opt>h0</opt>
8875      <opt>h1</opt>
8876    </mod>
8877    <mod name="widen1" size="2">
8878      <opt>none</opt>
8879      <opt>h0</opt>
8880      <opt>h1</opt>
8881    </mod>
8882    <mod name="abs1" start="6" size="1" opt="abs"/>
8883    <mod name="neg0" start="7" size="1" opt="neg"/>
8884    <mod name="neg1" start="8" size="1" opt="neg"/>
8885    <mod name="abs0" start="12" size="1" opt="abs"/>
8886    <mod name="cmpf" start="13" size="3">
8887      <opt>eq</opt>
8888      <opt>gt</opt>
8889      <opt>ge</opt>
8890      <opt>ne</opt>
8891      <opt>lt</opt>
8892      <opt>le</opt>
8893      <opt>gtlt</opt>
8894      <opt>total</opt>
8895    </mod>
8896    <mod name="result_type" start="16" size="2" default="i1">
8897      <opt>i1</opt>
8898      <opt>f1</opt>
8899      <opt>m1</opt>
8900    </mod>
8901  </ins>
8902
8903  <ins name="FCMP_OR.v2f16" pseudo="true" unit="fma">
8904    <src start="0" mask="0xfb"/>
8905    <src start="3" mask="0xfb"/>
8906    <src start="6" mask="0xfb"/>
8907    <mod name="abs0" size="1" opt="abs"/>
8908    <mod name="abs1" size="1" opt="abs"/>
8909    <mod name="cmpf" size="3">
8910      <opt>eq</opt>
8911      <opt>gt</opt>
8912      <opt>ge</opt>
8913      <opt>ne</opt>
8914      <opt>lt</opt>
8915      <opt>le</opt>
8916      <opt>gtlt</opt>
8917      <opt>total</opt>
8918    </mod>
8919    <mod name="neg0" start="7" size="1" opt="neg"/>
8920    <mod name="neg1" start="8" size="1" opt="neg"/>
8921    <mod name="swz0" start="9" size="2" default="h01">
8922      <opt>h00</opt>
8923      <opt>h10</opt>
8924      <opt>h01</opt>
8925      <opt>h11</opt>
8926    </mod>
8927    <mod name="swz1" start="11" size="2" default="h01">
8928      <opt>h00</opt>
8929      <opt>h10</opt>
8930      <opt>h01</opt>
8931      <opt>h11</opt>
8932    </mod>
8933    <mod name="result_type" start="16" size="2" default="i1">
8934      <opt>i1</opt>
8935      <opt>f1</opt>
8936      <opt>m1</opt>
8937    </mod>
8938  </ins>
8939
8940  <ins name="FCMP_AND.f32" pseudo="true" unit="fma">
8941    <src start="0" mask="0xfb"/>
8942    <src start="3" mask="0xfb"/>
8943    <src start="6" mask="0xfb"/>
8944    <mod name="widen0" size="2">
8945      <opt>none</opt>
8946      <opt>h0</opt>
8947      <opt>h1</opt>
8948    </mod>
8949    <mod name="widen1" size="2">
8950      <opt>none</opt>
8951      <opt>h0</opt>
8952      <opt>h1</opt>
8953    </mod>
8954    <mod name="abs1" start="6" size="1" opt="abs"/>
8955    <mod name="neg0" start="7" size="1" opt="neg"/>
8956    <mod name="neg1" start="8" size="1" opt="neg"/>
8957    <mod name="abs0" start="12" size="1" opt="abs"/>
8958    <mod name="cmpf" start="13" size="3">
8959      <opt>eq</opt>
8960      <opt>gt</opt>
8961      <opt>ge</opt>
8962      <opt>ne</opt>
8963      <opt>lt</opt>
8964      <opt>le</opt>
8965      <opt>gtlt</opt>
8966      <opt>total</opt>
8967    </mod>
8968    <mod name="result_type" start="16" size="2" default="i1">
8969      <opt>i1</opt>
8970      <opt>f1</opt>
8971      <opt>m1</opt>
8972    </mod>
8973  </ins>
8974
8975  <ins name="FCMP_AND.v2f16" pseudo="true" unit="fma">
8976    <src start="0" mask="0xfb"/>
8977    <src start="3" mask="0xfb"/>
8978    <src start="6" mask="0xfb"/>
8979    <mod name="abs0" size="1" opt="abs"/>
8980    <mod name="abs1" size="1" opt="abs"/>
8981    <mod name="cmpf" size="3">
8982      <opt>eq</opt>
8983      <opt>gt</opt>
8984      <opt>ge</opt>
8985      <opt>ne</opt>
8986      <opt>lt</opt>
8987      <opt>le</opt>
8988      <opt>gtlt</opt>
8989      <opt>total</opt>
8990    </mod>
8991    <mod name="neg0" start="7" size="1" opt="neg"/>
8992    <mod name="neg1" start="8" size="1" opt="neg"/>
8993    <mod name="swz0" start="9" size="2" default="h01">
8994      <opt>h00</opt>
8995      <opt>h10</opt>
8996      <opt>h01</opt>
8997      <opt>h11</opt>
8998    </mod>
8999    <mod name="swz1" start="11" size="2" default="h01">
9000      <opt>h00</opt>
9001      <opt>h10</opt>
9002      <opt>h01</opt>
9003      <opt>h11</opt>
9004    </mod>
9005    <mod name="result_type" start="16" size="2" default="i1">
9006      <opt>i1</opt>
9007      <opt>f1</opt>
9008      <opt>m1</opt>
9009    </mod>
9010  </ins>
9011
9012  <ins name="ICMP_MULTI.s32" pseudo="true" unit="add">
9013    <src start="0"/>
9014    <src start="3"/>
9015    <src start="6"/>
9016    <mod name="result_type" start="10" size="1" default="i1">
9017      <opt>i1</opt>
9018      <opt>m1</opt>
9019    </mod>
9020    <mod name="cmpf" size="2">
9021      <opt>eq</opt>
9022      <opt>ne</opt>
9023      <opt>gt</opt>
9024      <opt>ge</opt>
9025      <opt>lt</opt>
9026      <opt>le</opt>
9027    </mod>
9028  </ins>
9029
9030  <ins name="ICMP_MULTI.u32" pseudo="true" unit="add">
9031    <src start="0"/>
9032    <src start="3"/>
9033    <src start="6"/>
9034    <mod name="result_type" start="10" size="1" default="i1">
9035      <opt>i1</opt>
9036      <opt>m1</opt>
9037    </mod>
9038    <mod name="cmpf" size="2">
9039      <opt>eq</opt>
9040      <opt>ne</opt>
9041      <opt>gt</opt>
9042      <opt>ge</opt>
9043      <opt>lt</opt>
9044      <opt>le</opt>
9045    </mod>
9046  </ins>
9047
9048  <ins name="ICMP_OR.s32" pseudo="true" unit="add">
9049    <src start="0"/>
9050    <src start="3"/>
9051    <src start="6"/>
9052    <mod name="result_type" start="10" size="1" default="i1">
9053      <opt>i1</opt>
9054      <opt>m1</opt>
9055    </mod>
9056    <mod name="cmpf" size="2">
9057      <opt>eq</opt>
9058      <opt>ne</opt>
9059      <opt>gt</opt>
9060      <opt>ge</opt>
9061      <opt>lt</opt>
9062      <opt>le</opt>
9063    </mod>
9064  </ins>
9065
9066  <ins name="ICMP_OR.u32" pseudo="true" unit="add">
9067    <src start="0"/>
9068    <src start="3"/>
9069    <src start="6"/>
9070    <mod name="result_type" start="10" size="1" default="i1">
9071      <opt>i1</opt>
9072      <opt>m1</opt>
9073    </mod>
9074    <mod name="cmpf" size="2">
9075      <opt>eq</opt>
9076      <opt>ne</opt>
9077      <opt>gt</opt>
9078      <opt>ge</opt>
9079      <opt>lt</opt>
9080      <opt>le</opt>
9081    </mod>
9082  </ins>
9083
9084  <ins name="ICMP_OR.v2s16" pseudo="true" unit="add">
9085    <src start="0"/>
9086    <src start="3"/>
9087    <src start="6"/>
9088    <mod name="swz0" start="6" size="2" default="h01">
9089      <opt>h00</opt>
9090      <opt>h10</opt>
9091      <opt>h01</opt>
9092      <opt>h11</opt>
9093    </mod>
9094    <mod name="swz1" start="8" size="2" default="h01">
9095      <opt>h00</opt>
9096      <opt>h10</opt>
9097      <opt>h01</opt>
9098      <opt>h11</opt>
9099    </mod>
9100    <mod name="result_type" start="10" size="1" default="i1">
9101      <opt>i1</opt>
9102      <opt>m1</opt>
9103    </mod>
9104    <mod name="cmpf" size="2">
9105      <opt>eq</opt>
9106      <opt>ne</opt>
9107      <opt>gt</opt>
9108      <opt>ge</opt>
9109      <opt>lt</opt>
9110      <opt>le</opt>
9111    </mod>
9112  </ins>
9113
9114  <ins name="ICMP_OR.v2u16" pseudo="true" unit="add">
9115    <src start="0"/>
9116    <src start="3"/>
9117    <src start="6"/>
9118    <mod name="swz0" start="6" size="2" default="h01">
9119      <opt>h00</opt>
9120      <opt>h10</opt>
9121      <opt>h01</opt>
9122      <opt>h11</opt>
9123    </mod>
9124    <mod name="swz1" start="8" size="2" default="h01">
9125      <opt>h00</opt>
9126      <opt>h10</opt>
9127      <opt>h01</opt>
9128      <opt>h11</opt>
9129    </mod>
9130    <mod name="result_type" start="10" size="1" default="i1">
9131      <opt>i1</opt>
9132      <opt>m1</opt>
9133    </mod>
9134    <mod name="cmpf" size="2">
9135      <opt>eq</opt>
9136      <opt>ne</opt>
9137      <opt>gt</opt>
9138      <opt>ge</opt>
9139      <opt>lt</opt>
9140      <opt>le</opt>
9141    </mod>
9142  </ins>
9143
9144  <ins name="ICMP_OR.v4s8" pseudo="true" unit="add">
9145    <src start="0"/>
9146    <src start="3"/>
9147    <src start="6"/>
9148    <mod name="result_type" start="10" size="1" default="i1">
9149      <opt>i1</opt>
9150      <opt>m1</opt>
9151    </mod>
9152    <mod name="cmpf" size="2">
9153      <opt>eq</opt>
9154      <opt>ne</opt>
9155      <opt>gt</opt>
9156      <opt>ge</opt>
9157      <opt>lt</opt>
9158      <opt>le</opt>
9159    </mod>
9160    <derived start="6" size="1">
9161      <eq left="cmpf" right="#gt"/>
9162      <eq left="cmpf" right="#ge"/>
9163    </derived>
9164  </ins>
9165
9166  <ins name="ICMP_OR.v4u8" pseudo="true" unit="add">
9167    <src start="0"/>
9168    <src start="3"/>
9169    <src start="6"/>
9170    <mod name="result_type" start="10" size="1" default="i1">
9171      <opt>i1</opt>
9172      <opt>m1</opt>
9173    </mod>
9174    <mod name="cmpf" size="2">
9175      <opt>eq</opt>
9176      <opt>ne</opt>
9177      <opt>gt</opt>
9178      <opt>ge</opt>
9179      <opt>lt</opt>
9180      <opt>le</opt>
9181    </mod>
9182  </ins>
9183
9184  <ins name="ICMP_AND.s32" pseudo="true" unit="add">
9185    <src start="0"/>
9186    <src start="3"/>
9187    <src start="6"/>
9188    <mod name="result_type" start="10" size="1" default="i1">
9189      <opt>i1</opt>
9190      <opt>m1</opt>
9191    </mod>
9192    <mod name="cmpf" size="2">
9193      <opt>eq</opt>
9194      <opt>ne</opt>
9195      <opt>gt</opt>
9196      <opt>ge</opt>
9197      <opt>lt</opt>
9198      <opt>le</opt>
9199    </mod>
9200  </ins>
9201
9202  <ins name="ICMP_AND.u32" pseudo="true" unit="add">
9203    <src start="0"/>
9204    <src start="3"/>
9205    <src start="6"/>
9206    <mod name="result_type" start="10" size="1" default="i1">
9207      <opt>i1</opt>
9208      <opt>m1</opt>
9209    </mod>
9210    <mod name="cmpf" size="2">
9211      <opt>eq</opt>
9212      <opt>ne</opt>
9213      <opt>gt</opt>
9214      <opt>ge</opt>
9215      <opt>lt</opt>
9216      <opt>le</opt>
9217    </mod>
9218  </ins>
9219
9220  <ins name="ICMP_AND.v2s16" pseudo="true" unit="add">
9221    <src start="0"/>
9222    <src start="3"/>
9223    <src start="6"/>
9224    <mod name="swz0" start="6" size="2" default="h01">
9225      <opt>h00</opt>
9226      <opt>h10</opt>
9227      <opt>h01</opt>
9228      <opt>h11</opt>
9229    </mod>
9230    <mod name="swz1" start="8" size="2" default="h01">
9231      <opt>h00</opt>
9232      <opt>h10</opt>
9233      <opt>h01</opt>
9234      <opt>h11</opt>
9235    </mod>
9236    <mod name="result_type" start="10" size="1" default="i1">
9237      <opt>i1</opt>
9238      <opt>m1</opt>
9239    </mod>
9240    <mod name="cmpf" size="2">
9241      <opt>eq</opt>
9242      <opt>ne</opt>
9243      <opt>gt</opt>
9244      <opt>ge</opt>
9245      <opt>lt</opt>
9246      <opt>le</opt>
9247    </mod>
9248  </ins>
9249
9250  <ins name="ICMP_AND.v2u16" pseudo="true" unit="add">
9251    <src start="0"/>
9252    <src start="3"/>
9253    <src start="6"/>
9254    <mod name="swz0" start="6" size="2" default="h01">
9255      <opt>h00</opt>
9256      <opt>h10</opt>
9257      <opt>h01</opt>
9258      <opt>h11</opt>
9259    </mod>
9260    <mod name="swz1" start="8" size="2" default="h01">
9261      <opt>h00</opt>
9262      <opt>h10</opt>
9263      <opt>h01</opt>
9264      <opt>h11</opt>
9265    </mod>
9266    <mod name="result_type" start="10" size="1" default="i1">
9267      <opt>i1</opt>
9268      <opt>m1</opt>
9269    </mod>
9270    <mod name="cmpf" size="2">
9271      <opt>eq</opt>
9272      <opt>ne</opt>
9273      <opt>gt</opt>
9274      <opt>ge</opt>
9275      <opt>lt</opt>
9276      <opt>le</opt>
9277    </mod>
9278  </ins>
9279
9280  <ins name="ICMP_AND.v4s8" pseudo="true" unit="add">
9281    <src start="0"/>
9282    <src start="3"/>
9283    <src start="6"/>
9284    <mod name="result_type" start="10" size="1" default="i1">
9285      <opt>i1</opt>
9286      <opt>m1</opt>
9287    </mod>
9288    <mod name="cmpf" size="2">
9289      <opt>eq</opt>
9290      <opt>ne</opt>
9291      <opt>gt</opt>
9292      <opt>ge</opt>
9293      <opt>lt</opt>
9294      <opt>le</opt>
9295    </mod>
9296    <derived start="6" size="1">
9297      <eq left="cmpf" right="#gt"/>
9298      <eq left="cmpf" right="#ge"/>
9299    </derived>
9300  </ins>
9301
9302  <ins name="ICMP_AND.v4u8" pseudo="true" unit="add">
9303    <src start="0"/>
9304    <src start="3"/>
9305    <src start="6"/>
9306    <mod name="result_type" start="10" size="1" default="i1">
9307      <opt>i1</opt>
9308      <opt>m1</opt>
9309    </mod>
9310    <mod name="cmpf" size="2">
9311      <opt>eq</opt>
9312      <opt>ne</opt>
9313      <opt>gt</opt>
9314      <opt>ge</opt>
9315      <opt>lt</opt>
9316      <opt>le</opt>
9317    </mod>
9318  </ins>
9319
9320</bifrost>
9321