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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
328    <src start="0" mask="0xfb"/>
329  </ins>
330
331  <ins name="*CLZ.u32" mask="0x7ffff0" exact="0x701fd0">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
1303    <src start="0" mask="0xfb"/>
1304    <src start="3" mask="0xfb"/>
1305  </ins>
1306
1307  <ins name="*FREXPE.f32">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
1986    <src start="0" mask="0xfb"/>
1987  </ins>
1988
1989  <ins name="*NOP" mask="0x7fffff" exact="0x701963" dests="0"/>
1990
1991  <ins name="*POPCOUNT.i32" mask="0x7ffff8" exact="0x73c6d8">
1992    <src start="0" mask="0xfb"/>
1993  </ins>
1994
1995  <ins name="*QUIET.f32" mask="0x7ffff8" exact="0x701970">
1996    <src start="0" mask="0xfb"/>
1997  </ins>
1998
1999  <ins name="*QUIET.v2f16" mask="0x7fffc8" exact="0x701900">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
2497    <src start="0" mask="0xf7"/>
2498    <src start="3" mask="0xf7"/>
2499    <mod name="widen1" start="6" size="2">
2500      <reserved/>
2501      <opt>none</opt>
2502      <opt>h0</opt>
2503      <opt>h1</opt>
2504    </mod>
2505  </ins>
2506
2507  <ins name="+ATOM_CX" staging="rw=sr_count" mask="0xffe00" exact="0xd7400" message="atomic">
2508    <src start="0"/>
2509    <src start="3"/>
2510    <src start="6"/>
2511    <!-- not actually encoded, but used for IR -->
2512    <immediate name="sr_count" size="4" pseudo="true"/>
2513  </ins>
2514
2515  <ins name="+AXCHG.i32" staging="rw=1" mask="0xffdc0" exact="0x640c0" message="atomic">
2516    <src start="0"/>
2517    <src start="3"/>
2518    <mod name="seg" start="9" size="1" opt="wls"/>
2519  </ins>
2520
2521  <ins name="+AXCHG.i64" staging="rw=2" mask="0xffdc0" exact="0x64100" message="atomic">
2522    <src start="0"/>
2523    <src start="3"/>
2524    <mod name="seg" start="9" size="1" opt="wls"/>
2525  </ins>
2526
2527  <ins name="+BARRIER" mask="0xfffff" exact="0xd7874" message="barrier" last="true" dests="0"/>
2528
2529  <ins name="+BLEND" staging="r=sr_count" mask="0xffe00" exact="0xca800" message="blend" last="true">
2530    <src start="0"/>
2531    <src start="3" mask="0xf7"/>
2532    <src start="6" mask="0xf7"/>
2533    <!-- pseudo source for a dual source blend input -->
2534    <src start="9" pseudo="true"/>
2535    <!-- not actually encoded, but used for IR -->
2536    <immediate name="sr_count" size="4" pseudo="true"/>
2537    <immediate name="sr_count_2" size="4" pseudo="true"/>
2538    <mod name="register_format" size="4" pseudo="true">
2539      <opt>f16</opt>
2540      <opt>f32</opt>
2541      <opt>s32</opt>
2542      <opt>u32</opt>
2543      <opt>s16</opt>
2544      <opt>u16</opt>
2545      <opt>f64</opt>
2546      <opt>i64</opt>
2547      <opt>auto</opt>
2548    </mod>
2549  </ins>
2550
2551  <ins name="+BRANCH.f16" mask="0xf8000" exact="0x68000" last="true" dests="0">
2552    <src start="0"/>
2553    <src start="3"/>
2554    <src start="6" mask="0xf7"/>
2555    <mod name="widen0" size="2">
2556      <opt>none</opt>
2557      <opt>h0</opt>
2558      <opt>h1</opt>
2559    </mod>
2560    <mod name="widen1" size="2">
2561      <opt>none</opt>
2562      <opt>h0</opt>
2563      <opt>h1</opt>
2564    </mod>
2565    <mod name="cmpf" size="3">
2566      <opt>eq</opt>
2567      <opt>gt</opt>
2568      <opt>ge</opt>
2569      <opt>ne</opt>
2570      <opt>lt</opt>
2571      <opt>le</opt>
2572    </mod>
2573    <derived start="12" size="3">
2574      <reserved/>
2575      <and>
2576        <eq left="widen0" right="#h0"/>
2577        <eq left="widen1" right="#h0"/>
2578      </and>
2579      <and>
2580        <eq left="widen0" right="#h1"/>
2581        <eq left="widen1" right="#h1"/>
2582      </and>
2583      <and>
2584        <eq left="widen0" right="#h1"/>
2585        <eq left="widen1" right="#h0"/>
2586        <or>
2587          <eq left="cmpf" right="#ne"/>
2588          <eq left="cmpf" right="#ge"/>
2589          <eq left="cmpf" right="#le"/>
2590        </or>
2591      </and>
2592      <and>
2593        <eq left="widen0" right="#h1"/>
2594        <eq left="widen1" right="#h0"/>
2595        <or>
2596          <eq left="cmpf" right="#eq"/>
2597          <eq left="cmpf" right="#gt"/>
2598          <eq left="cmpf" right="#lt"/>
2599        </or>
2600      </and>
2601      <reserved/>
2602      <reserved/>
2603      <reserved/>
2604    </derived>
2605    <derived start="9" size="3">
2606      <reserved/>
2607      <reserved/>
2608      <reserved/>
2609      <reserved/>
2610      <and alias="true">
2611        <eq left="widen0" right="widen1"/>
2612        <eq left="ordering" right="#eq"/>
2613        <or>
2614          <eq left="cmpf" right="#gt"/>
2615          <eq left="cmpf" right="#lt"/>
2616        </or>
2617      </and>
2618      <or>
2619        <and>
2620          <eq left="widen0" right="#h1"/>
2621          <eq left="widen1" right="#h0"/>
2622          <or>
2623            <eq left="cmpf" right="#eq"/>
2624            <eq left="cmpf" right="#ne"/>
2625          </or>
2626        </and>
2627        <and>
2628          <eq left="widen0" right="widen1"/>
2629          <eq left="ordering" right="#lt"/>
2630          <eq left="cmpf" right="#eq"/>
2631        </and>
2632        <and>
2633          <eq left="widen0" right="widen1"/>
2634          <neq left="ordering" right="#lt"/>
2635          <eq left="cmpf" right="#ne"/>
2636        </and>
2637      </or>
2638      <or>
2639        <and>
2640          <eq left="widen0" right="#h1"/>
2641          <eq left="widen1" right="#h0"/>
2642          <or>
2643            <eq left="cmpf" right="#gt"/>
2644            <eq left="cmpf" right="#ge"/>
2645          </or>
2646        </and>
2647        <and>
2648          <eq left="widen0" right="widen1"/>
2649          <eq left="ordering" right="#lt"/>
2650          <eq left="cmpf" right="#gt"/>
2651        </and>
2652        <and>
2653          <eq left="widen0" right="widen1"/>
2654          <neq left="ordering" right="#lt"/>
2655          <eq left="cmpf" right="#ge"/>
2656        </and>
2657      </or>
2658      <or>
2659        <and>
2660          <eq left="widen0" right="#h1"/>
2661          <eq left="widen1" right="#h0"/>
2662          <or>
2663            <eq left="cmpf" right="#lt"/>
2664            <eq left="cmpf" right="#le"/>
2665          </or>
2666        </and>
2667        <and>
2668          <eq left="widen0" right="widen1"/>
2669          <eq left="ordering" right="#lt"/>
2670          <eq left="cmpf" right="#lt"/>
2671        </and>
2672        <and>
2673          <eq left="widen0" right="widen1"/>
2674          <neq left="ordering" right="#lt"/>
2675          <eq left="cmpf" right="#le"/>
2676        </and>
2677        <and alias="true">
2678          <eq left="widen0" right="widen1"/>
2679          <eq left="ordering" right="#eq"/>
2680          <eq left="cmpf" right="#eq"/>
2681        </and>
2682      </or>
2683    </derived>
2684    <swap left="0" right="1">
2685      <or>
2686        <and>
2687          <eq left="widen0" right="#h0"/>
2688          <eq left="widen1" right="#h1"/>
2689        </and>
2690        <and>
2691          <eq left="widen0" right="widen1"/>
2692          <eq left="ordering" right="#gt"/>
2693          <or>
2694            <eq left="cmpf" right="#eq"/>
2695            <eq left="cmpf" right="#gt"/>
2696            <eq left="cmpf" right="#lt"/>
2697          </or>
2698        </and>
2699        <and>
2700          <eq left="widen0" right="widen1"/>
2701          <eq left="ordering" right="#lt"/>
2702          <or>
2703            <eq left="cmpf" right="#ne"/>
2704            <eq left="cmpf" right="#ge"/>
2705            <eq left="cmpf" right="#le"/>
2706          </or>
2707        </and>
2708      </or>
2709      <rewrite name="cmpf">
2710        <map from="lt" to="gt"/>
2711        <map from="le" to="ge"/>
2712        <map from="gt" to="lt"/>
2713        <map from="ge" to="le"/>
2714      </rewrite>
2715    </swap>
2716  </ins>
2717
2718  <ins name="+BRANCH.f32" mask="0xf8000" exact="0x68000" last="true" dests="0">
2719    <src start="0"/>
2720    <src start="3"/>
2721    <src start="6" mask="0xf7"/>
2722    <mod name="widen0" size="2">
2723      <opt>none</opt>
2724      <opt>h0</opt>
2725      <opt>h1</opt>
2726    </mod>
2727    <mod name="widen1" size="2">
2728      <opt>none</opt>
2729      <opt>h0</opt>
2730      <opt>h1</opt>
2731    </mod>
2732    <mod name="cmpf" size="3">
2733      <opt>eq</opt>
2734      <opt>gt</opt>
2735      <opt>ge</opt>
2736      <opt>ne</opt>
2737      <opt>lt</opt>
2738      <opt>le</opt>
2739    </mod>
2740    <derived start="12" size="3">
2741      <and>
2742        <eq left="widen0" right="#none"/>
2743        <eq left="widen1" right="#none"/>
2744      </and>
2745      <reserved/>
2746      <reserved/>
2747      <reserved/>
2748      <reserved/>
2749      <and>
2750        <eq left="widen0" right="#none"/>
2751        <eq left="widen1" right="#h0"/>
2752      </and>
2753      <and>
2754        <eq left="widen0" right="#none"/>
2755        <eq left="widen1" right="#h1"/>
2756      </and>
2757      <reserved/>
2758    </derived>
2759    <derived start="9" size="3">
2760      <reserved/>
2761      <and>
2762        <eq left="widen0" right="#none"/>
2763        <neq left="widen1" right="#none"/>
2764        <eq left="cmpf" right="#ne"/>
2765      </and>
2766      <and>
2767        <eq left="widen0" right="#none"/>
2768        <neq left="widen1" right="#none"/>
2769        <eq left="cmpf" right="#ge"/>
2770      </and>
2771      <and>
2772        <eq left="widen0" right="#none"/>
2773        <neq left="widen1" right="#none"/>
2774        <eq left="cmpf" right="#le"/>
2775      </and>
2776      <and alias="true">
2777        <eq left="widen0" right="#none"/>
2778        <eq left="widen1" right="#none"/>
2779        <eq left="ordering" right="#eq"/>
2780        <or>
2781          <eq left="cmpf" right="#gt"/>
2782          <eq left="cmpf" right="#lt"/>
2783        </or>
2784      </and>
2785      <or>
2786        <and>
2787          <eq left="widen0" right="#none"/>
2788          <neq left="widen1" right="#none"/>
2789          <eq left="cmpf" right="#eq"/>
2790        </and>
2791        <and>
2792          <eq left="widen0" right="#none"/>
2793          <eq left="widen1" right="#none"/>
2794          <eq left="ordering" right="#lt"/>
2795          <eq left="cmpf" right="#eq"/>
2796        </and>
2797        <and>
2798          <eq left="widen0" right="#none"/>
2799          <eq left="widen1" right="#none"/>
2800          <neq left="ordering" right="#lt"/>
2801          <eq left="cmpf" right="#ne"/>
2802        </and>
2803      </or>
2804      <or>
2805        <and>
2806          <eq left="widen0" right="#none"/>
2807          <neq left="widen1" right="#none"/>
2808          <eq left="cmpf" right="#gt"/>
2809        </and>
2810        <and>
2811          <eq left="widen0" right="#none"/>
2812          <eq left="widen1" right="#none"/>
2813          <eq left="ordering" right="#lt"/>
2814          <eq left="cmpf" right="#gt"/>
2815        </and>
2816        <and>
2817          <eq left="widen0" right="#none"/>
2818          <eq left="widen1" right="#none"/>
2819          <neq left="ordering" right="#lt"/>
2820          <eq left="cmpf" right="#ge"/>
2821        </and>
2822      </or>
2823      <or>
2824        <and>
2825          <eq left="widen0" right="#none"/>
2826          <neq left="widen1" right="#none"/>
2827          <eq left="cmpf" right="#lt"/>
2828        </and>
2829        <and>
2830          <eq left="widen0" right="#none"/>
2831          <eq left="widen1" right="#none"/>
2832          <eq left="ordering" right="#lt"/>
2833          <eq left="cmpf" right="#lt"/>
2834        </and>
2835        <and>
2836          <eq left="widen0" right="#none"/>
2837          <eq left="widen1" right="#none"/>
2838          <neq left="ordering" right="#lt"/>
2839          <eq left="cmpf" right="#le"/>
2840        </and>
2841        <and alias="true">
2842          <eq left="widen0" right="#none"/>
2843          <eq left="widen1" right="#none"/>
2844          <eq left="ordering" right="#eq"/>
2845          <eq left="cmpf" right="#eq"/>
2846        </and>
2847      </or>
2848    </derived>
2849    <swap left="0" right="1">
2850      <or>
2851        <and>
2852          <neq left="widen0" right="#none"/>
2853          <eq left="widen1" right="#none"/>
2854        </and>
2855        <and>
2856          <eq left="widen0" right="#none"/>
2857          <eq left="widen1" right="#none"/>
2858          <eq left="ordering" right="#gt"/>
2859          <or>
2860            <eq left="cmpf" right="#eq"/>
2861            <eq left="cmpf" right="#gt"/>
2862            <eq left="cmpf" right="#lt"/>
2863          </or>
2864        </and>
2865        <and>
2866          <eq left="widen0" right="#none"/>
2867          <eq left="widen1" right="#none"/>
2868          <eq left="ordering" right="#lt"/>
2869          <or>
2870            <eq left="cmpf" right="#ne"/>
2871            <eq left="cmpf" right="#ge"/>
2872            <eq left="cmpf" right="#le"/>
2873          </or>
2874        </and>
2875      </or>
2876      <rewrite name="cmpf">
2877        <map from="lt" to="gt"/>
2878        <map from="le" to="ge"/>
2879        <map from="gt" to="lt"/>
2880        <map from="ge" to="le"/>
2881      </rewrite>
2882    </swap>
2883  </ins>
2884
2885  <ins name="+BRANCH.i16" mask="0xf8000" exact="0x68000" last="true" dests="0">
2886    <src start="0"/>
2887    <src start="3"/>
2888    <src start="6" mask="0xf7"/>
2889    <mod name="widen0" size="2">
2890      <opt>none</opt>
2891      <opt>h0</opt>
2892      <opt>h1</opt>
2893    </mod>
2894    <mod name="widen1" size="2">
2895      <opt>none</opt>
2896      <opt>h0</opt>
2897      <opt>h1</opt>
2898    </mod>
2899    <mod name="cmpf" size="1">
2900      <opt>eq</opt>
2901      <opt>ne</opt>
2902    </mod>
2903    <derived start="12" size="3">
2904      <reserved/>
2905      <and>
2906        <eq left="widen0" right="#h0"/>
2907        <eq left="widen1" right="#h0"/>
2908      </and>
2909      <and>
2910        <eq left="widen0" right="#h1"/>
2911        <eq left="widen1" right="#h1"/>
2912      </and>
2913      <and>
2914        <eq left="widen0" right="#h1"/>
2915        <eq left="widen1" right="#h0"/>
2916        <eq left="cmpf" right="#ne"/>
2917      </and>
2918      <and>
2919        <eq left="widen0" right="#h1"/>
2920        <eq left="widen1" right="#h0"/>
2921        <eq left="cmpf" right="#eq"/>
2922      </and>
2923      <reserved/>
2924      <reserved/>
2925      <reserved/>
2926    </derived>
2927    <derived start="9" size="3">
2928      <reserved/>
2929      <and alias="true">
2930        <eq left="widen0" right="widen1"/>
2931        <eq left="ordering" right="#eq"/>
2932        <eq left="cmpf" right="#eq"/>
2933      </and>
2934      <reserved/>
2935      <reserved/>
2936      <or>
2937        <and>
2938          <eq left="widen0" right="#h1"/>
2939          <eq left="widen1" right="#h0"/>
2940        </and>
2941        <and>
2942          <eq left="widen0" right="widen1"/>
2943          <eq left="ordering" right="#lt"/>
2944          <eq left="cmpf" right="#eq"/>
2945        </and>
2946        <and>
2947          <eq left="widen0" right="widen1"/>
2948          <neq left="ordering" right="#lt"/>
2949          <eq left="cmpf" right="#ne"/>
2950        </and>
2951      </or>
2952      <reserved/>
2953      <reserved/>
2954      <reserved/>
2955    </derived>
2956    <swap left="0" right="1">
2957      <or>
2958        <and>
2959          <eq left="widen0" right="#h0"/>
2960          <eq left="widen1" right="#h1"/>
2961        </and>
2962        <and>
2963          <eq left="widen0" right="widen1"/>
2964          <eq left="ordering" right="#gt"/>
2965          <eq left="cmpf" right="#eq"/>
2966        </and>
2967        <and>
2968          <eq left="widen0" right="widen1"/>
2969          <eq left="ordering" right="#lt"/>
2970          <eq left="cmpf" right="#ne"/>
2971        </and>
2972      </or>
2973    </swap>
2974  </ins>
2975
2976  <ins name="+BRANCH.i32" mask="0xf8000" exact="0x68000" last="true" dests="0">
2977    <src start="0"/>
2978    <src start="3"/>
2979    <src start="6" mask="0xf7"/>
2980    <mod name="widen0" size="2">
2981      <opt>none</opt>
2982      <opt>h0</opt>
2983      <opt>h1</opt>
2984    </mod>
2985    <mod name="widen1" size="2">
2986      <opt>none</opt>
2987      <opt>h0</opt>
2988      <opt>h1</opt>
2989    </mod>
2990    <mod name="cmpf" size="1">
2991      <opt>eq</opt>
2992      <opt>ne</opt>
2993    </mod>
2994    <derived start="12" size="3">
2995      <and>
2996        <eq left="widen0" right="#none"/>
2997        <eq left="widen1" right="#none"/>
2998      </and>
2999      <reserved/>
3000      <reserved/>
3001      <reserved/>
3002      <reserved/>
3003      <reserved/>
3004      <reserved/>
3005      <reserved/>
3006    </derived>
3007    <derived start="9" size="3">
3008      <reserved/>
3009      <and alias="true">
3010        <eq left="ordering" right="#eq"/>
3011        <eq left="cmpf" right="#eq"/>
3012      </and>
3013      <reserved/>
3014      <reserved/>
3015      <or>
3016        <and>
3017          <eq left="ordering" right="#lt"/>
3018          <eq left="cmpf" right="#eq"/>
3019        </and>
3020        <and>
3021          <neq left="ordering" right="#lt"/>
3022          <eq left="cmpf" right="#ne"/>
3023        </and>
3024      </or>
3025      <reserved/>
3026      <reserved/>
3027      <reserved/>
3028    </derived>
3029    <swap left="0" right="1">
3030      <or>
3031        <and>
3032          <eq left="ordering" right="#gt"/>
3033          <eq left="cmpf" right="#eq"/>
3034        </and>
3035        <and>
3036          <eq left="ordering" right="#lt"/>
3037          <eq left="cmpf" right="#ne"/>
3038        </and>
3039      </or>
3040    </swap>
3041  </ins>
3042
3043  <ins name="+BRANCH.s16" mask="0xf8000" exact="0x68000" last="true" dests="0">
3044    <src start="0"/>
3045    <src start="3"/>
3046    <src start="6" mask="0xf7"/>
3047    <mod name="widen0" size="2">
3048      <opt>none</opt>
3049      <opt>h0</opt>
3050      <opt>h1</opt>
3051    </mod>
3052    <mod name="widen1" size="2">
3053      <opt>none</opt>
3054      <opt>h0</opt>
3055      <opt>h1</opt>
3056    </mod>
3057    <mod name="cmpf" size="2">
3058      <opt>gt</opt>
3059      <opt>ge</opt>
3060      <opt>lt</opt>
3061      <opt>le</opt>
3062    </mod>
3063    <derived start="12" size="3">
3064      <reserved/>
3065      <and>
3066        <eq left="widen0" right="#h0"/>
3067        <eq left="widen1" right="#h0"/>
3068      </and>
3069      <and>
3070        <eq left="widen0" right="#h1"/>
3071        <eq left="widen1" right="#h1"/>
3072      </and>
3073      <reserved/>
3074      <and>
3075        <eq left="widen0" right="#h1"/>
3076        <eq left="widen1" right="#h0"/>
3077      </and>
3078      <reserved/>
3079      <reserved/>
3080      <reserved/>
3081    </derived>
3082    <derived start="9" size="3">
3083      <or>
3084        <and>
3085          <eq left="widen0" right="#h1"/>
3086          <eq left="widen1" right="#h0"/>
3087          <eq left="cmpf" right="#lt"/>
3088        </and>
3089        <and>
3090          <eq left="widen0" right="widen1"/>
3091          <eq left="ordering" right="#lt"/>
3092          <eq left="cmpf" right="#lt"/>
3093        </and>
3094      </or>
3095      <or>
3096        <and>
3097          <eq left="widen0" right="#h1"/>
3098          <eq left="widen1" right="#h0"/>
3099          <eq left="cmpf" right="#le"/>
3100        </and>
3101        <and>
3102          <eq left="widen0" right="widen1"/>
3103          <eq left="ordering" right="#lt"/>
3104          <eq left="cmpf" right="#le"/>
3105        </and>
3106        <and alias="true">
3107          <eq left="widen0" right="widen1"/>
3108          <eq left="ordering" right="#eq"/>
3109          <or>
3110            <eq left="cmpf" right="#le"/>
3111            <eq left="cmpf" right="#ge"/>
3112          </or>
3113        </and>
3114      </or>
3115      <or>
3116        <and>
3117          <eq left="widen0" right="#h1"/>
3118          <eq left="widen1" right="#h0"/>
3119          <eq left="cmpf" right="#ge"/>
3120        </and>
3121        <and>
3122          <eq left="widen0" right="widen1"/>
3123          <eq left="ordering" right="#lt"/>
3124          <eq left="cmpf" right="#ge"/>
3125        </and>
3126      </or>
3127      <or>
3128        <and>
3129          <eq left="widen0" right="#h1"/>
3130          <eq left="widen1" right="#h0"/>
3131          <eq left="cmpf" right="#gt"/>
3132        </and>
3133        <and>
3134          <eq left="widen0" right="widen1"/>
3135          <eq left="ordering" right="#lt"/>
3136          <eq left="cmpf" right="#gt"/>
3137        </and>
3138      </or>
3139      <and alias="true">
3140        <eq left="widen0" right="widen1"/>
3141        <eq left="ordering" right="#eq"/>
3142        <or>
3143          <eq left="cmpf" right="#lt"/>
3144          <eq left="cmpf" right="#gt"/>
3145        </or>
3146      </and>
3147      <reserved/>
3148      <reserved/>
3149      <reserved/>
3150    </derived>
3151    <swap left="0" right="1">
3152      <or>
3153        <and>
3154          <eq left="widen0" right="#h0"/>
3155          <eq left="widen1" right="#h1"/>
3156        </and>
3157        <and>
3158          <eq left="widen0" right="widen1"/>
3159          <eq left="ordering" right="#gt"/>
3160        </and>
3161      </or>
3162      <rewrite name="cmpf">
3163        <map from="lt" to="gt"/>
3164        <map from="le" to="ge"/>
3165        <map from="gt" to="lt"/>
3166        <map from="ge" to="le"/>
3167      </rewrite>
3168    </swap>
3169  </ins>
3170
3171  <ins name="+BRANCH.s32" mask="0xf8000" exact="0x68000" last="true" dests="0">
3172    <src start="0"/>
3173    <src start="3"/>
3174    <src start="6" mask="0xf7"/>
3175    <mod name="widen0" size="2">
3176      <opt>none</opt>
3177      <opt>h0</opt>
3178      <opt>h1</opt>
3179    </mod>
3180    <mod name="widen1" size="2">
3181      <opt>none</opt>
3182      <opt>h0</opt>
3183      <opt>h1</opt>
3184    </mod>
3185    <mod name="cmpf" size="2">
3186      <opt>gt</opt>
3187      <opt>ge</opt>
3188      <opt>lt</opt>
3189      <opt>le</opt>
3190    </mod>
3191    <derived start="12" size="3">
3192      <and>
3193        <eq left="widen0" right="#none"/>
3194        <eq left="widen1" right="#none"/>
3195      </and>
3196      <reserved/>
3197      <reserved/>
3198      <reserved/>
3199      <reserved/>
3200      <reserved/>
3201      <reserved/>
3202      <reserved/>
3203    </derived>
3204    <derived start="9" size="3">
3205      <and>
3206        <eq left="ordering" right="#lt"/>
3207        <eq left="cmpf" right="#lt"/>
3208      </and>
3209      <or>
3210        <and>
3211          <eq left="ordering" right="#lt"/>
3212          <eq left="cmpf" right="#le"/>
3213        </and>
3214        <and alias="true">
3215          <eq left="ordering" right="#eq"/>
3216          <or>
3217            <eq left="cmpf" right="#le"/>
3218            <eq left="cmpf" right="#ge"/>
3219          </or>
3220        </and>
3221      </or>
3222      <and>
3223        <eq left="ordering" right="#lt"/>
3224        <eq left="cmpf" right="#ge"/>
3225      </and>
3226      <and>
3227        <eq left="ordering" right="#lt"/>
3228        <eq left="cmpf" right="#gt"/>
3229      </and>
3230      <and alias="true">
3231        <eq left="ordering" right="#eq"/>
3232        <or>
3233          <eq left="cmpf" right="#lt"/>
3234          <eq left="cmpf" right="#gt"/>
3235        </or>
3236      </and>
3237      <reserved/>
3238      <reserved/>
3239      <reserved/>
3240    </derived>
3241    <swap left="0" right="1">
3242      <eq left="ordering" right="#gt"/>
3243      <rewrite name="cmpf">
3244        <map from="lt" to="gt"/>
3245        <map from="le" to="ge"/>
3246        <map from="gt" to="lt"/>
3247        <map from="ge" to="le"/>
3248      </rewrite>
3249    </swap>
3250  </ins>
3251
3252  <ins name="+BRANCH.u16" mask="0xf8000" exact="0x68000" last="true" dests="0">
3253    <src start="0"/>
3254    <src start="3"/>
3255    <src start="6" mask="0xf7"/>
3256    <mod name="widen0" size="2">
3257      <opt>none</opt>
3258      <opt>h0</opt>
3259      <opt>h1</opt>
3260    </mod>
3261    <mod name="widen1" size="2">
3262      <opt>none</opt>
3263      <opt>h0</opt>
3264      <opt>h1</opt>
3265    </mod>
3266    <mod name="cmpf" size="2">
3267      <opt>gt</opt>
3268      <opt>ge</opt>
3269      <opt>lt</opt>
3270      <opt>le</opt>
3271    </mod>
3272    <derived start="12" size="3">
3273      <reserved/>
3274      <and>
3275        <eq left="widen0" right="#h0"/>
3276        <eq left="widen1" right="#h0"/>
3277      </and>
3278      <and>
3279        <eq left="widen0" right="#h1"/>
3280        <eq left="widen1" right="#h1"/>
3281      </and>
3282      <and>
3283        <eq left="widen0" right="#h1"/>
3284        <eq left="widen1" right="#h0"/>
3285      </and>
3286      <reserved/>
3287      <reserved/>
3288      <reserved/>
3289      <reserved/>
3290    </derived>
3291    <derived start="9" size="3">
3292      <or>
3293        <and>
3294          <eq left="widen0" right="#h1"/>
3295          <eq left="widen1" right="#h0"/>
3296          <eq left="cmpf" right="#lt"/>
3297        </and>
3298        <and>
3299          <eq left="widen0" right="widen1"/>
3300          <neq left="ordering" right="#lt"/>
3301          <eq left="cmpf" right="#lt"/>
3302        </and>
3303      </or>
3304      <or>
3305        <and>
3306          <eq left="widen0" right="#h1"/>
3307          <eq left="widen1" right="#h0"/>
3308          <eq left="cmpf" right="#le"/>
3309        </and>
3310        <and>
3311          <eq left="widen0" right="widen1"/>
3312          <neq left="ordering" right="#lt"/>
3313          <eq left="cmpf" right="#le"/>
3314        </and>
3315      </or>
3316      <or>
3317        <and>
3318          <eq left="widen0" right="#h1"/>
3319          <eq left="widen1" right="#h0"/>
3320          <eq left="cmpf" right="#ge"/>
3321        </and>
3322        <and>
3323          <eq left="widen0" right="widen1"/>
3324          <neq left="ordering" right="#lt"/>
3325          <eq left="cmpf" right="#ge"/>
3326        </and>
3327      </or>
3328      <or>
3329        <and>
3330          <eq left="widen0" right="#h1"/>
3331          <eq left="widen1" right="#h0"/>
3332          <eq left="cmpf" right="#gt"/>
3333        </and>
3334        <and>
3335          <eq left="widen0" right="widen1"/>
3336          <neq left="ordering" right="#lt"/>
3337          <eq left="cmpf" right="#gt"/>
3338        </and>
3339      </or>
3340      <reserved/>
3341      <reserved/>
3342      <reserved/>
3343      <reserved/>
3344    </derived>
3345    <swap left="0" right="1">
3346      <or>
3347        <and>
3348          <eq left="widen0" right="#h0"/>
3349          <eq left="widen1" right="#h1"/>
3350        </and>
3351        <and>
3352          <eq left="widen0" right="widen1"/>
3353          <eq left="ordering" right="#lt"/>
3354        </and>
3355      </or>
3356      <rewrite name="cmpf">
3357        <map from="lt" to="gt"/>
3358        <map from="le" to="ge"/>
3359        <map from="gt" to="lt"/>
3360        <map from="ge" to="le"/>
3361      </rewrite>
3362    </swap>
3363  </ins>
3364
3365  <ins name="+BRANCH.u32" mask="0xf8000" exact="0x68000" last="true" dests="0">
3366    <src start="0"/>
3367    <src start="3"/>
3368    <src start="6" mask="0xf7"/>
3369    <mod name="widen0" size="2">
3370      <opt>none</opt>
3371      <opt>h0</opt>
3372      <opt>h1</opt>
3373    </mod>
3374    <mod name="widen1" size="2">
3375      <opt>none</opt>
3376      <opt>h0</opt>
3377      <opt>h1</opt>
3378    </mod>
3379    <mod name="cmpf" size="2">
3380      <opt>gt</opt>
3381      <opt>ge</opt>
3382      <opt>lt</opt>
3383      <opt>le</opt>
3384    </mod>
3385    <derived start="12" size="3">
3386      <and>
3387        <eq left="widen0" right="#none"/>
3388        <eq left="widen1" right="#none"/>
3389      </and>
3390      <reserved/>
3391      <reserved/>
3392      <reserved/>
3393      <reserved/>
3394      <reserved/>
3395      <reserved/>
3396      <reserved/>
3397    </derived>
3398    <derived start="9" size="3">
3399      <and>
3400        <neq left="ordering" right="#lt"/>
3401        <eq left="cmpf" right="#lt"/>
3402      </and>
3403      <and>
3404        <neq left="ordering" right="#lt"/>
3405        <eq left="cmpf" right="#le"/>
3406      </and>
3407      <and>
3408        <neq left="ordering" right="#lt"/>
3409        <eq left="cmpf" right="#ge"/>
3410      </and>
3411      <and>
3412        <neq left="ordering" right="#lt"/>
3413        <eq left="cmpf" right="#gt"/>
3414      </and>
3415      <reserved/>
3416      <reserved/>
3417      <reserved/>
3418      <reserved/>
3419    </derived>
3420    <swap left="0" right="1">
3421      <eq left="ordering" right="#lt"/>
3422      <rewrite name="cmpf">
3423        <map from="lt" to="gt"/>
3424        <map from="le" to="ge"/>
3425        <map from="gt" to="lt"/>
3426        <map from="ge" to="le"/>
3427      </rewrite>
3428    </swap>
3429  </ins>
3430
3431  <ins name="+BRANCHC.i16" mask="0xff830" exact="0x6f030" last="true" dests="0">
3432    <src start="0"/>
3433    <src start="6" mask="0xf7"/>
3434    <mod name="combine" start="10" size="1">
3435      <opt>any</opt>
3436      <opt>all</opt>
3437    </mod>
3438    <mod name="lane0" size="1" default="h0">
3439      <opt>h0</opt>
3440      <opt>h1</opt>
3441    </mod>
3442    <derived start="9" size="1">
3443      <eq left="lane0" right="#h0"/>
3444      <eq left="lane0" right="#h1"/>
3445    </derived>
3446    <derived start="3" size="1">
3447      <eq left="lane0" right="#h1"/>
3448      <eq left="lane0" right="#h0"/>
3449    </derived>
3450  </ins>
3451
3452  <ins name="+BRANCHC.i32" mask="0xffa38" exact="0x6f238" last="true" dests="0">
3453    <src start="0"/>
3454    <src start="6" mask="0xf7"/>
3455    <mod name="combine" start="10" size="1">
3456      <opt>any</opt>
3457      <opt>all</opt>
3458    </mod>
3459  </ins>
3460
3461  <ins name="+BRANCHZ.f16" mask="0xff000" exact="0x6f000" last="true" dests="0">
3462    <src start="0"/>
3463    <src start="6" mask="0xf7"/>
3464    <mod name="widen0" size="2">
3465      <opt>none</opt>
3466      <opt>h0</opt>
3467      <opt>h1</opt>
3468    </mod>
3469    <mod name="cmpf" size="3">
3470      <opt>eq</opt>
3471      <opt>gt</opt>
3472      <opt>ge</opt>
3473      <opt>ne</opt>
3474      <opt>lt</opt>
3475      <opt>le</opt>
3476    </mod>
3477    <derived start="4" size="2">
3478      <reserved/>
3479      <eq left="widen0" right="#h1"/>
3480      <eq left="widen0" right="#h0"/>
3481      <reserved/>
3482    </derived>
3483    <derived start="3" size="1">
3484      <or>
3485        <eq left="cmpf" right="#ne"/>
3486        <eq left="cmpf" right="#ge"/>
3487        <eq left="cmpf" right="#le"/>
3488      </or>
3489      <or>
3490        <eq left="cmpf" right="#eq"/>
3491        <eq left="cmpf" right="#gt"/>
3492        <eq left="cmpf" right="#lt"/>
3493      </or>
3494    </derived>
3495    <derived start="9" size="3">
3496      <reserved/>
3497      <reserved/>
3498      <reserved/>
3499      <reserved/>
3500      <reserved/>
3501      <or>
3502        <eq left="cmpf" right="#ne"/>
3503        <eq left="cmpf" right="#eq"/>
3504      </or>
3505      <or>
3506        <eq left="cmpf" right="#ge"/>
3507        <eq left="cmpf" right="#gt"/>
3508      </or>
3509      <or>
3510        <eq left="cmpf" right="#le"/>
3511        <eq left="cmpf" right="#lt"/>
3512      </or>
3513    </derived>
3514  </ins>
3515
3516  <ins name="+BRANCHZ.f32" mask="0xff030" exact="0x6f000" last="true" dests="0">
3517    <src start="0"/>
3518    <src start="6" mask="0xf7"/>
3519    <mod name="cmpf" size="3">
3520      <opt>eq</opt>
3521      <opt>gt</opt>
3522      <opt>ge</opt>
3523      <opt>ne</opt>
3524      <opt>lt</opt>
3525      <opt>le</opt>
3526    </mod>
3527    <derived start="3" size="1">
3528      <or>
3529        <eq left="cmpf" right="#ne"/>
3530        <eq left="cmpf" right="#ge"/>
3531        <eq left="cmpf" right="#le"/>
3532      </or>
3533      <or>
3534        <eq left="cmpf" right="#eq"/>
3535        <eq left="cmpf" right="#gt"/>
3536        <eq left="cmpf" right="#lt"/>
3537      </or>
3538    </derived>
3539    <derived start="9" size="3">
3540      <reserved/>
3541      <reserved/>
3542      <reserved/>
3543      <reserved/>
3544      <reserved/>
3545      <or>
3546        <eq left="cmpf" right="#ne"/>
3547        <eq left="cmpf" right="#eq"/>
3548      </or>
3549      <or>
3550        <eq left="cmpf" right="#ge"/>
3551        <eq left="cmpf" right="#gt"/>
3552      </or>
3553      <or>
3554        <eq left="cmpf" right="#le"/>
3555        <eq left="cmpf" right="#lt"/>
3556      </or>
3557    </derived>
3558  </ins>
3559
3560  <ins name="+BRANCHZ.i16" mask="0xffe00" exact="0x6f800" last="true" dests="0">
3561    <src start="0"/>
3562    <src start="6" mask="0xf7"/>
3563    <mod name="widen0" size="2">
3564      <opt>none</opt>
3565      <opt>h0</opt>
3566      <opt>h1</opt>
3567    </mod>
3568    <mod name="cmpf" size="1">
3569      <opt>eq</opt>
3570      <opt>ne</opt>
3571    </mod>
3572    <derived start="4" size="2">
3573      <reserved/>
3574      <eq left="widen0" right="#h1"/>
3575      <eq left="widen0" right="#h0"/>
3576      <reserved/>
3577    </derived>
3578    <derived start="3" size="1">
3579      <eq left="cmpf" right="#ne"/>
3580      <eq left="cmpf" right="#eq"/>
3581    </derived>
3582  </ins>
3583
3584  <ins name="+BRANCHZ.i32" mask="0xffe30" exact="0x6f800" last="true" dests="0">
3585    <src start="0"/>
3586    <src start="6" mask="0xf7"/>
3587    <mod name="cmpf" size="1">
3588      <opt>eq</opt>
3589      <opt>ne</opt>
3590    </mod>
3591    <derived start="3" size="1">
3592      <eq left="cmpf" right="#ne"/>
3593      <eq left="cmpf" right="#eq"/>
3594    </derived>
3595  </ins>
3596
3597  <ins name="+BRANCHZ.s16" mask="0xff008" exact="0x6f008" last="true" dests="0">
3598    <src start="0"/>
3599    <src start="6" mask="0xf7"/>
3600    <mod name="widen0" size="2">
3601      <opt>none</opt>
3602      <opt>h0</opt>
3603      <opt>h1</opt>
3604    </mod>
3605    <mod name="cmpf" size="2">
3606      <opt>gt</opt>
3607      <opt>ge</opt>
3608      <opt>lt</opt>
3609      <opt>le</opt>
3610    </mod>
3611    <derived start="4" size="2">
3612      <reserved/>
3613      <eq left="widen0" right="#h1"/>
3614      <eq left="widen0" right="#h0"/>
3615      <reserved/>
3616    </derived>
3617    <derived start="9" size="3">
3618      <eq left="cmpf" right="#lt"/>
3619      <eq left="cmpf" right="#le"/>
3620      <eq left="cmpf" right="#ge"/>
3621      <eq left="cmpf" right="#gt"/>
3622      <reserved/>
3623      <reserved/>
3624      <reserved/>
3625      <reserved/>
3626    </derived>
3627  </ins>
3628
3629  <ins name="+BRANCHZ.s32" mask="0xff038" exact="0x6f008" last="true" dests="0">
3630    <src start="0"/>
3631    <src start="6" mask="0xf7"/>
3632    <mod name="cmpf" size="2">
3633      <opt>gt</opt>
3634      <opt>ge</opt>
3635      <opt>lt</opt>
3636      <opt>le</opt>
3637    </mod>
3638    <derived start="9" size="3">
3639      <eq left="cmpf" right="#lt"/>
3640      <eq left="cmpf" right="#le"/>
3641      <eq left="cmpf" right="#ge"/>
3642      <eq left="cmpf" right="#gt"/>
3643      <reserved/>
3644      <reserved/>
3645      <reserved/>
3646      <reserved/>
3647    </derived>
3648  </ins>
3649
3650  <ins name="+BRANCHZ.u16" mask="0xff008" exact="0x6f000" last="true" dests="0">
3651    <src start="0"/>
3652    <src start="6" mask="0xf7"/>
3653    <mod name="widen0" size="2">
3654      <opt>none</opt>
3655      <opt>h0</opt>
3656      <opt>h1</opt>
3657    </mod>
3658    <mod name="cmpf" size="2">
3659      <opt>gt</opt>
3660      <opt>ge</opt>
3661      <opt>lt</opt>
3662      <opt>le</opt>
3663    </mod>
3664    <derived start="4" size="2">
3665      <reserved/>
3666      <eq left="widen0" right="#h1"/>
3667      <eq left="widen0" right="#h0"/>
3668      <reserved/>
3669    </derived>
3670    <derived start="9" size="3">
3671      <eq left="cmpf" right="#lt"/>
3672      <eq left="cmpf" right="#le"/>
3673      <eq left="cmpf" right="#ge"/>
3674      <eq left="cmpf" right="#gt"/>
3675      <reserved/>
3676      <reserved/>
3677      <reserved/>
3678      <reserved/>
3679    </derived>
3680  </ins>
3681
3682  <ins name="+BRANCHZ.u32" mask="0xff038" exact="0x6f000" last="true" dests="0">
3683    <src start="0"/>
3684    <src start="6" mask="0xf7"/>
3685    <mod name="cmpf" size="2">
3686      <opt>gt</opt>
3687      <opt>ge</opt>
3688      <opt>lt</opt>
3689      <opt>le</opt>
3690    </mod>
3691    <derived start="9" size="3">
3692      <eq left="cmpf" right="#lt"/>
3693      <eq left="cmpf" right="#le"/>
3694      <eq left="cmpf" right="#ge"/>
3695      <eq left="cmpf" right="#gt"/>
3696      <reserved/>
3697      <reserved/>
3698      <reserved/>
3699      <reserved/>
3700    </derived>
3701  </ins>
3702
3703  <ins name="+BRANCH_DIVERG" mask="0xffe3f" exact="0x6f83c" last="true" dests="0">
3704    <src start="6" mask="0xf7"/>
3705  </ins>
3706
3707  <ins name="+BRANCH_LOWBITS.f32" mask="0xffe38" exact="0x6fa38" last="true" dests="0">
3708    <src start="0"/>
3709    <src start="6" mask="0xf7"/>
3710  </ins>
3711
3712  <ins name="+BRANCH_NO_DIVERG" mask="0xffe3f" exact="0x6fa34" last="true" dests="0">
3713    <src start="6" mask="0xf7"/>
3714  </ins>
3715
3716  <ins name="+CLPER_OLD.i32" mask="0xfffc0" exact="0x3f0c0">
3717    <src start="0" mask="0x7"/>
3718    <src start="3"/>
3719  </ins>
3720
3721  <ins name="+CLPER.i32" mask="0xfc000" exact="0x7c000">
3722    <src start="0" mask="0x7"/>
3723    <src start="3"/>
3724    <mod name="lane_op" start="6" size="2">
3725      <opt>none</opt>
3726      <opt>xor</opt>
3727      <opt>accumulate</opt>
3728      <opt>shift</opt>
3729    </mod>
3730    <mod name="subgroup" start="8" size="2">
3731      <opt>subgroup2</opt>
3732      <opt>subgroup4</opt>
3733      <opt>subgroup8</opt>
3734      <opt pseudo="true">subgroup16</opt> <!-- Only on Valhall -->
3735    </mod>
3736    <mod name="inactive_result" start="10" size="4">
3737      <opt>zero</opt>
3738      <opt>umax</opt>
3739      <opt>i1</opt>
3740      <opt>v2i1</opt>
3741      <opt>smin</opt>
3742      <opt>smax</opt>
3743      <opt>v2smin</opt>
3744      <opt>v2smax</opt>
3745      <opt>v4smin</opt>
3746      <opt>v4smax</opt>
3747      <opt>f1</opt>
3748      <opt>v2f1</opt>
3749      <opt>infn</opt>
3750      <opt>inf</opt>
3751      <opt>v2infn</opt>
3752      <opt>v2inf</opt>
3753    </mod>
3754  </ins>
3755
3756  <ins name="+CUBEFACE2" mask="0xffff8" exact="0x3de58">
3757    <src start="0"/>
3758  </ins>
3759
3760  <ins name="+CUBE_SSEL" mask="0xffc00" exact="0x3e000">
3761    <src start="0"/>
3762    <src start="3"/>
3763    <src start="6"/>
3764    <mod name="neg0" size="1" opt="neg"/>
3765    <mod name="neg1" size="1" opt="neg"/>
3766    <derived start="9" size="1">
3767      <and>
3768        <eq left="neg0" right="#none"/>
3769        <eq left="neg1" right="#none"/>
3770      </and>
3771      <and>
3772        <eq left="neg0" right="#neg"/>
3773        <eq left="neg1" right="#neg"/>
3774      </and>
3775    </derived>
3776  </ins>
3777
3778  <ins name="+CUBE_TSEL" mask="0xffc00" exact="0x3e400">
3779    <src start="0"/>
3780    <src start="3"/>
3781    <src start="6"/>
3782    <mod name="neg0" size="1" opt="neg"/>
3783    <mod name="neg1" size="1" opt="neg"/>
3784    <derived start="9" size="1">
3785      <and>
3786        <eq left="neg0" right="#none"/>
3787        <eq left="neg1" right="#none"/>
3788      </and>
3789      <and>
3790        <eq left="neg0" right="#neg"/>
3791        <eq left="neg1" right="#neg"/>
3792      </and>
3793    </derived>
3794  </ins>
3795
3796  <ins name="+DISCARD.f32" mask="0xff800" exact="0xc8800" dests="0">
3797    <src start="0"/>
3798    <src start="3"/>
3799    <mod name="cmpf" size="3">
3800      <opt>eq</opt>
3801      <opt>gt</opt>
3802      <opt>ge</opt>
3803      <opt>ne</opt>
3804      <opt>lt</opt>
3805      <opt>le</opt>
3806    </mod>
3807    <mod name="widen0" size="2">
3808      <opt>none</opt>
3809      <opt>h0</opt>
3810      <opt>h1</opt>
3811    </mod>
3812    <mod name="widen1" size="2">
3813      <opt>none</opt>
3814      <opt>h0</opt>
3815      <opt>h1</opt>
3816    </mod>
3817    <derived start="6" size="2">
3818      <eq left="cmpf" right="#eq"/>
3819      <eq left="cmpf" right="#ne"/>
3820      <eq left="cmpf" right="#lt"/>
3821      <eq left="cmpf" right="#le"/>
3822    </derived>
3823    <derived start="8" size="3">
3824      <and>
3825        <eq left="widen0" right="#h0"/>
3826        <eq left="widen1" right="#h0"/>
3827      </and>
3828      <and>
3829        <eq left="widen0" right="#h1"/>
3830        <eq left="widen1" right="#h0"/>
3831      </and>
3832      <and>
3833        <eq left="widen0" right="#h0"/>
3834        <eq left="widen1" right="#h1"/>
3835      </and>
3836      <and>
3837        <eq left="widen0" right="#h1"/>
3838        <eq left="widen1" right="#h1"/>
3839      </and>
3840      <and>
3841        <eq left="widen0" right="#none"/>
3842        <eq left="widen1" right="#none"/>
3843      </and>
3844      <reserved/>
3845      <reserved/>
3846      <reserved/>
3847    </derived>
3848    <swap left="0" right="1">
3849      <or>
3850        <eq left="cmpf" right="#gt"/>
3851        <eq left="cmpf" right="#ge"/>
3852      </or>
3853      <rewrite name="cmpf">
3854        <map from="gt" to="lt"/>
3855        <map from="ge" to="le"/>
3856      </rewrite>
3857    </swap>
3858  </ins>
3859
3860  <ins name="+DOORBELL" mask="0xffff8" exact="0xd7860" unused="true" message="job_management" dests="0">
3861    <src start="0"/>
3862  </ins>
3863
3864  <ins name="+EUREKA" mask="0xffff8" exact="0xd7850" unused="true" message="job_management" dests="0">
3865    <src start="0"/>
3866  </ins>
3867
3868  <ins name="+F16_TO_F32" mask="0xffff0" exact="0x3cd10">
3869    <src start="0"/>
3870    <mod name="lane0" start="3" size="1" default="h0">
3871      <opt>h0</opt>
3872      <opt>h1</opt>
3873    </mod>
3874    <mod name="ftz" start="9" size="1" opt="ftz" pseudo="true"/>
3875  </ins>
3876
3877  <ins name="+F16_TO_S32">
3878    <src start="0"/>
3879    <mod name="round" size="3">
3880      <opt>none</opt>
3881      <opt>rtp</opt>
3882      <opt>rtn</opt>
3883      <opt>rtz</opt>
3884      <opt>rtna</opt>
3885    </mod>
3886    <mod name="lane0" size="1" default="h0">
3887      <opt>h0</opt>
3888      <opt>h1</opt>
3889    </mod>
3890    <encoding mask="0xfff48" exact="0x3c500">
3891      <neq left="round" right="#rtna"/>
3892      <copy name="lane0" start="7"/>
3893      <derived start="4" size="2">
3894        <eq left="round" right="#none"/>
3895        <eq left="round" right="#rtp"/>
3896        <eq left="round" right="#rtn"/>
3897        <eq left="round" right="#rtz"/>
3898      </derived>
3899    </encoding>
3900    <encoding mask="0xfffd8" exact="0x3cc40">
3901      <eq left="round" right="#rtna"/>
3902      <copy name="lane0" start="5"/>
3903    </encoding>
3904  </ins>
3905
3906  <ins name="+F16_TO_U32">
3907    <src start="0"/>
3908    <mod name="round" size="3">
3909      <opt>none</opt>
3910      <opt>rtp</opt>
3911      <opt>rtn</opt>
3912      <opt>rtz</opt>
3913      <opt>rtna</opt>
3914    </mod>
3915    <mod name="lane0" size="1" default="h0">
3916      <opt>h0</opt>
3917      <opt>h1</opt>
3918    </mod>
3919    <encoding mask="0xfff48" exact="0x3c508">
3920      <neq left="round" right="#rtna"/>
3921      <copy name="lane0" start="7"/>
3922      <derived start="4" size="2">
3923        <eq left="round" right="#none"/>
3924        <eq left="round" right="#rtp"/>
3925        <eq left="round" right="#rtn"/>
3926        <eq left="round" right="#rtz"/>
3927      </derived>
3928    </encoding>
3929    <encoding mask="0xfffd8" exact="0x3cc48">
3930      <eq left="round" right="#rtna"/>
3931      <copy name="lane0" start="5"/>
3932    </encoding>
3933  </ins>
3934
3935  <ins name="+F32_TO_S32">
3936    <src start="0"/>
3937    <mod name="round" size="3">
3938      <opt>none</opt>
3939      <opt>rtp</opt>
3940      <opt>rtn</opt>
3941      <opt>rtz</opt>
3942      <opt>rtna</opt>
3943    </mod>
3944    <encoding mask="0xfffc8" exact="0x3c980">
3945      <neq left="round" right="#rtna"/>
3946      <derived start="4" size="2">
3947        <eq left="round" right="#none"/>
3948        <eq left="round" right="#rtp"/>
3949        <eq left="round" right="#rtn"/>
3950        <eq left="round" right="#rtz"/>
3951      </derived>
3952    </encoding>
3953    <encoding mask="0xffff8" exact="0x3cca0">
3954      <eq left="round" right="#rtna"/>
3955    </encoding>
3956  </ins>
3957
3958  <ins name="+F32_TO_U32">
3959    <src start="0"/>
3960    <mod name="round" size="3">
3961      <opt>none</opt>
3962      <opt>rtp</opt>
3963      <opt>rtn</opt>
3964      <opt>rtz</opt>
3965      <opt>rtna</opt>
3966    </mod>
3967    <encoding mask="0xfffc8" exact="0x3c988">
3968      <neq left="round" right="#rtna"/>
3969      <derived start="4" size="2">
3970        <eq left="round" right="#none"/>
3971        <eq left="round" right="#rtp"/>
3972        <eq left="round" right="#rtn"/>
3973        <eq left="round" right="#rtz"/>
3974      </derived>
3975    </encoding>
3976    <encoding mask="0xffff8" exact="0x3cca8">
3977      <eq left="round" right="#rtna"/>
3978    </encoding>
3979  </ins>
3980
3981  <ins name="+FADD.f32">
3982    <src start="0"/>
3983    <src start="3"/>
3984    <mod name="round" size="3">
3985      <opt>none</opt>
3986      <opt>rtp</opt>
3987      <opt>rtn</opt>
3988      <opt>rtz</opt>
3989      <opt>rto</opt>
3990    </mod>
3991    <mod name="abs1" size="1" opt="abs"/>
3992    <mod name="neg0" size="1" opt="neg"/>
3993    <mod name="neg1" size="1" opt="neg"/>
3994    <mod name="clamp" size="2">
3995      <opt>none</opt>
3996      <opt>clamp_0_inf</opt>
3997      <opt>clamp_m1_1</opt>
3998      <opt>clamp_0_1</opt>
3999    </mod>
4000    <mod name="abs0" size="1" opt="abs"/>
4001    <mod name="widen0" size="2">
4002      <opt>none</opt>
4003      <opt>h0</opt>
4004      <opt>h1</opt>
4005    </mod>
4006    <mod name="widen1" size="2">
4007      <opt>none</opt>
4008      <opt>h0</opt>
4009      <opt>h1</opt>
4010    </mod>
4011    <encoding mask="0xf0000" exact="0x20000">
4012      <neq left="round" right="#rto"/>
4013      <copy name="abs1" start="6"/>
4014      <copy name="neg0" start="7"/>
4015      <copy name="neg1" start="8"/>
4016      <copy name="clamp" start="11"/>
4017      <copy name="abs0" start="15"/>
4018      <derived start="13" size="2">
4019        <eq left="round" right="#none"/>
4020        <eq left="round" right="#rtp"/>
4021        <eq left="round" right="#rtn"/>
4022        <eq left="round" right="#rtz"/>
4023      </derived>
4024      <derived start="9" size="2">
4025        <and>
4026          <eq left="widen0" right="#none"/>
4027          <eq left="widen1" right="#none"/>
4028        </and>
4029        <and>
4030          <eq left="widen0" right="#none"/>
4031          <eq left="widen1" right="#h0"/>
4032        </and>
4033        <and>
4034          <eq left="widen0" right="#none"/>
4035          <eq left="widen1" right="#h1"/>
4036        </and>
4037        <and>
4038          <eq left="widen0" right="#h0"/>
4039          <eq left="widen1" right="#h0"/>
4040        </and>
4041      </derived>
4042    </encoding>
4043    <encoding mask="0xfffc0" exact="0x75200">
4044      <and>
4045        <eq left="round" right="#rto"/>
4046        <eq left="widen0" right="#none"/>
4047        <eq left="widen1" right="#none"/>
4048        <eq left="abs0" right="#none"/>
4049        <eq left="abs1" right="#none"/>
4050        <eq left="neg0" right="#none"/>
4051        <eq left="neg1" right="#none"/>
4052        <eq left="clamp" right="#none"/>
4053      </and>
4054    </encoding>
4055    <swap left="0" right="1">
4056      <or>
4057        <and>
4058          <eq left="widen0" right="#h0"/>
4059          <eq left="widen1" right="#none"/>
4060        </and>
4061        <and>
4062          <eq left="widen0" right="#h1"/>
4063          <eq left="widen1" right="#none"/>
4064        </and>
4065      </or>
4066    </swap>
4067  </ins>
4068
4069  <ins name="+FADD.v2f16" mask="0xf0000" exact="0xa0000">
4070    <src start="0"/>
4071    <src start="3"/>
4072    <mod name="abs1" start="6" size="1" opt="abs"/>
4073    <mod name="neg0" start="7" size="1" opt="neg"/>
4074    <mod name="neg1" start="8" size="1" opt="neg"/>
4075    <mod name="swz0" start="9" size="2" default="h01">
4076      <opt>h00</opt>
4077      <opt>h10</opt>
4078      <opt>h01</opt>
4079      <opt>h11</opt>
4080    </mod>
4081    <mod name="swz1" start="11" size="2" default="h01">
4082      <opt>h00</opt>
4083      <opt>h10</opt>
4084      <opt>h01</opt>
4085      <opt>h11</opt>
4086    </mod>
4087    <mod name="round" start="13" size="2">
4088      <opt>none</opt>
4089      <opt>rtp</opt>
4090      <opt>rtn</opt>
4091      <opt>rtz</opt>
4092    </mod>
4093    <mod name="abs0" start="15" size="1" opt="abs"/>
4094  </ins>
4095
4096  <ins name="+FADD_RSCALE.f32" mask="0xe8000" exact="0x88000">
4097    <src start="0"/>
4098    <src start="3"/>
4099    <src start="6"/>
4100    <mod name="clamp" size="1" opt="clamp_0_1"/>
4101    <mod name="special" size="1" opt="n"/>
4102    <mod name="round" size="3">
4103      <opt>none</opt>
4104      <opt>rtp</opt>
4105      <opt>rtn</opt>
4106      <opt>rtz</opt>
4107      <opt>rtna</opt>
4108    </mod>
4109    <mod name="abs1" start="12" size="1" opt="abs"/>
4110    <mod name="neg0" start="13" size="1" opt="neg"/>
4111    <mod name="neg1" start="14" size="1" opt="neg"/>
4112    <mod name="abs0" start="16" size="1" opt="abs"/>
4113    <derived start="9" size="3">
4114      <and>
4115        <eq left="clamp" right="#none"/>
4116        <eq left="special" right="#none"/>
4117        <eq left="round" right="#none"/>
4118      </and>
4119      <reserved/>
4120      <and>
4121        <eq left="clamp" right="#clamp_0_1"/>
4122        <eq left="special" right="#none"/>
4123        <eq left="round" right="#none"/>
4124      </and>
4125      <and>
4126        <eq left="clamp" right="#none"/>
4127        <eq left="special" right="#n"/>
4128        <eq left="round" right="#rtna"/>
4129      </and>
4130      <and>
4131        <eq left="clamp" right="#none"/>
4132        <eq left="special" right="#n"/>
4133        <eq left="round" right="#none"/>
4134      </and>
4135      <and>
4136        <eq left="clamp" right="#none"/>
4137        <eq left="special" right="#n"/>
4138        <eq left="round" right="#rtp"/>
4139      </and>
4140      <and>
4141        <eq left="clamp" right="#none"/>
4142        <eq left="special" right="#n"/>
4143        <eq left="round" right="#rtn"/>
4144      </and>
4145      <and>
4146        <eq left="clamp" right="#none"/>
4147        <eq left="special" right="#n"/>
4148        <eq left="round" right="#rtz"/>
4149      </and>
4150    </derived>
4151  </ins>
4152
4153  <ins name="+FATAN_ASSIST.f16" mask="0xfff00" exact="0x67800" unused="true" table="true">
4154    <src start="0" mask="0xf7"/>
4155    <src start="3" mask="0xf7"/>
4156    <mod name="lane1" start="6" size="1" default="h0">
4157      <opt>h0</opt>
4158      <opt>h1</opt>
4159    </mod>
4160    <mod name="lane0" start="7" size="1" default="h0">
4161      <opt>h0</opt>
4162      <opt>h1</opt>
4163    </mod>
4164  </ins>
4165
4166  <ins name="+FATAN_ASSIST.f32" mask="0xfffc0" exact="0x67a00" unused="true" table="true">
4167    <src start="0" mask="0xf7"/>
4168    <src start="3" mask="0xf7"/>
4169  </ins>
4170
4171  <ins name="+FATAN_TABLE.f16" mask="0xfff00" exact="0x67900" unused="true" table="true">
4172    <src start="0" mask="0xf7"/>
4173    <src start="3" mask="0xf7"/>
4174    <mod name="lane1" start="6" size="1" default="h0">
4175      <opt>h0</opt>
4176      <opt>h1</opt>
4177    </mod>
4178    <mod name="lane0" start="7" size="1" default="h0">
4179      <opt>h0</opt>
4180      <opt>h1</opt>
4181    </mod>
4182  </ins>
4183
4184  <ins name="+FATAN_TABLE.f32" mask="0xfffc0" exact="0x67a40" unused="true" table="true">
4185    <src start="0" mask="0xf7"/>
4186    <src start="3" mask="0xf7"/>
4187  </ins>
4188
4189  <ins name="+FCMP.f32" mask="0xf0000" exact="0x30000">
4190    <src start="0"/>
4191    <src start="3"/>
4192    <mod name="widen0" size="2">
4193      <opt>none</opt>
4194      <opt>h0</opt>
4195      <opt>h1</opt>
4196    </mod>
4197    <mod name="widen1" size="2">
4198      <opt>none</opt>
4199      <opt>h0</opt>
4200      <opt>h1</opt>
4201    </mod>
4202    <mod name="neg0" size="1" opt="neg"/>
4203    <mod name="neg1" size="1" opt="neg"/>
4204    <mod name="cmpf" start="6" size="3">
4205      <opt>eq</opt>
4206      <opt>gt</opt>
4207      <opt>ge</opt>
4208      <opt>ne</opt>
4209      <opt>lt</opt>
4210      <opt>le</opt>
4211      <opt>gtlt</opt>
4212      <opt>total</opt>
4213    </mod>
4214    <mod name="abs0" start="11" size="1" opt="abs"/>
4215    <mod name="abs1" start="12" size="1" opt="abs"/>
4216    <mod name="result_type" start="14" size="2" default="i1">
4217      <opt>i1</opt>
4218      <opt>f1</opt>
4219      <opt>m1</opt>
4220    </mod>
4221    <derived start="9" size="2">
4222      <and>
4223        <eq left="widen0" right="#none"/>
4224        <eq left="widen1" right="#none"/>
4225      </and>
4226      <and>
4227        <eq left="widen0" right="#none"/>
4228        <eq left="widen1" right="#h0"/>
4229      </and>
4230      <and>
4231        <eq left="widen0" right="#none"/>
4232        <eq left="widen1" right="#h1"/>
4233      </and>
4234      <and>
4235        <eq left="widen0" right="#h0"/>
4236        <eq left="widen1" right="#h0"/>
4237      </and>
4238    </derived>
4239    <derived start="13" size="1">
4240      <and>
4241        <eq left="neg0" right="#none"/>
4242        <eq left="neg1" right="#none"/>
4243      </and>
4244      <and>
4245        <eq left="neg0" right="#neg"/>
4246        <eq left="neg1" right="#none"/>
4247      </and>
4248    </derived>
4249    <swap left="0" right="1">
4250      <or>
4251        <and>
4252          <eq left="neg0" right="#none"/>
4253          <eq left="neg1" right="#neg"/>
4254        </and>
4255        <and>
4256          <eq left="widen0" right="#h0"/>
4257          <eq left="widen1" right="#none"/>
4258        </and>
4259        <and>
4260          <eq left="widen0" right="#h1"/>
4261          <eq left="widen1" right="#none"/>
4262        </and>
4263      </or>
4264      <rewrite name="cmpf">
4265        <map from="lt" to="gt"/>
4266        <map from="le" to="ge"/>
4267        <map from="gt" to="lt"/>
4268        <map from="ge" to="le"/>
4269      </rewrite>
4270    </swap>
4271  </ins>
4272
4273  <ins name="+FCMP.v2f16" mask="0xf0000" exact="0xb0000">
4274    <src start="0"/>
4275    <src start="3"/>
4276    <mod name="neg0" size="1" opt="neg"/>
4277    <mod name="neg1" size="1" opt="neg"/>
4278    <mod name="cmpf" start="6" size="3">
4279      <opt>eq</opt>
4280      <opt>gt</opt>
4281      <opt>ge</opt>
4282      <opt>ne</opt>
4283      <opt>lt</opt>
4284      <opt>le</opt>
4285      <opt>gtlt</opt>
4286      <opt>total</opt>
4287    </mod>
4288    <mod name="swz0" start="9" size="2" default="h01">
4289      <opt>h00</opt>
4290      <opt>h10</opt>
4291      <opt>h01</opt>
4292      <opt>h11</opt>
4293    </mod>
4294    <mod name="swz1" start="11" size="2" default="h01">
4295      <opt>h00</opt>
4296      <opt>h10</opt>
4297      <opt>h01</opt>
4298      <opt>h11</opt>
4299    </mod>
4300    <mod name="result_type" start="14" size="2" default="i1">
4301      <opt>i1</opt>
4302      <opt>f1</opt>
4303      <opt>m1</opt>
4304    </mod>
4305    <derived start="13" size="1">
4306      <and>
4307        <eq left="neg0" right="#none"/>
4308        <eq left="neg1" right="#none"/>
4309      </and>
4310      <and>
4311        <eq left="neg0" right="#neg"/>
4312        <eq left="neg1" right="#none"/>
4313      </and>
4314    </derived>
4315    <swap left="0" right="1">
4316      <and>
4317        <eq left="neg0" right="#none"/>
4318        <eq left="neg1" right="#neg"/>
4319      </and>
4320      <rewrite name="cmpf">
4321        <map from="lt" to="gt"/>
4322        <map from="le" to="ge"/>
4323        <map from="gt" to="lt"/>
4324        <map from="ge" to="le"/>
4325      </rewrite>
4326    </swap>
4327  </ins>
4328
4329  <ins name="+FCOS_TABLE.u6" mask="0xfffe8" exact="0x67a88" table="true">
4330    <src start="0" mask="0xf7"/>
4331    <mod name="offset" start="4" size="1" opt="offset"/>
4332  </ins>
4333
4334  <ins name="+FEXP.f32" mask="0xfffc0" exact="0x66ac0" table="true">
4335    <src start="0" mask="0xf7"/>
4336    <src start="3" mask="0xf7"/>
4337  </ins>
4338
4339  <ins name="+FEXP_TABLE.u4" mask="0xfffe0" exact="0x67ac0" table="true">
4340    <src start="0" mask="0xf7"/>
4341    <mod name="adj" start="3" size="2">
4342      <opt>none</opt>
4343      <opt>small</opt>
4344      <opt>low</opt>
4345    </mod>
4346  </ins>
4347
4348  <ins name="+FLOGD.f32" mask="0xffff8" exact="0x66340" table="true">
4349    <src start="0" mask="0xf7"/>
4350  </ins>
4351
4352  <ins name="+FLOG_TABLE.f32" table="true">
4353    <src start="0" mask="0xf7"/>
4354    <mod name="widen0" size="2">
4355      <opt>none</opt>
4356      <opt>h0</opt>
4357      <opt>h1</opt>
4358    </mod>
4359    <mod name="mode" size="2">
4360      <opt>red</opt>
4361      <opt>base2</opt>
4362      <opt>natural</opt>
4363    </mod>
4364    <mod name="precision" size="2">
4365      <opt>none</opt>
4366      <opt>high</opt>
4367      <opt>low</opt>
4368    </mod>
4369    <mod name="neg0" size="1" opt="neg"/>
4370    <mod name="abs0" size="1" opt="abs"/>
4371    <mod name="divzero" size="1" opt="divzero"/>
4372    <encoding mask="0xfffc0" exact="0x67300">
4373      <and>
4374        <eq left="mode" right="#red"/>
4375        <eq left="widen0" right="#none"/>
4376        <eq left="precision" right="#none"/>
4377      </and>
4378      <copy name="neg0" start="3"/>
4379      <copy name="abs0" start="4"/>
4380      <copy name="divzero" start="5"/>
4381    </encoding>
4382    <encoding mask="0xfff40" exact="0x67340">
4383      <and>
4384        <eq left="mode" right="#red"/>
4385        <neq left="widen0" right="#none"/>
4386        <eq left="precision" right="#none"/>
4387      </and>
4388      <copy name="neg0" start="3"/>
4389      <copy name="abs0" start="4"/>
4390      <copy name="divzero" start="5"/>
4391      <derived start="7" size="1">
4392        <eq left="widen0" right="#h0"/>
4393        <eq left="widen0" right="#h1"/>
4394      </derived>
4395    </encoding>
4396    <encoding mask="0xfffc0" exact="0x67b00">
4397      <and>
4398        <neq left="mode" right="#red"/>
4399        <eq left="widen0" right="#none"/>
4400        <eq left="precision" right="#none"/>
4401        <eq left="divzero" right="#none"/>
4402      </and>
4403      <copy name="neg0" start="3"/>
4404      <copy name="abs0" start="4"/>
4405      <derived start="5" size="1">
4406        <eq left="mode" right="#base2"/>
4407        <eq left="mode" right="#natural"/>
4408      </derived>
4409    </encoding>
4410    <encoding mask="0xfff40" exact="0x67b40">
4411      <and>
4412        <neq left="mode" right="#red"/>
4413        <neq left="widen0" right="#none"/>
4414        <eq left="precision" right="#none"/>
4415        <eq left="divzero" right="#none"/>
4416      </and>
4417      <copy name="neg0" start="3"/>
4418      <copy name="abs0" start="4"/>
4419      <derived start="5" size="1">
4420        <eq left="mode" right="#base2"/>
4421        <eq left="mode" right="#natural"/>
4422      </derived>
4423      <derived start="7" size="1">
4424        <eq left="widen0" right="#h0"/>
4425        <eq left="widen0" right="#h1"/>
4426      </derived>
4427    </encoding>
4428    <encoding mask="0xfffe0" exact="0x67ae0">
4429      <and>
4430        <neq left="mode" right="#red"/>
4431        <eq left="widen0" right="#none"/>
4432        <neq left="precision" right="#none"/>
4433        <eq left="divzero" right="#none"/>
4434        <eq left="abs0" right="#none"/>
4435        <eq left="neg0" right="#none"/>
4436      </and>
4437      <derived start="3" size="1">
4438        <eq left="mode" right="#natural"/>
4439        <eq left="mode" right="#base2"/>
4440      </derived>
4441      <derived start="4" size="1">
4442        <eq left="precision" right="#high"/>
4443        <eq left="precision" right="#low"/>
4444      </derived>
4445    </encoding>
4446  </ins>
4447
4448  <ins name="+FMAX.f32" mask="0xf0600" exact="0x0">
4449    <src start="0"/>
4450    <src start="3"/>
4451    <mod name="abs1" start="6" size="1" opt="abs"/>
4452    <mod name="neg0" start="7" size="1" opt="neg"/>
4453    <mod name="neg1" start="8" size="1" opt="neg"/>
4454    <mod name="clamp" start="11" size="2">
4455      <opt>none</opt>
4456      <opt>clamp_0_inf</opt>
4457      <opt>clamp_m1_1</opt>
4458      <opt>clamp_0_1</opt>
4459    </mod>
4460    <mod name="sem" start="13" size="2" default="nan_suppress">
4461      <opt>nan_suppress</opt>
4462      <opt>nan_propagate</opt>
4463      <opt>c</opt>
4464      <opt>inverse_c</opt>
4465    </mod>
4466    <mod name="abs0" start="15" size="1" opt="abs"/>
4467  </ins>
4468
4469  <ins name="+FMAX.v2f16" mask="0xf8000" exact="0x80000">
4470    <src start="0"/>
4471    <src start="3"/>
4472    <mod name="abs0" size="1" opt="abs"/>
4473    <mod name="abs1" size="1" opt="abs"/>
4474    <mod name="neg0" start="7" size="1" opt="neg"/>
4475    <mod name="neg1" start="8" size="1" opt="neg"/>
4476    <mod name="swz0" start="9" size="2" default="h01">
4477      <opt>h00</opt>
4478      <opt>h10</opt>
4479      <opt>h01</opt>
4480      <opt>h11</opt>
4481    </mod>
4482    <mod name="swz1" start="11" size="2" default="h01">
4483      <opt>h00</opt>
4484      <opt>h10</opt>
4485      <opt>h01</opt>
4486      <opt>h11</opt>
4487    </mod>
4488    <mod name="sem" start="13" size="2" default="nan_suppress">
4489      <opt>nan_suppress</opt>
4490      <opt>nan_propagate</opt>
4491      <opt>c</opt>
4492      <opt>inverse_c</opt>
4493    </mod>
4494    <derived start="6" size="1">
4495      <or>
4496        <and>
4497          <eq left="abs0" right="#abs"/>
4498          <eq left="abs1" right="#none"/>
4499          <eq left="ordering" right="#gt"/>
4500        </and>
4501        <and>
4502          <eq left="abs0" right="#none"/>
4503          <eq left="abs1" right="#none"/>
4504          <neq left="ordering" right="#gt"/>
4505        </and>
4506      </or>
4507      <or>
4508        <and>
4509          <eq left="abs0" right="#abs"/>
4510          <eq left="abs1" right="#abs"/>
4511          <eq left="ordering" right="#gt"/>
4512        </and>
4513        <and>
4514          <eq left="abs0" right="#abs"/>
4515          <eq left="abs1" right="#none"/>
4516          <neq left="ordering" right="#gt"/>
4517        </and>
4518      </or>
4519    </derived>
4520    <swap left="0" right="1">
4521      <or>
4522        <and>
4523          <eq left="abs0" right="#none"/>
4524          <eq left="ordering" right="#gt"/>
4525        </and>
4526        <and>
4527          <eq left="abs1" right="#abs"/>
4528          <neq left="ordering" right="#gt"/>
4529        </and>
4530      </or>
4531      <rewrite name="sem">
4532        <map from="c" to="inverse_c"/>
4533        <map from="inverse_c" to="c"/>
4534      </rewrite>
4535    </swap>
4536  </ins>
4537
4538  <ins name="+FMIN.f32" mask="0xf0600" exact="0x10000">
4539    <src start="0"/>
4540    <src start="3"/>
4541    <mod name="abs1" start="6" size="1" opt="abs"/>
4542    <mod name="neg0" start="7" size="1" opt="neg"/>
4543    <mod name="neg1" start="8" size="1" opt="neg"/>
4544    <mod name="clamp" start="11" size="2">
4545      <opt>none</opt>
4546      <opt>clamp_0_inf</opt>
4547      <opt>clamp_m1_1</opt>
4548      <opt>clamp_0_1</opt>
4549    </mod>
4550    <mod name="sem" start="13" size="2" default="nan_suppress">
4551      <opt>nan_suppress</opt>
4552      <opt>nan_propagate</opt>
4553      <opt>c</opt>
4554      <opt>inverse_c</opt>
4555    </mod>
4556    <mod name="abs0" start="15" size="1" opt="abs"/>
4557  </ins>
4558
4559  <ins name="+FMIN.v2f16" mask="0xf8000" exact="0x90000">
4560    <src start="0"/>
4561    <src start="3"/>
4562    <mod name="abs0" size="1" opt="abs"/>
4563    <mod name="abs1" size="1" opt="abs"/>
4564    <mod name="neg0" start="7" size="1" opt="neg"/>
4565    <mod name="neg1" start="8" size="1" opt="neg"/>
4566    <mod name="swz0" start="9" size="2" default="h01">
4567      <opt>h00</opt>
4568      <opt>h10</opt>
4569      <opt>h01</opt>
4570      <opt>h11</opt>
4571    </mod>
4572    <mod name="swz1" start="11" size="2" default="h01">
4573      <opt>h00</opt>
4574      <opt>h10</opt>
4575      <opt>h01</opt>
4576      <opt>h11</opt>
4577    </mod>
4578    <mod name="sem" start="13" size="2" default="nan_suppress">
4579      <opt>nan_suppress</opt>
4580      <opt>nan_propagate</opt>
4581      <opt>c</opt>
4582      <opt>inverse_c</opt>
4583    </mod>
4584    <derived start="6" size="1">
4585      <or>
4586        <and>
4587          <eq left="abs0" right="#abs"/>
4588          <eq left="abs1" right="#none"/>
4589          <eq left="ordering" right="#gt"/>
4590        </and>
4591        <and>
4592          <eq left="abs0" right="#none"/>
4593          <eq left="abs1" right="#none"/>
4594          <neq left="ordering" right="#gt"/>
4595        </and>
4596      </or>
4597      <or>
4598        <and>
4599          <eq left="abs0" right="#abs"/>
4600          <eq left="abs1" right="#abs"/>
4601          <eq left="ordering" right="#gt"/>
4602        </and>
4603        <and>
4604          <eq left="abs0" right="#abs"/>
4605          <eq left="abs1" right="#none"/>
4606          <neq left="ordering" right="#gt"/>
4607        </and>
4608      </or>
4609    </derived>
4610    <swap left="0" right="1">
4611      <or>
4612        <and>
4613          <eq left="abs0" right="#none"/>
4614          <eq left="ordering" right="#gt"/>
4615        </and>
4616        <and>
4617          <eq left="abs1" right="#abs"/>
4618          <neq left="ordering" right="#gt"/>
4619        </and>
4620      </or>
4621      <rewrite name="sem">
4622        <map from="c" to="inverse_c"/>
4623        <map from="inverse_c" to="c"/>
4624      </rewrite>
4625    </swap>
4626  </ins>
4627
4628  <ins name="+FPCLASS.f16" mask="0xffff0" exact="0x67c40" table="true">
4629    <src start="0" mask="0xf7"/>
4630    <mod name="lane0" start="3" size="1" default="h0">
4631      <opt>h0</opt>
4632      <opt>h1</opt>
4633    </mod>
4634  </ins>
4635
4636  <ins name="+FPCLASS.f32" mask="0xffff8" exact="0x67c50" table="true">
4637    <src start="0" mask="0xf7"/>
4638  </ins>
4639
4640  <ins name="+FPOW_SC_APPLY" mask="0xfffc0" exact="0x75080">
4641    <src start="0"/>
4642    <src start="3"/>
4643  </ins>
4644
4645  <ins name="+FPOW_SC_DET.f16" table="true">
4646    <src start="0" mask="0xf7"/>
4647    <src start="3" mask="0xf7"/>
4648    <mod name="func" size="2">
4649      <opt>pow</opt>
4650      <opt>powr</opt>
4651      <opt>pown</opt>
4652      <opt>rootn</opt>
4653    </mod>
4654    <mod name="lane1" size="2">
4655      <opt>h0</opt>
4656      <opt>h1</opt>
4657      <opt>none</opt>
4658    </mod>
4659    <mod name="lane0" start="7" size="1" default="h0">
4660      <opt>h0</opt>
4661      <opt>h1</opt>
4662    </mod>
4663    <encoding mask="0xffe00" exact="0x67400">
4664      <or>
4665        <eq left="func" right="#pow"/>
4666        <eq left="func" right="#powr"/>
4667      </or>
4668      <derived start="6" size="1">
4669        <or>
4670          <eq alias="true" left="lane1" right="#none"/>
4671          <eq left="lane1" right="#h0"/>
4672        </or>
4673        <eq left="lane1" right="#h1"/>
4674      </derived>
4675      <derived start="8" size="1">
4676        <eq left="func" right="#pow"/>
4677        <eq left="func" right="#powr"/>
4678      </derived>
4679    </encoding>
4680    <encoding mask="0xffe40" exact="0x67600">
4681      <and>
4682        <or>
4683          <eq left="func" right="#pown"/>
4684          <eq left="func" right="#rootn"/>
4685        </or>
4686        <eq left="lane1" right="#none"/>
4687      </and>
4688      <derived start="8" size="1">
4689        <eq left="func" right="#pown"/>
4690        <eq left="func" right="#rootn"/>
4691      </derived>
4692    </encoding>
4693  </ins>
4694
4695  <ins name="+FPOW_SC_DET.f32" mask="0xffe40" exact="0x67640" table="true">
4696    <src start="0" mask="0xf7"/>
4697    <src start="3" mask="0xf7"/>
4698    <mod name="func" start="7" size="2">
4699      <opt>pow</opt>
4700      <opt>powr</opt>
4701      <opt>pown</opt>
4702      <opt>rootn</opt>
4703    </mod>
4704  </ins>
4705
4706  <ins name="+FRCBRT_APPROX_A.f32" unused="true" table="true">
4707    <src start="0" mask="0xf7"/>
4708    <mod name="widen0" size="2">
4709      <opt>none</opt>
4710      <opt>h0</opt>
4711      <opt>h1</opt>
4712    </mod>
4713    <mod name="neg0" start="3" size="1" opt="neg"/>
4714    <mod name="abs0" start="4" size="1" opt="abs"/>
4715    <mod name="divzero" start="5" size="1" opt="divzero"/>
4716    <encoding mask="0xfffc0" exact="0x67200">
4717      <eq left="widen0" right="#none"/>
4718    </encoding>
4719    <encoding mask="0xfff40" exact="0x67240">
4720      <neq left="widen0" right="#none"/>
4721      <derived start="7" size="1">
4722        <eq left="widen0" right="#h0"/>
4723        <eq left="widen0" right="#h1"/>
4724      </derived>
4725    </encoding>
4726  </ins>
4727
4728  <ins name="+FRCBRT_APPROX_B.f32" mask="0xffff8" exact="0x67ab0" unused="true" table="true">
4729    <src start="0" mask="0xf7"/>
4730  </ins>
4731
4732  <ins name="+FRCBRT_APPROX_C.f32" mask="0xffff8" exact="0x67ab8" unused="true" table="true">
4733    <src start="0" mask="0xf7"/>
4734  </ins>
4735
4736  <ins name="+FRCP.f16" mask="0xffec0" exact="0x67080" table="true">
4737    <src start="0" mask="0xf7"/>
4738    <mod name="neg0" start="3" size="1" opt="neg"/>
4739    <mod name="abs0" start="4" size="1" opt="abs"/>
4740    <mod name="divzero" start="5" size="1" opt="divzero"/>
4741    <mod name="lane0" start="8" size="1" default="h0">
4742      <opt>h0</opt>
4743      <opt>h1</opt>
4744    </mod>
4745  </ins>
4746
4747  <ins name="+FRCP.f32" mask="0xfffa0" exact="0x66000" table="true">
4748    <src start="0" mask="0xf7"/>
4749    <mod name="widen0" size="2">
4750      <opt>none</opt>
4751    </mod>
4752    <mod name="neg0" start="3" size="1" opt="neg"/>
4753    <mod name="abs0" start="4" size="1" opt="abs"/>
4754    <derived start="6" size="1">
4755      <eq left="widen0" right="#none"/>
4756      <reserved/>
4757    </derived>
4758  </ins>
4759
4760  <ins name="+FRCP_APPROX.f32" table="true">
4761    <src start="0" mask="0xf7"/>
4762    <mod name="widen0" size="2">
4763      <opt>none</opt>
4764      <opt>h0</opt>
4765      <opt>h1</opt>
4766    </mod>
4767    <mod name="neg0" start="3" size="1" opt="neg"/>
4768    <mod name="abs0" start="4" size="1" opt="abs"/>
4769    <mod name="divzero" start="5" size="1" opt="divzero"/>
4770    <encoding mask="0xfffc0" exact="0x67000">
4771      <eq left="widen0" right="#none"/>
4772    </encoding>
4773    <encoding mask="0xfff40" exact="0x67040">
4774      <neq left="widen0" right="#none"/>
4775      <derived start="7" size="1">
4776        <eq left="widen0" right="#h0"/>
4777        <eq left="widen0" right="#h1"/>
4778      </derived>
4779    </encoding>
4780  </ins>
4781
4782  <ins name="+FREXPE.f32">
4783    <src start="0"/>
4784    <mod name="neg0" size="1" opt="neg"/>
4785    <mod name="sqrt" size="1" opt="sqrt"/>
4786    <mod name="log" size="1" opt="log"/>
4787    <mod name="widen0" start="3" size="2">
4788      <reserved/>
4789      <opt>none</opt>
4790      <opt>h0</opt>
4791      <opt>h1</opt>
4792    </mod>
4793    <encoding mask="0xffea0" exact="0x3dc20">
4794      <eq left="log" right="#none"/>
4795      <copy name="neg0" start="6"/>
4796      <copy name="sqrt" start="8"/>
4797    </encoding>
4798    <encoding mask="0xfffe0" exact="0x3de20">
4799      <and>
4800        <eq left="log" right="#log"/>
4801        <eq left="sqrt" right="#none"/>
4802        <eq left="neg0" right="#none"/>
4803      </and>
4804    </encoding>
4805  </ins>
4806
4807  <ins name="+FREXPE.v2f16">
4808    <src start="0"/>
4809    <mod name="neg0" size="1" opt="neg"/>
4810    <mod name="sqrt" size="1" opt="sqrt"/>
4811    <mod name="log" size="1" opt="log"/>
4812    <mod name="swz0" start="3" size="2" default="h01">
4813      <opt>h00</opt>
4814      <opt>h10</opt>
4815      <opt>h01</opt>
4816      <opt>h11</opt>
4817    </mod>
4818    <encoding mask="0xffea0" exact="0x3dc00">
4819      <eq left="log" right="#none"/>
4820      <copy name="neg0" start="6"/>
4821      <copy name="sqrt" start="8"/>
4822    </encoding>
4823    <encoding mask="0xfffe0" exact="0x3de00">
4824      <and>
4825        <eq left="log" right="#log"/>
4826        <eq left="sqrt" right="#none"/>
4827        <eq left="neg0" right="#none"/>
4828      </and>
4829    </encoding>
4830  </ins>
4831
4832  <ins name="+FREXPM.f32">
4833    <src start="0"/>
4834    <mod name="abs0" start="6" size="1" opt="abs"/>
4835    <mod name="sqrt" size="1" opt="sqrt"/>
4836    <mod name="log" size="1" opt="log"/>
4837    <mod name="widen0" start="3" size="2">
4838      <reserved/>
4839      <opt>none</opt>
4840      <opt>h0</opt>
4841      <opt>h1</opt>
4842    </mod>
4843    <mod name="neg0" size="1" opt="neg"/>
4844    <encoding mask="0xfff20" exact="0x3db20">
4845      <and>
4846        <eq left="log" right="#none"/>
4847        <eq left="neg0" right="#none"/>
4848      </and>
4849      <copy name="sqrt" start="7"/>
4850    </encoding>
4851    <encoding mask="0xfff20" exact="0x3da20">
4852      <and>
4853        <eq left="log" right="#log"/>
4854        <eq left="sqrt" right="#none"/>
4855      </and>
4856      <copy name="neg0" start="7"/>
4857    </encoding>
4858  </ins>
4859
4860  <ins name="+FREXPM.v2f16">
4861    <src start="0"/>
4862    <mod name="abs0" start="6" size="1" opt="abs"/>
4863    <mod name="sqrt" size="1" opt="sqrt"/>
4864    <mod name="log" size="1" opt="log"/>
4865    <mod name="swz0" start="3" size="2" default="h01">
4866      <opt>h00</opt>
4867      <opt>h10</opt>
4868      <opt>h01</opt>
4869      <opt>h11</opt>
4870    </mod>
4871    <mod name="neg0" size="1" opt="neg"/>
4872    <encoding mask="0xfff20" exact="0x3db00">
4873      <and>
4874        <eq left="log" right="#none"/>
4875        <eq left="neg0" right="#none"/>
4876      </and>
4877      <copy name="sqrt" start="7"/>
4878    </encoding>
4879    <encoding mask="0xfff20" exact="0x3da00">
4880      <and>
4881        <eq left="log" right="#log"/>
4882        <eq left="sqrt" right="#none"/>
4883      </and>
4884      <copy name="neg0" start="7"/>
4885    </encoding>
4886  </ins>
4887
4888  <ins name="+FROUND.f32" mask="0xff860" exact="0x3e820">
4889    <src start="0"/>
4890    <mod name="abs0" start="7" size="1" opt="abs"/>
4891    <mod name="neg0" start="8" size="1" opt="neg"/>
4892    <mod name="widen0" start="3" size="2">
4893      <reserved/>
4894      <opt>none</opt>
4895      <opt>h0</opt>
4896      <opt>h1</opt>
4897    </mod>
4898    <mod name="round" start="9" size="2">
4899      <opt>none</opt>
4900      <opt>rtp</opt>
4901      <opt>rtn</opt>
4902      <opt>rtz</opt>
4903    </mod>
4904  </ins>
4905
4906  <ins name="+FROUND.v2f16" mask="0xff860" exact="0x3e800">
4907    <src start="0"/>
4908    <mod name="abs0" start="7" size="1" opt="abs"/>
4909    <mod name="neg0" start="8" size="1" opt="neg"/>
4910    <mod name="swz0" start="3" size="2" default="h01">
4911      <opt>h00</opt>
4912      <opt>h10</opt>
4913      <opt>h01</opt>
4914      <opt>h11</opt>
4915    </mod>
4916    <mod name="round" start="9" size="2">
4917      <opt>none</opt>
4918      <opt>rtp</opt>
4919      <opt>rtn</opt>
4920      <opt>rtz</opt>
4921    </mod>
4922  </ins>
4923
4924  <ins name="+FRSQ.f16" mask="0xffec0" exact="0x67280" table="true">
4925    <src start="0" mask="0xf7"/>
4926    <mod name="neg0" start="3" size="1" opt="neg"/>
4927    <mod name="abs0" start="4" size="1" opt="abs"/>
4928    <mod name="divzero" start="5" size="1" opt="divzero"/>
4929    <mod name="lane0" start="8" size="1" default="h0">
4930      <opt>h0</opt>
4931      <opt>h1</opt>
4932    </mod>
4933  </ins>
4934
4935  <ins name="+FRSQ.f32" mask="0xfffa0" exact="0x66100" table="true">
4936    <src start="0" mask="0xf7"/>
4937    <mod name="widen0" size="2">
4938      <opt>none</opt>
4939    </mod>
4940    <mod name="neg0" start="3" size="1" opt="neg"/>
4941    <mod name="abs0" start="4" size="1" opt="abs"/>
4942    <derived start="6" size="1">
4943      <eq left="widen0" right="#none"/>
4944      <reserved/>
4945    </derived>
4946  </ins>
4947
4948  <ins name="+FRSQ_APPROX.f32" table="true">
4949    <src start="0" mask="0xf7"/>
4950    <mod name="widen0" size="2">
4951      <opt>none</opt>
4952      <opt>h0</opt>
4953      <opt>h1</opt>
4954    </mod>
4955    <mod name="neg0" start="3" size="1" opt="neg"/>
4956    <mod name="abs0" start="4" size="1" opt="abs"/>
4957    <mod name="divzero" start="5" size="1" opt="divzero"/>
4958    <encoding mask="0xfffc0" exact="0x67100">
4959      <eq left="widen0" right="#none"/>
4960    </encoding>
4961    <encoding mask="0xfff40" exact="0x67140">
4962      <neq left="widen0" right="#none"/>
4963      <derived start="7" size="1">
4964        <eq left="widen0" right="#h0"/>
4965        <eq left="widen0" right="#h1"/>
4966      </derived>
4967    </encoding>
4968  </ins>
4969
4970  <ins name="+FSINCOS_OFFSET.u6" mask="0xffff0" exact="0x67aa0" table="true">
4971    <src start="0" mask="0xf7"/>
4972    <mod name="scale" start="3" size="1" opt="scale"/>
4973  </ins>
4974
4975  <ins name="+FSIN_TABLE.u6" mask="0xfffe8" exact="0x67a80" table="true">
4976    <src start="0" mask="0xf7"/>
4977    <mod name="offset" start="4" size="1" opt="offset"/>
4978  </ins>
4979
4980  <ins name="+HADD.s32" mask="0xfefc0" exact="0xbc640">
4981    <src start="0"/>
4982    <src start="3"/>
4983    <mod name="round" start="12" size="1" default="rtn">
4984      <opt>rtn</opt>
4985      <opt>rtp</opt>
4986    </mod>
4987  </ins>
4988
4989  <ins name="+HADD.u32" mask="0xfefc0" exact="0xbc6c0">
4990    <src start="0"/>
4991    <src start="3"/>
4992    <mod name="round" start="12" size="1" default="rtn">
4993      <opt>rtn</opt>
4994      <opt>rtp</opt>
4995    </mod>
4996  </ins>
4997
4998  <ins name="+HADD.v2s16" mask="0xfe9c0" exact="0xbc840">
4999    <src start="0"/>
5000    <src start="3"/>
5001    <mod name="round" start="12" size="1" default="rtn">
5002      <opt>rtn</opt>
5003      <opt>rtp</opt>
5004    </mod>
5005    <mod name="swap1" start="9" size="1" default="h01">
5006      <opt>h01</opt>
5007      <opt>h10</opt>
5008    </mod>
5009    <mod name="swap0" start="10" size="1" default="h01">
5010      <opt>h01</opt>
5011      <opt>h10</opt>
5012    </mod>
5013  </ins>
5014
5015  <ins name="+HADD.v2u16" mask="0xfe9c0" exact="0xbc8c0">
5016    <src start="0"/>
5017    <src start="3"/>
5018    <mod name="round" start="12" size="1" default="rtn">
5019      <opt>rtn</opt>
5020      <opt>rtp</opt>
5021    </mod>
5022    <mod name="swap1" start="9" size="1" default="h01">
5023      <opt>h01</opt>
5024      <opt>h10</opt>
5025    </mod>
5026    <mod name="swap0" start="10" size="1" default="h01">
5027      <opt>h01</opt>
5028      <opt>h10</opt>
5029    </mod>
5030  </ins>
5031
5032  <ins name="+HADD.v4s8" mask="0xfefc0" exact="0xbc440">
5033    <src start="0"/>
5034    <src start="3"/>
5035    <mod name="round" start="12" size="1" default="rtn">
5036      <opt>rtn</opt>
5037      <opt>rtp</opt>
5038    </mod>
5039  </ins>
5040
5041  <ins name="+HADD.v4u8" mask="0xfefc0" exact="0xbc4c0">
5042    <src start="0"/>
5043    <src start="3"/>
5044    <mod name="round" start="12" size="1" default="rtn">
5045      <opt>rtn</opt>
5046      <opt>rtp</opt>
5047    </mod>
5048  </ins>
5049
5050  <ins name="+IABS.s32" mask="0xffff8" exact="0x3dea0">
5051    <src start="0"/>
5052  </ins>
5053
5054  <ins name="+IABS.v2s16" mask="0xfffc8" exact="0x3de88">
5055    <src start="0"/>
5056    <mod name="swz0" start="4" size="2" default="h01">
5057      <opt>h00</opt>
5058      <opt>h10</opt>
5059      <opt>h01</opt>
5060      <opt>h11</opt>
5061    </mod>
5062  </ins>
5063
5064  <ins name="+IABS.v4s8" mask="0xffff8" exact="0x3deb0">
5065    <src start="0"/>
5066  </ins>
5067
5068  <ins name="+IADD.s32">
5069    <src start="0"/>
5070    <src start="3"/>
5071    <mod name="saturate" start="8" size="1" opt="sat"/>
5072    <mod name="lanes1" size="3">
5073      <opt>none</opt>
5074      <opt>h0</opt>
5075      <opt>h1</opt>
5076      <opt>b0</opt>
5077      <opt>b1</opt>
5078      <opt>b2</opt>
5079      <opt>b3</opt>
5080    </mod>
5081    <encoding mask="0xffec0" exact="0xbc600">
5082      <eq left="lanes1" right="#none"/>
5083    </encoding>
5084    <encoding mask="0xffcc0" exact="0xbec00">
5085      <or>
5086        <eq left="lanes1" right="#h0"/>
5087        <eq left="lanes1" right="#h1"/>
5088      </or>
5089      <derived start="9" size="1">
5090        <eq left="lanes1" right="#h0"/>
5091        <eq left="lanes1" right="#h1"/>
5092      </derived>
5093    </encoding>
5094    <encoding mask="0xff8c0" exact="0xbe000">
5095      <or>
5096        <eq left="lanes1" right="#b0"/>
5097        <eq left="lanes1" right="#b1"/>
5098        <eq left="lanes1" right="#b2"/>
5099        <eq left="lanes1" right="#b3"/>
5100      </or>
5101      <derived start="9" size="2">
5102        <eq left="lanes1" right="#b0"/>
5103        <eq left="lanes1" right="#b1"/>
5104        <eq left="lanes1" right="#b2"/>
5105        <eq left="lanes1" right="#b3"/>
5106      </derived>
5107    </encoding>
5108  </ins>
5109
5110  <ins name="+IADD.u32">
5111    <src start="0"/>
5112    <src start="3"/>
5113    <mod name="saturate" start="8" size="1" opt="sat"/>
5114    <mod name="lanes1" size="3">
5115      <opt>none</opt>
5116      <opt>h0</opt>
5117      <opt>h1</opt>
5118      <opt>b0</opt>
5119      <opt>b1</opt>
5120      <opt>b2</opt>
5121      <opt>b3</opt>
5122    </mod>
5123    <encoding mask="0xffe40" exact="0xbc600">
5124      <eq left="lanes1" right="#none"/>
5125      <derived start="7" size="1">
5126        <and alias="true">
5127          <eq left="saturate" right="#none"/>
5128          <eq left="lanes1" right="#none"/>
5129        </and>
5130        <or>
5131          <eq left="saturate" right="#sat"/>
5132          <neq left="lanes1" right="#none"/>
5133        </or>
5134      </derived>
5135    </encoding>
5136    <encoding mask="0xffc40" exact="0xbec00">
5137      <or>
5138        <eq left="lanes1" right="#h0"/>
5139        <eq left="lanes1" right="#h1"/>
5140      </or>
5141      <derived start="7" size="1">
5142        <and alias="true">
5143          <eq left="saturate" right="#none"/>
5144          <eq left="lanes1" right="#none"/>
5145        </and>
5146        <or>
5147          <eq left="saturate" right="#sat"/>
5148          <neq left="lanes1" right="#none"/>
5149        </or>
5150      </derived>
5151      <derived start="9" size="1">
5152        <eq left="lanes1" right="#h0"/>
5153        <eq left="lanes1" right="#h1"/>
5154      </derived>
5155    </encoding>
5156    <encoding mask="0xff840" exact="0xbe000">
5157      <or>
5158        <eq left="lanes1" right="#b0"/>
5159        <eq left="lanes1" right="#b1"/>
5160        <eq left="lanes1" right="#b2"/>
5161        <eq left="lanes1" right="#b3"/>
5162      </or>
5163      <derived start="7" size="1">
5164        <and alias="true">
5165          <eq left="saturate" right="#none"/>
5166          <eq left="lanes1" right="#none"/>
5167        </and>
5168        <or>
5169          <eq left="saturate" right="#sat"/>
5170          <neq left="lanes1" right="#none"/>
5171        </or>
5172      </derived>
5173      <derived start="9" size="2">
5174        <eq left="lanes1" right="#b0"/>
5175        <eq left="lanes1" right="#b1"/>
5176        <eq left="lanes1" right="#b2"/>
5177        <eq left="lanes1" right="#b3"/>
5178      </derived>
5179    </encoding>
5180  </ins>
5181
5182  <ins name="+IADD.v2s16">
5183    <src start="0"/>
5184    <src start="3"/>
5185    <mod name="saturate" start="8" size="1" opt="sat"/>
5186    <mod name="lanes0" size="1" default="h01">
5187      <opt>h01</opt>
5188      <opt>h10</opt>
5189    </mod>
5190    <mod name="lanes1" size="3" default="h01">
5191      <opt>h01</opt>
5192      <opt>h10</opt>
5193      <opt>h00</opt>
5194      <opt>h11</opt>
5195      <opt>b01</opt>
5196      <opt>b23</opt>
5197    </mod>
5198    <encoding mask="0xff8c0" exact="0xbc800">
5199      <and>
5200        <or>
5201          <eq left="lanes0" right="#h01"/>
5202          <eq left="lanes0" right="#h10"/>
5203        </or>
5204        <or>
5205          <eq left="lanes1" right="#h01"/>
5206          <eq left="lanes1" right="#h10"/>
5207        </or>
5208      </and>
5209      <derived start="9" size="1">
5210        <eq left="lanes1" right="#h01"/>
5211        <eq left="lanes1" right="#h10"/>
5212      </derived>
5213      <derived start="10" size="1">
5214        <eq left="lanes0" right="#h01"/>
5215        <eq left="lanes0" right="#h10"/>
5216      </derived>
5217    </encoding>
5218    <encoding mask="0xffcc0" exact="0xbec40">
5219      <and>
5220        <eq left="lanes0" right="#h01"/>
5221        <or>
5222          <eq left="lanes1" right="#h00"/>
5223          <eq left="lanes1" right="#h11"/>
5224        </or>
5225      </and>
5226      <derived start="9" size="1">
5227        <eq left="lanes1" right="#h00"/>
5228        <eq left="lanes1" right="#h11"/>
5229      </derived>
5230    </encoding>
5231    <encoding mask="0xffcc0" exact="0xbe800">
5232      <and>
5233        <eq left="lanes0" right="#h01"/>
5234        <or>
5235          <eq left="lanes1" right="#b01"/>
5236          <eq left="lanes1" right="#b23"/>
5237        </or>
5238      </and>
5239      <derived start="9" size="1">
5240        <eq left="lanes1" right="#b01"/>
5241        <eq left="lanes1" right="#b23"/>
5242      </derived>
5243    </encoding>
5244  </ins>
5245
5246  <ins name="+IADD.v2u16">
5247    <src start="0"/>
5248    <src start="3"/>
5249    <mod name="saturate" start="8" size="1" opt="sat"/>
5250    <mod name="lanes0" size="1" default="h01">
5251      <opt>h01</opt>
5252      <opt>h10</opt>
5253    </mod>
5254    <mod name="lanes1" size="3" default="h01">
5255      <opt>h01</opt>
5256      <opt>h10</opt>
5257      <opt>h00</opt>
5258      <opt>h11</opt>
5259      <opt>b01</opt>
5260      <opt>b23</opt>
5261    </mod>
5262    <encoding mask="0xff840" exact="0xbc800">
5263      <and>
5264        <or>
5265          <eq left="lanes0" right="#h01"/>
5266          <eq left="lanes0" right="#h10"/>
5267        </or>
5268        <or>
5269          <eq left="lanes1" right="#h01"/>
5270          <eq left="lanes1" right="#h10"/>
5271        </or>
5272      </and>
5273      <derived start="7" size="1">
5274        <and alias="true">
5275          <eq left="saturate" right="#none"/>
5276          <neq left="lanes1" right="#b01"/>
5277          <neq left="lanes1" right="#b23"/>
5278        </and>
5279        <or>
5280          <eq left="saturate" right="#sat"/>
5281          <eq left="lanes1" right="#b01"/>
5282          <eq left="lanes1" right="#b23"/>
5283        </or>
5284      </derived>
5285      <derived start="9" size="1">
5286        <eq left="lanes1" right="#h01"/>
5287        <eq left="lanes1" right="#h10"/>
5288      </derived>
5289      <derived start="10" size="1">
5290        <eq left="lanes0" right="#h01"/>
5291        <eq left="lanes0" right="#h10"/>
5292      </derived>
5293    </encoding>
5294    <encoding mask="0xffc40" exact="0xbec40">
5295      <and>
5296        <eq left="lanes0" right="#h01"/>
5297        <or>
5298          <eq left="lanes1" right="#h00"/>
5299          <eq left="lanes1" right="#h11"/>
5300        </or>
5301      </and>
5302      <derived start="7" size="1">
5303        <and alias="true">
5304          <eq left="saturate" right="#none"/>
5305          <neq left="lanes1" right="#b01"/>
5306          <neq left="lanes1" right="#b23"/>
5307        </and>
5308        <or>
5309          <eq left="saturate" right="#sat"/>
5310          <eq left="lanes1" right="#b01"/>
5311          <eq left="lanes1" right="#b23"/>
5312        </or>
5313      </derived>
5314      <derived start="9" size="1">
5315        <eq left="lanes1" right="#h00"/>
5316        <eq left="lanes1" right="#h11"/>
5317      </derived>
5318    </encoding>
5319    <encoding mask="0xffc40" exact="0xbe800">
5320      <and>
5321        <eq left="lanes0" right="#h01"/>
5322        <or>
5323          <eq left="lanes1" right="#b01"/>
5324          <eq left="lanes1" right="#b23"/>
5325        </or>
5326      </and>
5327      <derived start="7" size="1">
5328        <and alias="true">
5329          <eq left="saturate" right="#none"/>
5330          <neq left="lanes1" right="#b01"/>
5331          <neq left="lanes1" right="#b23"/>
5332        </and>
5333        <or>
5334          <eq left="saturate" right="#sat"/>
5335          <eq left="lanes1" right="#b01"/>
5336          <eq left="lanes1" right="#b23"/>
5337        </or>
5338      </derived>
5339      <derived start="9" size="1">
5340        <eq left="lanes1" right="#b01"/>
5341        <eq left="lanes1" right="#b23"/>
5342      </derived>
5343    </encoding>
5344  </ins>
5345
5346  <ins name="+IADD.v4s8">
5347    <src start="0"/>
5348    <src start="3"/>
5349    <mod name="saturate" start="8" size="1" opt="sat"/>
5350    <mod name="lanes0" size="3" default="b0123">
5351      <opt>b0123</opt>
5352    </mod>
5353    <mod name="lanes1" size="3" default="b0123">
5354      <opt>b0123</opt>
5355      <opt>b0000</opt>
5356      <opt>b1111</opt>
5357      <opt>b2222</opt>
5358      <opt>b3333</opt>
5359      <opt>b0101</opt>
5360      <opt>b2323</opt>
5361    </mod>
5362    <encoding mask="0xffec0" exact="0xbc400">
5363      <and>
5364        <eq left="lanes0" right="#b0123"/>
5365        <eq left="lanes1" right="#b0123"/>
5366      </and>
5367    </encoding>
5368    <encoding mask="0xff8c0" exact="0xbe040">
5369      <and>
5370        <eq left="lanes0" right="#b0123"/>
5371        <or>
5372          <eq left="lanes1" right="#b0000"/>
5373          <eq left="lanes1" right="#b1111"/>
5374          <eq left="lanes1" right="#b2222"/>
5375          <eq left="lanes1" right="#b3333"/>
5376        </or>
5377      </and>
5378      <derived start="9" size="2">
5379        <eq left="lanes1" right="#b0000"/>
5380        <eq left="lanes1" right="#b1111"/>
5381        <eq left="lanes1" right="#b2222"/>
5382        <eq left="lanes1" right="#b3333"/>
5383      </derived>
5384    </encoding>
5385    <encoding mask="0xffcc0" exact="0xbe840">
5386      <and>
5387        <eq left="lanes0" right="#b0123"/>
5388        <or>
5389          <eq left="lanes1" right="#b0101"/>
5390          <eq left="lanes1" right="#b2323"/>
5391        </or>
5392      </and>
5393      <derived start="9" size="1">
5394        <eq left="lanes1" right="#b0101"/>
5395        <eq left="lanes1" right="#b2323"/>
5396      </derived>
5397    </encoding>
5398  </ins>
5399
5400  <ins name="+IADD.v4u8">
5401    <src start="0"/>
5402    <src start="3"/>
5403    <mod name="saturate" start="8" size="1" opt="sat"/>
5404    <mod name="lanes0" size="3" default="b0123">
5405      <opt>b0123</opt>
5406    </mod>
5407    <mod name="lanes1" size="3" default="b0123">
5408      <opt>b0123</opt>
5409      <opt>b0000</opt>
5410      <opt>b1111</opt>
5411      <opt>b2222</opt>
5412      <opt>b3333</opt>
5413      <opt>b0101</opt>
5414      <opt>b2323</opt>
5415    </mod>
5416    <encoding mask="0xffe40" exact="0xbc400">
5417      <and>
5418        <eq left="lanes0" right="#b0123"/>
5419        <eq left="lanes1" right="#b0123"/>
5420      </and>
5421      <derived start="7" size="1">
5422        <eq alias="true" left="saturate" right="#none"/>
5423        <eq left="saturate" right="#sat"/>
5424      </derived>
5425    </encoding>
5426    <encoding mask="0xff840" exact="0xbe040">
5427      <and>
5428        <eq left="lanes0" right="#b0123"/>
5429        <or>
5430          <eq left="lanes1" right="#b0000"/>
5431          <eq left="lanes1" right="#b1111"/>
5432          <eq left="lanes1" right="#b2222"/>
5433          <eq left="lanes1" right="#b3333"/>
5434        </or>
5435      </and>
5436      <derived start="7" size="1">
5437        <eq alias="true" left="saturate" right="#none"/>
5438        <eq left="saturate" right="#sat"/>
5439      </derived>
5440      <derived start="9" size="2">
5441        <eq left="lanes1" right="#b0000"/>
5442        <eq left="lanes1" right="#b1111"/>
5443        <eq left="lanes1" right="#b2222"/>
5444        <eq left="lanes1" right="#b3333"/>
5445      </derived>
5446    </encoding>
5447    <encoding mask="0xffc40" exact="0xbe840">
5448      <and>
5449        <eq left="lanes0" right="#b0123"/>
5450        <or>
5451          <eq left="lanes1" right="#b0101"/>
5452          <eq left="lanes1" right="#b2323"/>
5453        </or>
5454      </and>
5455      <derived start="7" size="1">
5456        <eq alias="true" left="saturate" right="#none"/>
5457        <eq left="saturate" right="#sat"/>
5458      </derived>
5459      <derived start="9" size="1">
5460        <eq left="lanes1" right="#b0101"/>
5461        <eq left="lanes1" right="#b2323"/>
5462      </derived>
5463    </encoding>
5464  </ins>
5465
5466  <ins name="+ICMP.i32" mask="0xffb80" exact="0x7b300">
5467    <src start="0"/>
5468    <src start="3"/>
5469    <mod name="result_type" start="10" size="1" default="i1">
5470      <opt>i1</opt>
5471      <opt>m1</opt>
5472    </mod>
5473    <mod name="cmpf" start="6" size="1">
5474      <opt>eq</opt>
5475      <opt>ne</opt>
5476    </mod>
5477  </ins>
5478
5479  <ins name="+ICMP.s32" mask="0xffb80" exact="0x7b200">
5480    <src start="0"/>
5481    <src start="3"/>
5482    <mod name="result_type" start="10" size="1" default="i1">
5483      <opt>i1</opt>
5484      <opt>m1</opt>
5485    </mod>
5486    <mod name="cmpf" size="2">
5487      <opt>gt</opt>
5488      <opt>ge</opt>
5489      <opt>lt</opt>
5490      <opt>le</opt>
5491    </mod>
5492    <derived start="6" size="1">
5493      <eq left="cmpf" right="#gt"/>
5494      <eq left="cmpf" right="#ge"/>
5495    </derived>
5496    <swap left="0" right="1">
5497      <or>
5498        <eq left="cmpf" right="#lt"/>
5499        <eq left="cmpf" right="#le"/>
5500      </or>
5501      <rewrite name="cmpf">
5502        <map from="lt" to="gt"/>
5503        <map from="le" to="ge"/>
5504      </rewrite>
5505    </swap>
5506  </ins>
5507
5508  <ins name="+ICMP.u32" mask="0xffb80" exact="0x7b280">
5509    <src start="0"/>
5510    <src start="3"/>
5511    <mod name="result_type" start="10" size="1" default="i1">
5512      <opt>i1</opt>
5513      <opt>m1</opt>
5514    </mod>
5515    <mod name="cmpf" size="2">
5516      <opt>gt</opt>
5517      <opt>ge</opt>
5518      <opt>lt</opt>
5519      <opt>le</opt>
5520    </mod>
5521    <derived start="6" size="1">
5522      <eq left="cmpf" right="#gt"/>
5523      <eq left="cmpf" right="#ge"/>
5524    </derived>
5525    <swap left="0" right="1">
5526      <or>
5527        <eq left="cmpf" right="#lt"/>
5528        <eq left="cmpf" right="#le"/>
5529      </or>
5530      <rewrite name="cmpf">
5531        <map from="lt" to="gt"/>
5532        <map from="le" to="ge"/>
5533      </rewrite>
5534    </swap>
5535  </ins>
5536
5537  <ins name="+ICMP.v2i16" mask="0xff000" exact="0x7a000">
5538    <src start="0"/>
5539    <src start="3"/>
5540    <mod name="swz0" start="6" size="2" default="h01">
5541      <opt>h00</opt>
5542      <opt>h10</opt>
5543      <opt>h01</opt>
5544      <opt>h11</opt>
5545    </mod>
5546    <mod name="swz1" start="8" size="2" default="h01">
5547      <opt>h00</opt>
5548      <opt>h10</opt>
5549      <opt>h01</opt>
5550      <opt>h11</opt>
5551    </mod>
5552    <mod name="result_type" start="10" size="1" default="i1">
5553      <opt>i1</opt>
5554      <opt>m1</opt>
5555    </mod>
5556    <mod name="cmpf" start="11" size="1">
5557      <opt>eq</opt>
5558      <opt>ne</opt>
5559    </mod>
5560  </ins>
5561
5562  <ins name="+ICMP.v2s16" mask="0xfe800" exact="0x78000">
5563    <src start="0"/>
5564    <src start="3"/>
5565    <mod name="swz0" start="6" size="2" default="h01">
5566      <opt>h00</opt>
5567      <opt>h10</opt>
5568      <opt>h01</opt>
5569      <opt>h11</opt>
5570    </mod>
5571    <mod name="swz1" start="8" size="2" default="h01">
5572      <opt>h00</opt>
5573      <opt>h10</opt>
5574      <opt>h01</opt>
5575      <opt>h11</opt>
5576    </mod>
5577    <mod name="result_type" start="10" size="1" default="i1">
5578      <opt>i1</opt>
5579      <opt>m1</opt>
5580    </mod>
5581    <mod name="cmpf" size="2">
5582      <opt>gt</opt>
5583      <opt>ge</opt>
5584      <opt>lt</opt>
5585      <opt>le</opt>
5586    </mod>
5587    <derived start="12" size="1">
5588      <eq left="cmpf" right="#gt"/>
5589      <eq left="cmpf" right="#ge"/>
5590    </derived>
5591    <swap left="0" right="1">
5592      <or>
5593        <eq left="cmpf" right="#lt"/>
5594        <eq left="cmpf" right="#le"/>
5595      </or>
5596      <rewrite name="cmpf">
5597        <map from="lt" to="gt"/>
5598        <map from="le" to="ge"/>
5599      </rewrite>
5600    </swap>
5601  </ins>
5602
5603  <ins name="+ICMP.v2u16" mask="0xfe800" exact="0x78800">
5604    <src start="0"/>
5605    <src start="3"/>
5606    <mod name="swz0" start="6" size="2" default="h01">
5607      <opt>h00</opt>
5608      <opt>h10</opt>
5609      <opt>h01</opt>
5610      <opt>h11</opt>
5611    </mod>
5612    <mod name="swz1" start="8" size="2" default="h01">
5613      <opt>h00</opt>
5614      <opt>h10</opt>
5615      <opt>h01</opt>
5616      <opt>h11</opt>
5617    </mod>
5618    <mod name="result_type" start="10" size="1" default="i1">
5619      <opt>i1</opt>
5620      <opt>m1</opt>
5621    </mod>
5622    <mod name="cmpf" size="2">
5623      <opt>gt</opt>
5624      <opt>ge</opt>
5625      <opt>lt</opt>
5626      <opt>le</opt>
5627    </mod>
5628    <derived start="12" size="1">
5629      <eq left="cmpf" right="#gt"/>
5630      <eq left="cmpf" right="#ge"/>
5631    </derived>
5632    <swap left="0" right="1">
5633      <or>
5634        <eq left="cmpf" right="#lt"/>
5635        <eq left="cmpf" right="#le"/>
5636      </or>
5637      <rewrite name="cmpf">
5638        <map from="lt" to="gt"/>
5639        <map from="le" to="ge"/>
5640      </rewrite>
5641    </swap>
5642  </ins>
5643
5644  <ins name="+ICMP.v4i8" mask="0xffb80" exact="0x7b100">
5645    <src start="0"/>
5646    <src start="3"/>
5647    <mod name="result_type" start="10" size="1" default="i1">
5648      <opt>i1</opt>
5649      <opt>m1</opt>
5650    </mod>
5651    <mod name="cmpf" start="6" size="1">
5652      <opt>eq</opt>
5653      <opt>ne</opt>
5654    </mod>
5655  </ins>
5656
5657  <ins name="+ICMP.v4s8" mask="0xffb80" exact="0x7b000">
5658    <src start="0"/>
5659    <src start="3"/>
5660    <mod name="result_type" start="10" size="1" default="i1">
5661      <opt>i1</opt>
5662      <opt>m1</opt>
5663    </mod>
5664    <mod name="cmpf" size="2">
5665      <opt>gt</opt>
5666      <opt>ge</opt>
5667      <opt>lt</opt>
5668      <opt>le</opt>
5669    </mod>
5670    <derived start="6" size="1">
5671      <eq left="cmpf" right="#gt"/>
5672      <eq left="cmpf" right="#ge"/>
5673    </derived>
5674    <swap left="0" right="1">
5675      <or>
5676        <eq left="cmpf" right="#lt"/>
5677        <eq left="cmpf" right="#le"/>
5678      </or>
5679      <rewrite name="cmpf">
5680        <map from="lt" to="gt"/>
5681        <map from="le" to="ge"/>
5682      </rewrite>
5683    </swap>
5684  </ins>
5685
5686  <ins name="+ICMP.v4u8" mask="0xffb80" exact="0x7b080">
5687    <src start="0"/>
5688    <src start="3"/>
5689    <mod name="result_type" start="10" size="1" default="i1">
5690      <opt>i1</opt>
5691      <opt>m1</opt>
5692    </mod>
5693    <mod name="cmpf" size="2">
5694      <opt>gt</opt>
5695      <opt>ge</opt>
5696      <opt>lt</opt>
5697      <opt>le</opt>
5698    </mod>
5699    <derived start="6" size="1">
5700      <eq left="cmpf" right="#gt"/>
5701      <eq left="cmpf" right="#ge"/>
5702    </derived>
5703    <swap left="0" right="1">
5704      <or>
5705        <eq left="cmpf" right="#lt"/>
5706        <eq left="cmpf" right="#le"/>
5707      </or>
5708      <rewrite name="cmpf">
5709        <map from="lt" to="gt"/>
5710        <map from="le" to="ge"/>
5711      </rewrite>
5712    </swap>
5713  </ins>
5714
5715  <ins name="+ICMPF.i32" mask="0xffe00" exact="0x7be00">
5716    <src start="0"/>
5717    <src start="3"/>
5718    <src start="6"/>
5719  </ins>
5720
5721  <ins name="+ICMPI.i32" mask="0xffb80" exact="0x7b900">
5722    <src start="0"/>
5723    <src start="3"/>
5724    <mod name="result_type" start="10" size="1" default="i1">
5725      <opt>i1</opt>
5726      <opt>m1</opt>
5727    </mod>
5728    <mod name="cmpf" start="6" size="1">
5729      <opt>eq</opt>
5730      <opt>ne</opt>
5731    </mod>
5732  </ins>
5733
5734  <ins name="+ICMPI.s32" mask="0xffb80" exact="0x7b800">
5735    <src start="0"/>
5736    <src start="3"/>
5737    <mod name="result_type" start="10" size="1" default="i1">
5738      <opt>i1</opt>
5739      <opt>m1</opt>
5740    </mod>
5741    <mod name="cmpf" start="6" size="1">
5742      <opt>gt</opt>
5743      <opt>ge</opt>
5744    </mod>
5745  </ins>
5746
5747  <ins name="+ICMPI.u32" mask="0xffb80" exact="0x7b880">
5748    <src start="0"/>
5749    <src start="3"/>
5750    <mod name="result_type" start="10" size="1" default="i1">
5751      <opt>i1</opt>
5752      <opt>m1</opt>
5753    </mod>
5754    <mod name="cmpf" start="6" size="1">
5755      <opt>gt</opt>
5756      <opt>ge</opt>
5757    </mod>
5758  </ins>
5759
5760  <ins name="+ICMPM.i32" mask="0xffe00" exact="0x7ba00">
5761    <src start="0"/>
5762    <src start="3"/>
5763    <src start="6"/>
5764  </ins>
5765
5766  <ins name="+ILOGB.f32" mask="0xfffe0" exact="0x3d9e0">
5767    <src start="0"/>
5768    <mod name="widen0" start="3" size="2">
5769      <reserved/>
5770      <opt>none</opt>
5771      <opt>h0</opt>
5772      <opt>h1</opt>
5773    </mod>
5774  </ins>
5775
5776  <ins name="+ILOGB.v2f16" mask="0xfffe0" exact="0x3d9c0">
5777    <src start="0"/>
5778    <mod name="swz0" start="3" size="2" default="h01">
5779      <opt>h00</opt>
5780      <opt>h10</opt>
5781      <opt>h01</opt>
5782      <opt>h11</opt>
5783    </mod>
5784  </ins>
5785
5786  <ins name="+IMOV_FMA" mask="0xffff7" exact="0xd7820">
5787    <mod name="threads" start="3" size="1" default="odd">
5788      <opt>even</opt>
5789      <opt>odd</opt>
5790    </mod>
5791  </ins>
5792
5793  <ins name="+ISUB.s32">
5794    <src start="0"/>
5795    <src start="3"/>
5796    <mod name="saturate" start="8" size="1" opt="sat"/>
5797    <mod name="lanes1" size="3">
5798      <opt>none</opt>
5799      <opt>h0</opt>
5800      <opt>h1</opt>
5801      <opt>b0</opt>
5802      <opt>b1</opt>
5803      <opt>b2</opt>
5804      <opt>b3</opt>
5805    </mod>
5806    <encoding mask="0xffec0" exact="0xbd600">
5807      <eq left="lanes1" right="#none"/>
5808    </encoding>
5809    <encoding mask="0xffcc0" exact="0xbfc00">
5810      <or>
5811        <eq left="lanes1" right="#h0"/>
5812        <eq left="lanes1" right="#h1"/>
5813      </or>
5814      <derived start="9" size="1">
5815        <eq left="lanes1" right="#h0"/>
5816        <eq left="lanes1" right="#h1"/>
5817      </derived>
5818    </encoding>
5819    <encoding mask="0xff8c0" exact="0xbf000">
5820      <or>
5821        <eq left="lanes1" right="#b0"/>
5822        <eq left="lanes1" right="#b1"/>
5823        <eq left="lanes1" right="#b2"/>
5824        <eq left="lanes1" right="#b3"/>
5825      </or>
5826      <derived start="9" size="2">
5827        <eq left="lanes1" right="#b0"/>
5828        <eq left="lanes1" right="#b1"/>
5829        <eq left="lanes1" right="#b2"/>
5830        <eq left="lanes1" right="#b3"/>
5831      </derived>
5832    </encoding>
5833  </ins>
5834
5835  <ins name="+ISUB.u32">
5836    <src start="0"/>
5837    <src start="3"/>
5838    <mod name="saturate" start="8" size="1" opt="sat"/>
5839    <mod name="lanes1" size="3">
5840      <opt>none</opt>
5841      <opt>h0</opt>
5842      <opt>h1</opt>
5843      <opt>b0</opt>
5844      <opt>b1</opt>
5845      <opt>b2</opt>
5846      <opt>b3</opt>
5847    </mod>
5848    <encoding mask="0xffe40" exact="0xbd600">
5849      <eq left="lanes1" right="#none"/>
5850      <derived start="7" size="1">
5851        <and alias="true">
5852          <eq left="saturate" right="#none"/>
5853          <eq left="lanes1" right="#none"/>
5854        </and>
5855        <or>
5856          <eq left="saturate" right="#sat"/>
5857          <neq left="lanes1" right="#none"/>
5858        </or>
5859      </derived>
5860    </encoding>
5861    <encoding mask="0xffc40" exact="0xbfc00">
5862      <or>
5863        <eq left="lanes1" right="#h0"/>
5864        <eq left="lanes1" right="#h1"/>
5865      </or>
5866      <derived start="7" size="1">
5867        <and alias="true">
5868          <eq left="saturate" right="#none"/>
5869          <eq left="lanes1" right="#none"/>
5870        </and>
5871        <or>
5872          <eq left="saturate" right="#sat"/>
5873          <neq left="lanes1" right="#none"/>
5874        </or>
5875      </derived>
5876      <derived start="9" size="1">
5877        <eq left="lanes1" right="#h0"/>
5878        <eq left="lanes1" right="#h1"/>
5879      </derived>
5880    </encoding>
5881    <encoding mask="0xff840" exact="0xbf000">
5882      <or>
5883        <eq left="lanes1" right="#b0"/>
5884        <eq left="lanes1" right="#b1"/>
5885        <eq left="lanes1" right="#b2"/>
5886        <eq left="lanes1" right="#b3"/>
5887      </or>
5888      <derived start="7" size="1">
5889        <and alias="true">
5890          <eq left="saturate" right="#none"/>
5891          <eq left="lanes1" right="#none"/>
5892        </and>
5893        <or>
5894          <eq left="saturate" right="#sat"/>
5895          <neq left="lanes1" right="#none"/>
5896        </or>
5897      </derived>
5898      <derived start="9" size="2">
5899        <eq left="lanes1" right="#b0"/>
5900        <eq left="lanes1" right="#b1"/>
5901        <eq left="lanes1" right="#b2"/>
5902        <eq left="lanes1" right="#b3"/>
5903      </derived>
5904    </encoding>
5905  </ins>
5906
5907  <ins name="+ISUB.v2s16">
5908    <src start="0"/>
5909    <src start="3"/>
5910    <mod name="saturate" start="8" size="1" opt="sat"/>
5911    <mod name="lanes0" size="1" default="h01">
5912      <opt>h01</opt>
5913      <opt>h10</opt>
5914    </mod>
5915    <mod name="lanes1" size="3" default="h01">
5916      <opt>h01</opt>
5917      <opt>h10</opt>
5918      <opt>h00</opt>
5919      <opt>h11</opt>
5920      <opt>b01</opt>
5921      <opt>b23</opt>
5922    </mod>
5923    <encoding mask="0xff8c0" exact="0xbd800">
5924      <and>
5925        <or>
5926          <eq left="lanes0" right="#h01"/>
5927          <eq left="lanes0" right="#h10"/>
5928        </or>
5929        <or>
5930          <eq left="lanes1" right="#h01"/>
5931          <eq left="lanes1" right="#h10"/>
5932        </or>
5933      </and>
5934      <derived start="9" size="1">
5935        <eq left="lanes1" right="#h01"/>
5936        <eq left="lanes1" right="#h10"/>
5937      </derived>
5938      <derived start="10" size="1">
5939        <eq left="lanes0" right="#h01"/>
5940        <eq left="lanes0" right="#h10"/>
5941      </derived>
5942    </encoding>
5943    <encoding mask="0xffcc0" exact="0xbfc40">
5944      <and>
5945        <eq left="lanes0" right="#h01"/>
5946        <or>
5947          <eq left="lanes1" right="#h00"/>
5948          <eq left="lanes1" right="#h11"/>
5949        </or>
5950      </and>
5951      <derived start="9" size="1">
5952        <eq left="lanes1" right="#h00"/>
5953        <eq left="lanes1" right="#h11"/>
5954      </derived>
5955    </encoding>
5956    <encoding mask="0xffcc0" exact="0xbf800">
5957      <and>
5958        <eq left="lanes0" right="#h01"/>
5959        <or>
5960          <eq left="lanes1" right="#b01"/>
5961          <eq left="lanes1" right="#b23"/>
5962        </or>
5963      </and>
5964      <derived start="9" size="1">
5965        <eq left="lanes1" right="#b01"/>
5966        <eq left="lanes1" right="#b23"/>
5967      </derived>
5968    </encoding>
5969  </ins>
5970
5971  <ins name="+ISUB.v2u16">
5972    <src start="0"/>
5973    <src start="3"/>
5974    <mod name="saturate" start="8" size="1" opt="sat"/>
5975    <mod name="lanes0" size="1" default="h01">
5976      <opt>h01</opt>
5977      <opt>h10</opt>
5978    </mod>
5979    <mod name="lanes1" size="3" default="h01">
5980      <opt>h01</opt>
5981      <opt>h10</opt>
5982      <opt>h00</opt>
5983      <opt>h11</opt>
5984      <opt>b01</opt>
5985      <opt>b23</opt>
5986    </mod>
5987    <encoding mask="0xff840" exact="0xbd800">
5988      <and>
5989        <or>
5990          <eq left="lanes0" right="#h01"/>
5991          <eq left="lanes0" right="#h10"/>
5992        </or>
5993        <or>
5994          <eq left="lanes1" right="#h01"/>
5995          <eq left="lanes1" right="#h10"/>
5996        </or>
5997      </and>
5998      <derived start="7" size="1">
5999        <and alias="true">
6000          <eq left="saturate" right="#none"/>
6001          <neq left="lanes1" right="#b01"/>
6002          <neq left="lanes1" right="#b23"/>
6003        </and>
6004        <or>
6005          <eq left="saturate" right="#sat"/>
6006          <eq left="lanes1" right="#b01"/>
6007          <eq left="lanes1" right="#b23"/>
6008        </or>
6009      </derived>
6010      <derived start="9" size="1">
6011        <eq left="lanes1" right="#h01"/>
6012        <eq left="lanes1" right="#h10"/>
6013      </derived>
6014      <derived start="10" size="1">
6015        <eq left="lanes0" right="#h01"/>
6016        <eq left="lanes0" right="#h10"/>
6017      </derived>
6018    </encoding>
6019    <encoding mask="0xffc40" exact="0xbfc40">
6020      <and>
6021        <eq left="lanes0" right="#h01"/>
6022        <or>
6023          <eq left="lanes1" right="#h00"/>
6024          <eq left="lanes1" right="#h11"/>
6025        </or>
6026      </and>
6027      <derived start="7" size="1">
6028        <and alias="true">
6029          <eq left="saturate" right="#none"/>
6030          <neq left="lanes1" right="#b01"/>
6031          <neq left="lanes1" right="#b23"/>
6032        </and>
6033        <or>
6034          <eq left="saturate" right="#sat"/>
6035          <eq left="lanes1" right="#b01"/>
6036          <eq left="lanes1" right="#b23"/>
6037        </or>
6038      </derived>
6039      <derived start="9" size="1">
6040        <eq left="lanes1" right="#h00"/>
6041        <eq left="lanes1" right="#h11"/>
6042      </derived>
6043    </encoding>
6044    <encoding mask="0xffc40" exact="0xbf800">
6045      <and>
6046        <eq left="lanes0" right="#h01"/>
6047        <or>
6048          <eq left="lanes1" right="#b01"/>
6049          <eq left="lanes1" right="#b23"/>
6050        </or>
6051      </and>
6052      <derived start="7" size="1">
6053        <and alias="true">
6054          <eq left="saturate" right="#none"/>
6055          <neq left="lanes1" right="#b01"/>
6056          <neq left="lanes1" right="#b23"/>
6057        </and>
6058        <or>
6059          <eq left="saturate" right="#sat"/>
6060          <eq left="lanes1" right="#b01"/>
6061          <eq left="lanes1" right="#b23"/>
6062        </or>
6063      </derived>
6064      <derived start="9" size="1">
6065        <eq left="lanes1" right="#b01"/>
6066        <eq left="lanes1" right="#b23"/>
6067      </derived>
6068    </encoding>
6069  </ins>
6070
6071  <ins name="+ISUB.v4s8">
6072    <src start="0"/>
6073    <src start="3"/>
6074    <mod name="saturate" start="8" size="1" opt="sat"/>
6075    <mod name="lanes0" size="3" default="b0123">
6076      <opt>b0123</opt>
6077    </mod>
6078    <mod name="lanes1" size="3" default="b0123">
6079      <opt>b0123</opt>
6080      <opt>b0000</opt>
6081      <opt>b1111</opt>
6082      <opt>b2222</opt>
6083      <opt>b3333</opt>
6084      <opt>b0101</opt>
6085      <opt>b2323</opt>
6086    </mod>
6087    <encoding mask="0xffec0" exact="0xbd400">
6088      <and>
6089        <eq left="lanes0" right="#b0123"/>
6090        <eq left="lanes1" right="#b0123"/>
6091      </and>
6092    </encoding>
6093    <encoding mask="0xff8c0" exact="0xbf040">
6094      <and>
6095        <eq left="lanes0" right="#b0123"/>
6096        <or>
6097          <eq left="lanes1" right="#b0000"/>
6098          <eq left="lanes1" right="#b1111"/>
6099          <eq left="lanes1" right="#b2222"/>
6100          <eq left="lanes1" right="#b3333"/>
6101        </or>
6102      </and>
6103      <derived start="9" size="2">
6104        <eq left="lanes1" right="#b0000"/>
6105        <eq left="lanes1" right="#b1111"/>
6106        <eq left="lanes1" right="#b2222"/>
6107        <eq left="lanes1" right="#b3333"/>
6108      </derived>
6109    </encoding>
6110    <encoding mask="0xffcc0" exact="0xbf840">
6111      <and>
6112        <eq left="lanes0" right="#b0123"/>
6113        <or>
6114          <eq left="lanes1" right="#b0101"/>
6115          <eq left="lanes1" right="#b2323"/>
6116        </or>
6117      </and>
6118      <derived start="9" size="1">
6119        <eq left="lanes1" right="#b0101"/>
6120        <eq left="lanes1" right="#b2323"/>
6121      </derived>
6122    </encoding>
6123  </ins>
6124
6125  <ins name="+ISUB.v4u8">
6126    <src start="0"/>
6127    <src start="3"/>
6128    <mod name="saturate" start="8" size="1" opt="sat"/>
6129    <mod name="lanes0" size="3" default="b0123">
6130      <opt>b0123</opt>
6131    </mod>
6132    <mod name="lanes1" size="3" default="b0123">
6133      <opt>b0123</opt>
6134      <opt>b0000</opt>
6135      <opt>b1111</opt>
6136      <opt>b2222</opt>
6137      <opt>b3333</opt>
6138      <opt>b0101</opt>
6139      <opt>b2323</opt>
6140    </mod>
6141    <encoding mask="0xffe40" exact="0xbd400">
6142      <and>
6143        <eq left="lanes0" right="#b0123"/>
6144        <eq left="lanes1" right="#b0123"/>
6145      </and>
6146      <derived start="7" size="1">
6147        <eq alias="true" left="saturate" right="#none"/>
6148        <eq left="saturate" right="#sat"/>
6149      </derived>
6150    </encoding>
6151    <encoding mask="0xff840" exact="0xbf040">
6152      <and>
6153        <eq left="lanes0" right="#b0123"/>
6154        <or>
6155          <eq left="lanes1" right="#b0000"/>
6156          <eq left="lanes1" right="#b1111"/>
6157          <eq left="lanes1" right="#b2222"/>
6158          <eq left="lanes1" right="#b3333"/>
6159        </or>
6160      </and>
6161      <derived start="7" size="1">
6162        <eq alias="true" left="saturate" right="#none"/>
6163        <eq left="saturate" right="#sat"/>
6164      </derived>
6165      <derived start="9" size="2">
6166        <eq left="lanes1" right="#b0000"/>
6167        <eq left="lanes1" right="#b1111"/>
6168        <eq left="lanes1" right="#b2222"/>
6169        <eq left="lanes1" right="#b3333"/>
6170      </derived>
6171    </encoding>
6172    <encoding mask="0xffc40" exact="0xbf840">
6173      <and>
6174        <eq left="lanes0" right="#b0123"/>
6175        <or>
6176          <eq left="lanes1" right="#b0101"/>
6177          <eq left="lanes1" right="#b2323"/>
6178        </or>
6179      </and>
6180      <derived start="7" size="1">
6181        <eq alias="true" left="saturate" right="#none"/>
6182        <eq left="saturate" right="#sat"/>
6183      </derived>
6184      <derived start="9" size="1">
6185        <eq left="lanes1" right="#b0101"/>
6186        <eq left="lanes1" right="#b2323"/>
6187      </derived>
6188    </encoding>
6189  </ins>
6190
6191  <ins name="+JUMP" mask="0xffe3f" exact="0x6fe34" last="true" dests="0">
6192    <src start="6" mask="0xf7"/>
6193  </ins>
6194
6195  <ins name="+KABOOM" mask="0xffff8" exact="0xd7858" unused="true" message="job_management">
6196    <src start="0"/>
6197  </ins>
6198
6199  <ins name="+LDEXP.f32" mask="0xffe00" exact="0x74c00">
6200    <src start="0"/>
6201    <src start="3"/>
6202    <mod name="round" start="6" size="3">
6203      <opt>none</opt>
6204      <opt>rtp</opt>
6205      <opt>rtn</opt>
6206      <opt>rtz</opt>
6207      <opt>rtna</opt>
6208      <reserved/>
6209      <opt>inf</opt>
6210      <opt>inf0</opt>
6211    </mod>
6212  </ins>
6213
6214  <ins name="+LDEXP.v2f16" mask="0xffe00" exact="0x74e00">
6215    <src start="0"/>
6216    <src start="3"/>
6217    <mod name="round" start="6" size="3">
6218      <opt>none</opt>
6219      <opt>rtp</opt>
6220      <opt>rtn</opt>
6221      <opt>rtz</opt>
6222      <opt>rtna</opt>
6223      <reserved/>
6224      <opt>inf</opt>
6225      <opt>inf0</opt>
6226    </mod>
6227  </ins>
6228
6229  <ins name="+LD_ATTR" staging="w=format" message="attribute">
6230    <src start="0"/>
6231    <src start="3"/>
6232    <src start="6"/>
6233    <mod name="register_format" size="4">
6234      <opt>f16</opt>
6235      <opt>f32</opt>
6236      <opt>s32</opt>
6237      <opt>u32</opt>
6238      <opt>s16</opt>
6239      <opt>u16</opt>
6240      <opt>f64</opt>
6241      <opt>i64</opt>
6242      <opt>auto</opt>
6243    </mod>
6244    <mod name="vecsize" start="11" size="2">
6245      <opt>none</opt>
6246      <opt>v2</opt>
6247      <opt>v3</opt>
6248      <opt>v4</opt>
6249    </mod>
6250    <encoding mask="0xf0600" exact="0x40400">
6251      <neq left="register_format" right="#auto"/>
6252      <derived start="13" size="3">
6253        <eq left="register_format" right="#f16"/>
6254        <eq left="register_format" right="#f32"/>
6255        <eq left="register_format" right="#s32"/>
6256        <eq left="register_format" right="#u32"/>
6257        <eq left="register_format" right="#s16"/>
6258        <eq left="register_format" right="#u16"/>
6259        <eq left="register_format" right="#f64"/>
6260        <eq left="register_format" right="#i64"/>
6261      </derived>
6262    </encoding>
6263    <encoding mask="0xfe600" exact="0xc4400">
6264      <eq left="register_format" right="#auto"/>
6265    </encoding>
6266  </ins>
6267
6268  <ins name="+LD_ATTR_IMM" staging="w=format" message="attribute">
6269    <src start="0"/>
6270    <src start="3"/>
6271    <immediate name="attribute_index" start="6" size="4"/>
6272    <mod name="register_format" size="4">
6273      <opt>f16</opt>
6274      <opt>f32</opt>
6275      <opt>s32</opt>
6276      <opt>u32</opt>
6277      <opt>s16</opt>
6278      <opt>u16</opt>
6279      <opt>f64</opt>
6280      <opt>i64</opt>
6281      <opt>auto</opt>
6282    </mod>
6283    <mod name="vecsize" start="11" size="2">
6284      <opt>none</opt>
6285      <opt>v2</opt>
6286      <opt>v3</opt>
6287      <opt>v4</opt>
6288    </mod>
6289    <encoding mask="0xf0400" exact="0x40000">
6290      <neq left="register_format" right="#auto"/>
6291      <derived start="13" size="3">
6292        <eq left="register_format" right="#f16"/>
6293        <eq left="register_format" right="#f32"/>
6294        <eq left="register_format" right="#s32"/>
6295        <eq left="register_format" right="#u32"/>
6296        <eq left="register_format" right="#s16"/>
6297        <eq left="register_format" right="#u16"/>
6298        <eq left="register_format" right="#f64"/>
6299        <eq left="register_format" right="#i64"/>
6300      </derived>
6301    </encoding>
6302    <encoding mask="0xfe400" exact="0xc4000">
6303      <eq left="register_format" right="#auto"/>
6304    </encoding>
6305  </ins>
6306
6307  <ins name="+LD_ATTR_TEX" staging="w=format" message="attribute">
6308    <src start="0"/>
6309    <src start="3"/>
6310    <src start="6"/>
6311    <mod name="register_format" size="4">
6312      <opt>f16</opt>
6313      <opt>f32</opt>
6314      <opt>s32</opt>
6315      <opt>u32</opt>
6316      <opt>s16</opt>
6317      <opt>u16</opt>
6318      <opt>f64</opt>
6319      <opt>i64</opt>
6320      <opt>auto</opt>
6321    </mod>
6322    <mod name="vecsize" start="11" size="2">
6323      <opt>none</opt>
6324      <opt>v2</opt>
6325      <opt>v3</opt>
6326      <opt>v4</opt>
6327    </mod>
6328    <encoding mask="0xf0600" exact="0x40600">
6329      <neq left="register_format" right="#auto"/>
6330      <derived start="13" size="3">
6331        <eq left="register_format" right="#f16"/>
6332        <eq left="register_format" right="#f32"/>
6333        <eq left="register_format" right="#s32"/>
6334        <eq left="register_format" right="#u32"/>
6335        <eq left="register_format" right="#s16"/>
6336        <eq left="register_format" right="#u16"/>
6337        <eq left="register_format" right="#f64"/>
6338        <eq left="register_format" right="#i64"/>
6339      </derived>
6340    </encoding>
6341    <encoding mask="0xfe600" exact="0xc4600">
6342      <eq left="register_format" right="#auto"/>
6343    </encoding>
6344  </ins>
6345
6346  <ins name="+LD_CVT" staging="w=format" mask="0xff800" exact="0xc9000" message="load">
6347    <src start="0"/>
6348    <src start="3"/>
6349    <src start="6" mask="0xf7"/>
6350    <mod name="register_format" size="4" pseudo="true">
6351      <opt>f16</opt>
6352      <opt>f32</opt>
6353      <opt>s32</opt>
6354      <opt>u32</opt>
6355      <opt>s16</opt>
6356      <opt>u16</opt>
6357      <opt>f64</opt>
6358      <opt>i64</opt>
6359    </mod>
6360    <mod name="vecsize" start="9" size="2">
6361      <opt>none</opt>
6362      <opt>v2</opt>
6363      <opt>v3</opt>
6364      <opt>v4</opt>
6365    </mod>
6366  </ins>
6367
6368  <ins name="+LD_GCLK.u64" staging="w=2" mask="0xffff8" exact="0xd7800" message="attribute">
6369    <mod name="source" start="0" size="3">
6370      <reserved/>
6371      <reserved/>
6372      <reserved/>
6373      <reserved/>
6374      <reserved/>
6375      <reserved/>
6376      <opt>system_timestamp</opt>
6377      <opt>cycle_counter</opt>
6378    </mod>
6379  </ins>
6380
6381  <ins name="+LD_TILE" staging="w=format" mask="0xff800" exact="0xcb000" message="tile">
6382    <src start="0"/>
6383    <src start="3"/>
6384    <src start="6" mask="0xf7"/>
6385    <mod name="vecsize" start="9" size="2">
6386      <opt>none</opt>
6387      <opt>v2</opt>
6388      <opt>v3</opt>
6389      <opt>v4</opt>
6390    </mod>
6391    <mod name="register_format" size="3" pseudo="true">
6392      <opt>f32</opt>
6393      <opt>f16</opt>
6394      <opt>u32</opt>
6395      <opt>s32</opt>
6396    </mod>
6397  </ins>
6398
6399  <ins name="+LD_VAR" staging="w=format" message="varying">
6400    <src start="0"/>
6401    <src start="3"/>
6402    <mod name="vecsize" start="8" size="2">
6403      <opt>none</opt>
6404      <opt>v2</opt>
6405      <opt>v3</opt>
6406      <opt>v4</opt>
6407    </mod>
6408    <mod name="update" size="2">
6409      <opt>store</opt>
6410      <opt>retrieve</opt>
6411      <opt>conditional</opt>
6412      <opt>clobber</opt>
6413    </mod>
6414    <mod name="register_format" size="2">
6415      <opt>f32</opt>
6416      <opt>f16</opt>
6417      <opt>auto</opt>
6418    </mod>
6419    <mod name="sample" size="3">
6420      <opt>center</opt>
6421      <opt>centroid</opt>
6422      <opt>sample</opt>
6423      <opt>explicit</opt>
6424      <opt>none</opt>
6425    </mod>
6426    <encoding mask="0x7c0c0" exact="0x500c0">
6427      <neq left="register_format" right="#auto"/>
6428      <derived start="19" size="1">
6429        <eq left="register_format" right="#f32"/>
6430        <eq left="register_format" right="#f16"/>
6431      </derived>
6432      <derived start="10" size="4">
6433        <and>
6434          <eq left="sample" right="#center"/>
6435          <eq left="update" right="#store"/>
6436        </and>
6437        <and>
6438          <eq left="sample" right="#centroid"/>
6439          <eq left="update" right="#store"/>
6440        </and>
6441        <and>
6442          <eq left="sample" right="#sample"/>
6443          <eq left="update" right="#store"/>
6444        </and>
6445        <and>
6446          <eq left="sample" right="#explicit"/>
6447          <eq left="update" right="#store"/>
6448        </and>
6449        <and>
6450          <eq left="sample" right="#none"/>
6451          <eq left="update" right="#retrieve"/>
6452        </and>
6453        <reserved/>
6454        <reserved/>
6455        <reserved/>
6456        <and>
6457          <eq left="sample" right="#center"/>
6458          <eq left="update" right="#conditional"/>
6459        </and>
6460        <and>
6461          <eq left="sample" right="#centroid"/>
6462          <eq left="update" right="#conditional"/>
6463        </and>
6464        <and>
6465          <eq left="sample" right="#center"/>
6466          <eq left="update" right="#clobber"/>
6467        </and>
6468        <and>
6469          <eq left="sample" right="#centroid"/>
6470          <eq left="update" right="#clobber"/>
6471        </and>
6472        <and>
6473          <eq left="sample" right="#sample"/>
6474          <eq left="update" right="#clobber"/>
6475        </and>
6476        <and>
6477          <eq left="sample" right="#explicit"/>
6478          <eq left="update" right="#clobber"/>
6479        </and>
6480        <reserved/>
6481        <reserved/>
6482      </derived>
6483    </encoding>
6484    <encoding mask="0xfc0c0" exact="0xcc0c0">
6485      <eq left="register_format" right="#auto"/>
6486      <derived start="10" size="4">
6487        <and>
6488          <eq left="sample" right="#center"/>
6489          <eq left="update" right="#store"/>
6490        </and>
6491        <and>
6492          <eq left="sample" right="#centroid"/>
6493          <eq left="update" right="#store"/>
6494        </and>
6495        <and>
6496          <eq left="sample" right="#sample"/>
6497          <eq left="update" right="#store"/>
6498        </and>
6499        <and>
6500          <eq left="sample" right="#explicit"/>
6501          <eq left="update" right="#store"/>
6502        </and>
6503        <and>
6504          <eq left="sample" right="#none"/>
6505          <eq left="update" right="#retrieve"/>
6506        </and>
6507        <reserved/>
6508        <reserved/>
6509        <reserved/>
6510        <and>
6511          <eq left="sample" right="#center"/>
6512          <eq left="update" right="#conditional"/>
6513        </and>
6514        <and>
6515          <eq left="sample" right="#centroid"/>
6516          <eq left="update" right="#conditional"/>
6517        </and>
6518        <and>
6519          <eq left="sample" right="#center"/>
6520          <eq left="update" right="#clobber"/>
6521        </and>
6522        <and>
6523          <eq left="sample" right="#centroid"/>
6524          <eq left="update" right="#clobber"/>
6525        </and>
6526        <and>
6527          <eq left="sample" right="#sample"/>
6528          <eq left="update" right="#clobber"/>
6529        </and>
6530        <and>
6531          <eq left="sample" right="#explicit"/>
6532          <eq left="update" right="#clobber"/>
6533        </and>
6534        <reserved/>
6535        <reserved/>
6536      </derived>
6537    </encoding>
6538  </ins>
6539
6540  <ins name="+LD_VAR_FLAT" staging="w=format" message="varying">
6541    <src start="3"/>
6542    <mod name="vecsize" start="8" size="2">
6543      <opt>none</opt>
6544      <opt>v2</opt>
6545      <opt>v3</opt>
6546      <opt>v4</opt>
6547    </mod>
6548    <mod name="register_format" size="3">
6549      <opt>f32</opt>
6550      <opt>f16</opt>
6551      <opt>u32</opt>
6552      <opt>s32</opt>
6553      <opt>auto</opt>
6554    </mod>
6555    <mod name="function" start="0" size="3">
6556      <reserved/>
6557      <reserved/>
6558      <reserved/>
6559      <opt>none</opt>
6560      <reserved/>
6561      <reserved/>
6562      <opt>and</opt>
6563      <opt>or</opt>
6564    </mod>
6565    <encoding mask="0x7f8c0" exact="0x538c0">
6566      <neq left="register_format" right="#auto"/>
6567      <derived start="10" size="1">
6568        <or>
6569          <eq left="register_format" right="#f32"/>
6570          <eq left="register_format" right="#f16"/>
6571        </or>
6572        <or>
6573          <eq left="register_format" right="#u32"/>
6574          <eq left="register_format" right="#s32"/>
6575        </or>
6576      </derived>
6577      <derived start="19" size="1">
6578        <or>
6579          <eq left="register_format" right="#f32"/>
6580          <eq left="register_format" right="#u32"/>
6581        </or>
6582        <or>
6583          <eq left="register_format" right="#f16"/>
6584          <eq left="register_format" right="#s32"/>
6585        </or>
6586      </derived>
6587    </encoding>
6588    <encoding mask="0xffcc0" exact="0xcf8c0">
6589      <eq left="register_format" right="#auto"/>
6590    </encoding>
6591  </ins>
6592
6593  <ins name="+LD_VAR_FLAT_IMM" staging="w=format" message="varying">
6594    <immediate name="index" start="3" size="5"/>
6595    <mod name="vecsize" start="8" size="2">
6596      <opt>none</opt>
6597      <opt>v2</opt>
6598      <opt>v3</opt>
6599      <opt>v4</opt>
6600    </mod>
6601    <mod name="register_format" size="3">
6602      <opt>f32</opt>
6603      <opt>f16</opt>
6604      <opt>u32</opt>
6605      <opt>s32</opt>
6606      <opt>auto</opt>
6607    </mod>
6608    <mod name="function" start="0" size="3">
6609      <reserved/>
6610      <reserved/>
6611      <reserved/>
6612      <opt>none</opt>
6613      <reserved/>
6614      <reserved/>
6615      <opt>and</opt>
6616      <opt>or</opt>
6617    </mod>
6618    <encoding mask="0x7f800" exact="0x53800">
6619      <neq left="register_format" right="#auto"/>
6620      <derived start="10" size="1">
6621        <or>
6622          <eq left="register_format" right="#f32"/>
6623          <eq left="register_format" right="#f16"/>
6624        </or>
6625        <or>
6626          <eq left="register_format" right="#u32"/>
6627          <eq left="register_format" right="#s32"/>
6628        </or>
6629      </derived>
6630      <derived start="19" size="1">
6631        <or>
6632          <eq left="register_format" right="#f32"/>
6633          <eq left="register_format" right="#u32"/>
6634        </or>
6635        <or>
6636          <eq left="register_format" right="#f16"/>
6637          <eq left="register_format" right="#s32"/>
6638        </or>
6639      </derived>
6640    </encoding>
6641    <encoding mask="0xffc00" exact="0xcf800">
6642      <eq left="register_format" right="#auto"/>
6643    </encoding>
6644  </ins>
6645
6646  <ins name="+LD_VAR_IMM" staging="w=format" message="varying">
6647    <src start="0"/>
6648    <immediate name="index" start="3" size="5"/>
6649    <mod name="vecsize" start="8" size="2">
6650      <opt>none</opt>
6651      <opt>v2</opt>
6652      <opt>v3</opt>
6653      <opt>v4</opt>
6654    </mod>
6655    <mod name="update" size="2">
6656      <opt>store</opt>
6657      <opt>retrieve</opt>
6658      <opt>conditional</opt>
6659      <opt>clobber</opt>
6660    </mod>
6661    <mod name="register_format" size="2">
6662      <opt>f32</opt>
6663      <opt>f16</opt>
6664      <opt>auto</opt>
6665    </mod>
6666    <mod name="sample" size="3">
6667      <opt>center</opt>
6668      <opt>centroid</opt>
6669      <opt>sample</opt>
6670      <opt>explicit</opt>
6671      <opt>none</opt>
6672    </mod>
6673    <encoding mask="0x7c000" exact="0x50000">
6674      <neq left="register_format" right="#auto"/>
6675      <derived start="19" size="1">
6676        <eq left="register_format" right="#f32"/>
6677        <eq left="register_format" right="#f16"/>
6678      </derived>
6679      <derived start="10" size="4">
6680        <and>
6681          <eq left="sample" right="#center"/>
6682          <eq left="update" right="#store"/>
6683        </and>
6684        <and>
6685          <eq left="sample" right="#centroid"/>
6686          <eq left="update" right="#store"/>
6687        </and>
6688        <and>
6689          <eq left="sample" right="#sample"/>
6690          <eq left="update" right="#store"/>
6691        </and>
6692        <and>
6693          <eq left="sample" right="#explicit"/>
6694          <eq left="update" right="#store"/>
6695        </and>
6696        <and>
6697          <eq left="sample" right="#none"/>
6698          <eq left="update" right="#retrieve"/>
6699        </and>
6700        <reserved/>
6701        <reserved/>
6702        <reserved/>
6703        <and>
6704          <eq left="sample" right="#center"/>
6705          <eq left="update" right="#conditional"/>
6706        </and>
6707        <and>
6708          <eq left="sample" right="#centroid"/>
6709          <eq left="update" right="#conditional"/>
6710        </and>
6711        <and>
6712          <eq left="sample" right="#center"/>
6713          <eq left="update" right="#clobber"/>
6714        </and>
6715        <and>
6716          <eq left="sample" right="#centroid"/>
6717          <eq left="update" right="#clobber"/>
6718        </and>
6719        <and>
6720          <eq left="sample" right="#sample"/>
6721          <eq left="update" right="#clobber"/>
6722        </and>
6723        <and>
6724          <eq left="sample" right="#explicit"/>
6725          <eq left="update" right="#clobber"/>
6726        </and>
6727        <reserved/>
6728        <reserved/>
6729      </derived>
6730    </encoding>
6731    <encoding mask="0xfc000" exact="0xcc000">
6732      <eq left="register_format" right="#auto"/>
6733      <derived start="10" size="4">
6734        <and>
6735          <eq left="sample" right="#center"/>
6736          <eq left="update" right="#store"/>
6737        </and>
6738        <and>
6739          <eq left="sample" right="#centroid"/>
6740          <eq left="update" right="#store"/>
6741        </and>
6742        <and>
6743          <eq left="sample" right="#sample"/>
6744          <eq left="update" right="#store"/>
6745        </and>
6746        <and>
6747          <eq left="sample" right="#explicit"/>
6748          <eq left="update" right="#store"/>
6749        </and>
6750        <and>
6751          <eq left="sample" right="#none"/>
6752          <eq left="update" right="#retrieve"/>
6753        </and>
6754        <reserved/>
6755        <reserved/>
6756        <reserved/>
6757        <and>
6758          <eq left="sample" right="#center"/>
6759          <eq left="update" right="#conditional"/>
6760        </and>
6761        <and>
6762          <eq left="sample" right="#centroid"/>
6763          <eq left="update" right="#conditional"/>
6764        </and>
6765        <and>
6766          <eq left="sample" right="#center"/>
6767          <eq left="update" right="#clobber"/>
6768        </and>
6769        <and>
6770          <eq left="sample" right="#centroid"/>
6771          <eq left="update" right="#clobber"/>
6772        </and>
6773        <and>
6774          <eq left="sample" right="#sample"/>
6775          <eq left="update" right="#clobber"/>
6776        </and>
6777        <and>
6778          <eq left="sample" right="#explicit"/>
6779          <eq left="update" right="#clobber"/>
6780        </and>
6781        <reserved/>
6782        <reserved/>
6783      </derived>
6784    </encoding>
6785  </ins>
6786
6787  <ins name="+LD_VAR_SPECIAL" staging="w=format" message="varying">
6788    <src start="0"/>
6789    <mod name="varying_name" size="5">
6790      <opt>point</opt>
6791      <reserved/>
6792      <opt>frag_w</opt>
6793      <opt>frag_z</opt>
6794    </mod>
6795    <mod name="vecsize" size="2">
6796      <opt>none</opt>
6797      <opt>v2</opt>
6798      <opt>v3</opt>
6799      <opt>v4</opt>
6800    </mod>
6801    <mod name="update" size="2">
6802      <opt>store</opt>
6803      <opt>retrieve</opt>
6804      <opt>conditional</opt>
6805      <opt>clobber</opt>
6806    </mod>
6807    <mod name="register_format" size="2">
6808      <opt>f32</opt>
6809      <opt>f16</opt>
6810      <opt>auto</opt>
6811    </mod>
6812    <mod name="sample" size="3">
6813      <opt>center</opt>
6814      <opt>centroid</opt>
6815      <opt>sample</opt>
6816      <opt>explicit</opt>
6817      <opt>none</opt>
6818    </mod>
6819    <encoding mask="0x7c3e0" exact="0x500a0">
6820      <neq left="register_format" right="#auto"/>
6821      <derived start="3" size="2">
6822        <and>
6823          <eq left="varying_name" right="#point"/>
6824          <eq left="vecsize" right="#v2"/>
6825          <eq left="update" right="#clobber"/>
6826        </and>
6827        <reserved/>
6828        <and>
6829          <eq left="varying_name" right="#frag_w"/>
6830          <eq left="vecsize" right="#none"/>
6831          <eq left="update" right="#clobber"/>
6832        </and>
6833        <and>
6834          <eq left="varying_name" right="#frag_z"/>
6835          <eq left="vecsize" right="#none"/>
6836          <eq left="update" right="#clobber"/>
6837          <neq left="sample" right="#explicit"/>
6838          <neq left="register_format" right="#auto"/>
6839        </and>
6840      </derived>
6841      <derived start="19" size="1">
6842        <eq left="register_format" right="#f32"/>
6843        <eq left="register_format" right="#f16"/>
6844      </derived>
6845      <derived start="10" size="4">
6846        <and>
6847          <eq left="sample" right="#center"/>
6848          <eq left="update" right="#store"/>
6849        </and>
6850        <and>
6851          <eq left="sample" right="#centroid"/>
6852          <eq left="update" right="#store"/>
6853        </and>
6854        <and>
6855          <eq left="sample" right="#sample"/>
6856          <eq left="update" right="#store"/>
6857        </and>
6858        <and>
6859          <eq left="sample" right="#explicit"/>
6860          <eq left="update" right="#store"/>
6861        </and>
6862        <and>
6863          <eq left="sample" right="#none"/>
6864          <eq left="update" right="#retrieve"/>
6865        </and>
6866        <reserved/>
6867        <reserved/>
6868        <reserved/>
6869        <and>
6870          <eq left="sample" right="#center"/>
6871          <eq left="update" right="#conditional"/>
6872        </and>
6873        <and>
6874          <eq left="sample" right="#centroid"/>
6875          <eq left="update" right="#conditional"/>
6876        </and>
6877        <and>
6878          <eq left="sample" right="#center"/>
6879          <eq left="update" right="#clobber"/>
6880        </and>
6881        <and>
6882          <eq left="sample" right="#centroid"/>
6883          <eq left="update" right="#clobber"/>
6884        </and>
6885        <and>
6886          <eq left="sample" right="#sample"/>
6887          <eq left="update" right="#clobber"/>
6888        </and>
6889        <and>
6890          <eq left="sample" right="#explicit"/>
6891          <eq left="update" right="#clobber"/>
6892        </and>
6893        <reserved/>
6894        <reserved/>
6895      </derived>
6896    </encoding>
6897    <encoding mask="0xfc3e0" exact="0xcc0a0">
6898      <eq left="register_format" right="#auto"/>
6899      <derived start="3" size="2">
6900        <and>
6901          <eq left="varying_name" right="#point"/>
6902          <eq left="vecsize" right="#v2"/>
6903          <eq left="update" right="#clobber"/>
6904        </and>
6905        <reserved/>
6906        <and>
6907          <eq left="varying_name" right="#frag_w"/>
6908          <eq left="vecsize" right="#none"/>
6909          <eq left="update" right="#clobber"/>
6910        </and>
6911        <and>
6912          <eq left="varying_name" right="#frag_z"/>
6913          <eq left="vecsize" right="#none"/>
6914          <eq left="update" right="#clobber"/>
6915          <neq left="sample" right="#explicit"/>
6916          <neq left="register_format" right="#auto"/>
6917        </and>
6918      </derived>
6919      <derived start="10" size="4">
6920        <and>
6921          <eq left="sample" right="#center"/>
6922          <eq left="update" right="#store"/>
6923        </and>
6924        <and>
6925          <eq left="sample" right="#centroid"/>
6926          <eq left="update" right="#store"/>
6927        </and>
6928        <and>
6929          <eq left="sample" right="#sample"/>
6930          <eq left="update" right="#store"/>
6931        </and>
6932        <and>
6933          <eq left="sample" right="#explicit"/>
6934          <eq left="update" right="#store"/>
6935        </and>
6936        <and>
6937          <eq left="sample" right="#none"/>
6938          <eq left="update" right="#retrieve"/>
6939        </and>
6940        <reserved/>
6941        <reserved/>
6942        <reserved/>
6943        <and>
6944          <eq left="sample" right="#center"/>
6945          <eq left="update" right="#conditional"/>
6946        </and>
6947        <and>
6948          <eq left="sample" right="#centroid"/>
6949          <eq left="update" right="#conditional"/>
6950        </and>
6951        <and>
6952          <eq left="sample" right="#center"/>
6953          <eq left="update" right="#clobber"/>
6954        </and>
6955        <and>
6956          <eq left="sample" right="#centroid"/>
6957          <eq left="update" right="#clobber"/>
6958        </and>
6959        <and>
6960          <eq left="sample" right="#sample"/>
6961          <eq left="update" right="#clobber"/>
6962        </and>
6963        <and>
6964          <eq left="sample" right="#explicit"/>
6965          <eq left="update" right="#clobber"/>
6966        </and>
6967        <reserved/>
6968        <reserved/>
6969      </derived>
6970    </encoding>
6971  </ins>
6972
6973  <ins name="+LEA_ATTR" staging="w=3" message="attribute">
6974    <src start="0"/>
6975    <src start="3"/>
6976    <src start="6"/>
6977    <mod name="register_format" size="4">
6978      <opt>f16</opt>
6979      <opt>f32</opt>
6980      <opt>s32</opt>
6981      <opt>u32</opt>
6982      <opt>s16</opt>
6983      <opt>u16</opt>
6984      <opt>f64</opt>
6985      <opt>i64</opt>
6986      <opt>auto</opt>
6987    </mod>
6988    <encoding mask="0xfc600" exact="0xc0400">
6989      <neq left="register_format" right="#auto"/>
6990      <derived start="11" size="3">
6991        <eq left="register_format" right="#f16"/>
6992        <eq left="register_format" right="#f32"/>
6993        <eq left="register_format" right="#s32"/>
6994        <eq left="register_format" right="#u32"/>
6995        <eq left="register_format" right="#s16"/>
6996        <eq left="register_format" right="#u16"/>
6997        <eq left="register_format" right="#f64"/>
6998        <eq left="register_format" right="#i64"/>
6999      </derived>
7000    </encoding>
7001    <encoding mask="0xffe00" exact="0xc8400">
7002      <eq left="register_format" right="#auto"/>
7003    </encoding>
7004  </ins>
7005
7006  <ins name="+LEA_ATTR_IMM" staging="w=3" message="attribute">
7007    <src start="0"/>
7008    <src start="3"/>
7009    <immediate name="attribute_index" start="6" size="4"/>
7010    <mod name="register_format" size="4">
7011      <opt>f16</opt>
7012      <opt>f32</opt>
7013      <opt>s32</opt>
7014      <opt>u32</opt>
7015      <opt>s16</opt>
7016      <opt>u16</opt>
7017      <opt>f64</opt>
7018      <opt>i64</opt>
7019      <opt>auto</opt>
7020    </mod>
7021    <encoding mask="0xfc400" exact="0xc0000">
7022      <neq left="register_format" right="#auto"/>
7023      <derived start="11" size="3">
7024        <eq left="register_format" right="#f16"/>
7025        <eq left="register_format" right="#f32"/>
7026        <eq left="register_format" right="#s32"/>
7027        <eq left="register_format" right="#u32"/>
7028        <eq left="register_format" right="#s16"/>
7029        <eq left="register_format" right="#u16"/>
7030        <eq left="register_format" right="#f64"/>
7031        <eq left="register_format" right="#i64"/>
7032      </derived>
7033    </encoding>
7034    <encoding mask="0xffc00" exact="0xc8000">
7035      <eq left="register_format" right="#auto"/>
7036    </encoding>
7037  </ins>
7038
7039  <ins name="+LEA_ATTR_TEX" staging="w=3" message="attribute">
7040    <src start="0"/>
7041    <src start="3"/>
7042    <src start="6"/>
7043    <mod name="register_format" size="4">
7044      <opt>f16</opt>
7045      <opt>f32</opt>
7046      <opt>s32</opt>
7047      <opt>u32</opt>
7048      <opt>s16</opt>
7049      <opt>u16</opt>
7050      <opt>f64</opt>
7051      <opt>i64</opt>
7052      <opt>auto</opt>
7053    </mod>
7054    <encoding mask="0xfc600" exact="0xc0600">
7055      <neq left="register_format" right="#auto"/>
7056      <derived start="11" size="3">
7057        <eq left="register_format" right="#f16"/>
7058        <eq left="register_format" right="#f32"/>
7059        <eq left="register_format" right="#s32"/>
7060        <eq left="register_format" right="#u32"/>
7061        <eq left="register_format" right="#s16"/>
7062        <eq left="register_format" right="#u16"/>
7063        <eq left="register_format" right="#f64"/>
7064        <eq left="register_format" right="#i64"/>
7065      </derived>
7066    </encoding>
7067    <encoding mask="0xffe00" exact="0xc8600">
7068      <eq left="register_format" right="#auto"/>
7069    </encoding>
7070  </ins>
7071
7072  <ins name="+LEA_TEX" staging="w=3" mask="0xff600" exact="0xd6600" message="attribute">
7073    <src start="0"/>
7074    <src start="3"/>
7075    <src start="6"/>
7076    <mod name="format" start="11" size="1">
7077      <opt>u16</opt>
7078      <opt>u32</opt>
7079    </mod>
7080  </ins>
7081
7082  <ins name="+LEA_TEX_IMM" staging="w=3" mask="0xff000" exact="0xd6000" message="attribute">
7083    <src start="0"/>
7084    <src start="3"/>
7085    <immediate name="texture_index" start="6" size="5"/>
7086    <mod name="format" start="11" size="1">
7087      <opt>u16</opt>
7088      <opt>u32</opt>
7089    </mod>
7090  </ins>
7091
7092  <ins name="+LOAD.i128" staging="w=4" mask="0xffe00" exact="0x61000" message="load">
7093    <src start="0"/>
7094    <src start="3"/>
7095    <mod name="seg" start="6" size="3">
7096      <reserved/>
7097      <opt>none</opt>
7098      <opt>wls</opt>
7099      <opt>stream</opt>
7100      <opt>ubo</opt>
7101      <reserved/>
7102      <reserved/>
7103      <opt>tl</opt>
7104    </mod>
7105    <immediate name="byte_offset" size="16" pseudo="true"/>
7106  </ins>
7107
7108  <ins name="+LOAD.i16" staging="w=1" message="load">
7109    <src start="0"/>
7110    <src start="3"/>
7111    <mod name="seg" start="6" size="3">
7112      <reserved/>
7113      <opt>none</opt>
7114      <opt>wls</opt>
7115      <opt>stream</opt>
7116      <opt>ubo</opt>
7117      <reserved/>
7118      <reserved/>
7119      <opt>tl</opt>
7120    </mod>
7121    <mod name="lane_dest" size="2" default="h0">
7122      <opt>h0</opt>
7123      <opt>h1</opt>
7124      <opt>w0</opt>
7125      <opt>d0</opt>
7126    </mod>
7127    <mod name="extend" size="2">
7128      <opt>none</opt>
7129      <opt>sext</opt>
7130      <opt>zext</opt>
7131    </mod>
7132    <encoding mask="0xffc00" exact="0x60800">
7133      <and>
7134        <eq left="extend" right="#none"/>
7135        <or>
7136          <eq left="lane_dest" right="#h0"/>
7137          <eq left="lane_dest" right="#h1"/>
7138        </or>
7139      </and>
7140      <derived start="9" size="1">
7141        <eq left="lane_dest" right="#h0"/>
7142        <eq left="lane_dest" right="#h1"/>
7143      </derived>
7144    </encoding>
7145    <encoding mask="0xffc00" exact="0x63000">
7146      <and>
7147        <neq left="extend" right="#none"/>
7148        <eq left="lane_dest" right="#w0"/>
7149      </and>
7150      <derived start="9" size="1">
7151        <eq left="extend" right="#sext"/>
7152        <eq left="extend" right="#zext"/>
7153      </derived>
7154    </encoding>
7155    <encoding mask="0xffc00" exact="0x61800">
7156      <and>
7157        <neq left="extend" right="#none"/>
7158        <eq left="lane_dest" right="#d0"/>
7159      </and>
7160      <derived start="9" size="1">
7161        <eq left="extend" right="#sext"/>
7162        <eq left="extend" right="#zext"/>
7163      </derived>
7164    </encoding>
7165    <immediate name="byte_offset" size="16" pseudo="true"/>
7166  </ins>
7167
7168  <ins name="+LOAD.i24" staging="w=1" mask="0xffe00" exact="0x65000" message="load">
7169    <src start="0"/>
7170    <src start="3"/>
7171    <mod name="seg" start="6" size="3">
7172      <reserved/>
7173      <opt>none</opt>
7174      <opt>wls</opt>
7175      <opt>stream</opt>
7176      <opt>ubo</opt>
7177      <reserved/>
7178      <reserved/>
7179      <opt>tl</opt>
7180    </mod>
7181    <immediate name="byte_offset" size="16" pseudo="true"/>
7182  </ins>
7183
7184  <ins name="+LOAD.i32" staging="w=1" message="load">
7185    <src start="0"/>
7186    <src start="3"/>
7187    <mod name="seg" start="6" size="3">
7188      <reserved/>
7189      <opt>none</opt>
7190      <opt>wls</opt>
7191      <opt>stream</opt>
7192      <opt>ubo</opt>
7193      <reserved/>
7194      <reserved/>
7195      <opt>tl</opt>
7196    </mod>
7197    <mod name="lane_dest" size="1" opt="d0"/>
7198    <mod name="extend" size="2">
7199      <opt>none</opt>
7200      <opt>sext</opt>
7201      <opt>zext</opt>
7202    </mod>
7203    <encoding mask="0xffe00" exact="0x60c00">
7204      <and>
7205        <eq left="extend" right="#none"/>
7206        <eq left="lane_dest" right="#none"/>
7207      </and>
7208    </encoding>
7209    <encoding mask="0xffc00" exact="0x61c00">
7210      <and>
7211        <neq left="extend" right="#none"/>
7212        <eq left="lane_dest" right="#d0"/>
7213      </and>
7214      <derived start="9" size="1">
7215        <eq left="extend" right="#sext"/>
7216        <eq left="extend" right="#zext"/>
7217      </derived>
7218    </encoding>
7219    <immediate name="byte_offset" size="16" pseudo="true"/>
7220  </ins>
7221
7222  <ins name="+LOAD.i48" staging="w=2" mask="0xffe00" exact="0x65200" message="load">
7223    <src start="0"/>
7224    <src start="3"/>
7225    <mod name="seg" start="6" size="3">
7226      <reserved/>
7227      <opt>none</opt>
7228      <opt>wls</opt>
7229      <opt>stream</opt>
7230      <opt>ubo</opt>
7231      <reserved/>
7232      <reserved/>
7233      <opt>tl</opt>
7234    </mod>
7235    <immediate name="byte_offset" size="16" pseudo="true"/>
7236  </ins>
7237
7238  <ins name="+LOAD.i64" staging="w=2" mask="0xffe00" exact="0x60e00" message="load">
7239    <src start="0"/>
7240    <src start="3"/>
7241    <mod name="seg" start="6" size="3">
7242      <reserved/>
7243      <opt>none</opt>
7244      <opt>wls</opt>
7245      <opt>stream</opt>
7246      <opt>ubo</opt>
7247      <reserved/>
7248      <reserved/>
7249      <opt>tl</opt>
7250    </mod>
7251    <immediate name="byte_offset" size="16" pseudo="true"/>
7252  </ins>
7253
7254  <ins name="+LOAD.i8" staging="w=1" message="load">
7255    <src start="0"/>
7256    <src start="3"/>
7257    <mod name="seg" start="6" size="3">
7258      <reserved/>
7259      <opt>none</opt>
7260      <opt>wls</opt>
7261      <opt>stream</opt>
7262      <opt>ubo</opt>
7263      <reserved/>
7264      <reserved/>
7265      <opt>tl</opt>
7266    </mod>
7267    <mod name="lane_dest" size="3" default="b0">
7268      <opt>b0</opt>
7269      <opt>b1</opt>
7270      <opt>b2</opt>
7271      <opt>b3</opt>
7272      <opt>h0</opt>
7273      <opt>h1</opt>
7274      <opt>w0</opt>
7275      <opt>d0</opt>
7276    </mod>
7277    <mod name="extend" size="2">
7278      <opt>none</opt>
7279      <opt>sext</opt>
7280      <opt>zext</opt>
7281    </mod>
7282    <encoding mask="0xff800" exact="0x60000">
7283      <and>
7284        <eq left="extend" right="#none"/>
7285        <or>
7286          <eq left="lane_dest" right="#b0"/>
7287          <eq left="lane_dest" right="#b1"/>
7288          <eq left="lane_dest" right="#b2"/>
7289          <eq left="lane_dest" right="#b3"/>
7290        </or>
7291      </and>
7292      <derived start="9" size="2">
7293        <eq left="lane_dest" right="#b0"/>
7294        <eq left="lane_dest" right="#b1"/>
7295        <eq left="lane_dest" right="#b2"/>
7296        <eq left="lane_dest" right="#b3"/>
7297      </derived>
7298    </encoding>
7299    <encoding mask="0xff800" exact="0x63800">
7300      <and>
7301        <neq left="extend" right="#none"/>
7302        <or>
7303          <eq left="lane_dest" right="#h0"/>
7304          <eq left="lane_dest" right="#h1"/>
7305        </or>
7306      </and>
7307      <derived start="9" size="1">
7308        <eq left="extend" right="#sext"/>
7309        <eq left="extend" right="#zext"/>
7310      </derived>
7311      <derived start="10" size="1">
7312        <eq left="lane_dest" right="#h0"/>
7313        <eq left="lane_dest" right="#h1"/>
7314      </derived>
7315    </encoding>
7316    <encoding mask="0xffc00" exact="0x63400">
7317      <and>
7318        <neq left="extend" right="#none"/>
7319        <eq left="lane_dest" right="#w0"/>
7320      </and>
7321      <derived start="9" size="1">
7322        <eq left="extend" right="#sext"/>
7323        <eq left="extend" right="#zext"/>
7324      </derived>
7325    </encoding>
7326    <encoding mask="0xffc00" exact="0x61400">
7327      <and>
7328        <neq left="extend" right="#none"/>
7329        <eq left="lane_dest" right="#d0"/>
7330      </and>
7331      <derived start="9" size="1">
7332        <eq left="extend" right="#sext"/>
7333        <eq left="extend" right="#zext"/>
7334      </derived>
7335    </encoding>
7336    <immediate name="byte_offset" size="16" pseudo="true"/>
7337  </ins>
7338
7339  <ins name="+LOAD.i96" staging="w=3" mask="0xffe00" exact="0x65400" message="load">
7340    <src start="0"/>
7341    <src start="3"/>
7342    <mod name="seg" start="6" size="3">
7343      <reserved/>
7344      <opt>none</opt>
7345      <opt>wls</opt>
7346      <opt>stream</opt>
7347      <opt>ubo</opt>
7348      <reserved/>
7349      <reserved/>
7350      <opt>tl</opt>
7351    </mod>
7352    <immediate name="byte_offset" size="16" pseudo="true"/>
7353  </ins>
7354
7355  <ins name="+LOGB.f32" mask="0xfffe0" exact="0x3d9a0">
7356    <src start="0"/>
7357    <mod name="widen0" start="3" size="2">
7358      <reserved/>
7359      <opt>none</opt>
7360      <opt>h0</opt>
7361      <opt>h1</opt>
7362    </mod>
7363  </ins>
7364
7365  <ins name="+LOGB.v2f16" mask="0xfffe0" exact="0x3d980">
7366    <src start="0"/>
7367    <mod name="swz0" start="3" size="2" default="h01">
7368      <opt>h00</opt>
7369      <opt>h10</opt>
7370      <opt>h01</opt>
7371      <opt>h11</opt>
7372    </mod>
7373  </ins>
7374
7375  <ins name="+MKVEC.v2i16" mask="0xfff00" exact="0x75300">
7376    <src start="0"/>
7377    <src start="3"/>
7378    <mod name="lane0" start="6" size="1" default="h0">
7379      <opt>h0</opt>
7380      <opt>h1</opt>
7381    </mod>
7382    <mod name="lane1" start="7" size="1" default="h0">
7383      <opt>h0</opt>
7384      <opt>h1</opt>
7385    </mod>
7386  </ins>
7387
7388  <ins name="+MOV.i32" mask="0xffff8" exact="0x3d968">
7389    <src start="0"/>
7390  </ins>
7391
7392  <ins name="+MUX.i32" mask="0xff800" exact="0x74000">
7393    <src start="0"/>
7394    <src start="3"/>
7395    <src start="6"/>
7396    <mod name="mux" start="9" size="2" default="int_zero">
7397      <opt>neg</opt>
7398      <opt>int_zero</opt>
7399      <opt>fp_zero</opt>
7400      <opt>bit</opt>
7401    </mod>
7402  </ins>
7403
7404  <ins name="+MUX.v2i16" mask="0xfc000" exact="0x70000">
7405    <src start="0"/>
7406    <src start="3"/>
7407    <src start="6"/>
7408    <mod name="mux" start="9" size="2" default="int_zero">
7409      <opt>neg</opt>
7410      <opt>int_zero</opt>
7411      <opt>fp_zero</opt>
7412      <opt>bit</opt>
7413    </mod>
7414    <mod name="swap2" start="11" size="1" default="h01">
7415      <opt>h01</opt>
7416      <opt>h10</opt>
7417    </mod>
7418    <mod name="swap1" start="12" size="1" default="h01">
7419      <opt>h01</opt>
7420      <opt>h10</opt>
7421    </mod>
7422    <mod name="swap0" start="13" size="1" default="h01">
7423      <opt>h01</opt>
7424      <opt>h10</opt>
7425    </mod>
7426  </ins>
7427
7428  <ins name="+MUX.v4i8" mask="0xffc00" exact="0x74800">
7429    <src start="0"/>
7430    <src start="3"/>
7431    <src start="6"/>
7432    <mod name="mux" start="9" size="1" default="int_zero">
7433      <opt>neg</opt>
7434      <opt>int_zero</opt>
7435    </mod>
7436  </ins>
7437
7438  <ins name="+NOP" mask="0xfffff" exact="0x3d964" dests="0"/>
7439
7440  <ins name="+QUIET.f32" mask="0xffff8" exact="0x3d970">
7441    <src start="0"/>
7442  </ins>
7443
7444  <ins name="+QUIET.v2f16" mask="0xfffc8" exact="0x3d900">
7445    <src start="0"/>
7446    <mod name="swz0" start="4" size="2" default="h01">
7447      <opt>h00</opt>
7448      <opt>h10</opt>
7449      <opt>h01</opt>
7450      <opt>h11</opt>
7451    </mod>
7452  </ins>
7453
7454  <ins name="+S16_TO_F32" mask="0xfffe8" exact="0x3cce0">
7455    <src start="0"/>
7456    <mod name="lane0" start="4" size="1" default="h0">
7457      <opt>h0</opt>
7458      <opt>h1</opt>
7459    </mod>
7460  </ins>
7461
7462  <ins name="+S16_TO_S32" mask="0xfffe8" exact="0x3ccc0">
7463    <src start="0"/>
7464    <mod name="lane0" start="4" size="1" default="h0">
7465      <opt>h0</opt>
7466      <opt>h1</opt>
7467    </mod>
7468  </ins>
7469
7470  <ins name="+S32_TO_F32">
7471    <src start="0"/>
7472    <mod name="round" size="3">
7473      <opt>none</opt>
7474      <opt>rtp</opt>
7475      <opt>rtn</opt>
7476      <opt>rtz</opt>
7477      <opt>rtna</opt>
7478    </mod>
7479    <encoding mask="0xfffc8" exact="0x3cbc0">
7480      <neq left="round" right="#rtna"/>
7481      <derived start="4" size="2">
7482        <eq left="round" right="#none"/>
7483        <eq left="round" right="#rtp"/>
7484        <eq left="round" right="#rtn"/>
7485        <eq left="round" right="#rtz"/>
7486      </derived>
7487    </encoding>
7488    <encoding mask="0xffff8" exact="0x3cd00">
7489      <eq left="round" right="#rtna"/>
7490    </encoding>
7491  </ins>
7492
7493  <ins name="+S8_TO_F32" mask="0xfffc8" exact="0x3cb80">
7494    <src start="0"/>
7495    <mod name="lane0" start="4" size="2" default="b0">
7496      <opt>b0</opt>
7497      <opt>b1</opt>
7498      <opt>b2</opt>
7499      <opt>b3</opt>
7500    </mod>
7501  </ins>
7502
7503  <ins name="+S8_TO_S32" mask="0xfffc8" exact="0x3cb40">
7504    <src start="0"/>
7505    <mod name="lane0" start="4" size="2" default="b0">
7506      <opt>b0</opt>
7507      <opt>b1</opt>
7508      <opt>b2</opt>
7509      <opt>b3</opt>
7510    </mod>
7511  </ins>
7512
7513  <ins name="+SEG_ADD" mask="0xfff40" exact="0x3d500">
7514    <src start="0"/>
7515    <mod name="seg" start="3" size="3">
7516      <reserved/>
7517      <reserved/>
7518      <opt>wls</opt>
7519      <reserved/>
7520      <reserved/>
7521      <reserved/>
7522      <reserved/>
7523      <opt>tl</opt>
7524    </mod>
7525    <mod name="preserve_null" start="7" size="1" opt="preserve_null"/>
7526  </ins>
7527
7528  <ins name="+SEG_SUB" mask="0xfff40" exact="0x3d540" unused="true">
7529    <src start="0"/>
7530    <mod name="seg" start="3" size="3">
7531      <reserved/>
7532      <reserved/>
7533      <opt>wls</opt>
7534      <reserved/>
7535      <reserved/>
7536      <reserved/>
7537      <reserved/>
7538      <opt>tl</opt>
7539    </mod>
7540    <mod name="preserve_null" start="7" size="1" opt="preserve_null"/>
7541  </ins>
7542
7543  <ins name="+SHADDXH.i32" mask="0xfffc0" exact="0x3f8c0">
7544    <src start="0"/>
7545    <src start="3"/>
7546  </ins>
7547
7548  <ins name="+SHIFT_DOUBLE.i32" mask="0xffe00" exact="0xefe00">
7549    <src start="0"/>
7550    <src start="3"/>
7551    <src start="6"/>
7552  </ins>
7553
7554  <ins name="+STORE.i128" staging="r=4" mask="0xffe00" exact="0x61200" message="store" dests="0">
7555    <src start="0"/>
7556    <src start="3"/>
7557    <mod name="seg" start="6" size="3">
7558      <reserved/>
7559      <opt>none</opt>
7560      <opt>wls</opt>
7561      <opt>stream</opt>
7562      <opt pseudo="true">pos</opt>
7563      <opt pseudo="true">vary</opt>
7564      <reserved/>
7565      <opt>tl</opt>
7566    </mod>
7567    <immediate name="byte_offset" size="16" pseudo="true"/>
7568  </ins>
7569
7570  <ins name="+STORE.i16" staging="r=1" mask="0xffe00" exact="0x62800" message="store" dests="0">
7571    <src start="0"/>
7572    <src start="3"/>
7573    <mod name="seg" start="6" size="3">
7574      <reserved/>
7575      <opt>none</opt>
7576      <opt>wls</opt>
7577      <opt>stream</opt>
7578      <opt pseudo="true">pos</opt>
7579      <opt pseudo="true">vary</opt>
7580      <reserved/>
7581      <opt>tl</opt>
7582    </mod>
7583    <immediate name="byte_offset" size="16" pseudo="true"/>
7584  </ins>
7585
7586  <ins name="+STORE.i24" staging="r=1" mask="0xffe00" exact="0x65800" message="store" dests="0">
7587    <src start="0"/>
7588    <src start="3"/>
7589    <mod name="seg" start="6" size="3">
7590      <reserved/>
7591      <opt>none</opt>
7592      <opt>wls</opt>
7593      <opt>stream</opt>
7594      <opt pseudo="true">pos</opt>
7595      <opt pseudo="true">vary</opt>
7596      <reserved/>
7597      <opt>tl</opt>
7598    </mod>
7599    <immediate name="byte_offset" size="16" pseudo="true"/>
7600  </ins>
7601
7602  <ins name="+STORE.i32" staging="r=1" mask="0xffe00" exact="0x62c00" message="store" dests="0">
7603    <src start="0"/>
7604    <src start="3"/>
7605    <mod name="seg" start="6" size="3">
7606      <reserved/>
7607      <opt>none</opt>
7608      <opt>wls</opt>
7609      <opt>stream</opt>
7610      <opt pseudo="true">pos</opt>
7611      <opt pseudo="true">vary</opt>
7612      <reserved/>
7613      <opt>tl</opt>
7614    </mod>
7615    <immediate name="byte_offset" size="16" pseudo="true"/>
7616  </ins>
7617
7618  <ins name="+STORE.i48" staging="r=2" mask="0xffe00" exact="0x65a00" message="store" dests="0">
7619    <src start="0"/>
7620    <src start="3"/>
7621    <mod name="seg" start="6" size="3">
7622      <reserved/>
7623      <opt>none</opt>
7624      <opt>wls</opt>
7625      <opt>stream</opt>
7626      <opt pseudo="true">pos</opt>
7627      <opt pseudo="true">vary</opt>
7628      <reserved/>
7629      <opt>tl</opt>
7630    </mod>
7631    <immediate name="byte_offset" size="16" pseudo="true"/>
7632  </ins>
7633
7634  <ins name="+STORE.i64" staging="r=2" mask="0xffe00" exact="0x62e00" message="store" dests="0">
7635    <src start="0"/>
7636    <src start="3"/>
7637    <mod name="seg" start="6" size="3">
7638      <reserved/>
7639      <opt>none</opt>
7640      <opt>wls</opt>
7641      <opt>stream</opt>
7642      <opt pseudo="true">pos</opt>
7643      <opt pseudo="true">vary</opt>
7644      <reserved/>
7645      <opt>tl</opt>
7646    </mod>
7647    <immediate name="byte_offset" size="16" pseudo="true"/>
7648  </ins>
7649
7650  <ins name="+STORE.i8" staging="r=1" mask="0xffe00" exact="0x62000" message="store" dests="0">
7651    <src start="0"/>
7652    <src start="3"/>
7653    <mod name="seg" start="6" size="3">
7654      <reserved/>
7655      <opt>none</opt>
7656      <opt>wls</opt>
7657      <opt>stream</opt>
7658      <opt pseudo="true">pos</opt>
7659      <opt pseudo="true">vary</opt>
7660      <reserved/>
7661      <opt>tl</opt>
7662    </mod>
7663    <immediate name="byte_offset" size="16" pseudo="true"/>
7664  </ins>
7665
7666  <ins name="+STORE.i96" staging="r=3" mask="0xffe00" exact="0x65c00" message="store" dests="0">
7667    <src start="0"/>
7668    <src start="3"/>
7669    <mod name="seg" start="6" size="3">
7670      <reserved/>
7671      <opt>none</opt>
7672      <opt>wls</opt>
7673      <opt>stream</opt>
7674      <opt pseudo="true">pos</opt>
7675      <opt pseudo="true">vary</opt>
7676      <reserved/>
7677      <opt>tl</opt>
7678    </mod>
7679    <immediate name="byte_offset" size="16" pseudo="true"/>
7680  </ins>
7681
7682  <ins name="+ST_CVT" staging="r=format" mask="0xff800" exact="0xc9800" message="store" dests="0">
7683    <src start="0"/>
7684    <src start="3"/>
7685    <src start="6" mask="0xf7"/>
7686    <mod name="register_format" size="4" pseudo="true">
7687      <opt>f16</opt>
7688      <opt>f32</opt>
7689      <opt>s32</opt>
7690      <opt>u32</opt>
7691      <opt>s16</opt>
7692      <opt>u16</opt>
7693      <opt>f64</opt>
7694      <opt>i64</opt>
7695    </mod>
7696    <mod name="vecsize" start="9" size="2">
7697      <opt>none</opt>
7698      <opt>v2</opt>
7699      <opt>v3</opt>
7700      <opt>v4</opt>
7701    </mod>
7702  </ins>
7703
7704  <ins name="+ST_TILE" staging="r=format" mask="0xff800" exact="0xcb800" message="tile" dests="0">
7705    <src start="0"/>
7706    <src start="3"/>
7707    <src start="6" mask="0xf7"/>
7708    <mod name="vecsize" start="9" size="2">
7709      <opt>none</opt>
7710      <opt>v2</opt>
7711      <opt>v3</opt>
7712      <opt>v4</opt>
7713    </mod>
7714    <mod name="register_format" size="3" pseudo="true">
7715      <opt>f32</opt>
7716      <opt>f16</opt>
7717      <opt>u32</opt>
7718      <opt>s32</opt>
7719    </mod>
7720  </ins>
7721
7722  <ins name="+SWZ.v2i16" mask="0xfffc8" exact="0x3d948">
7723    <src start="0"/>
7724    <mod name="swz0" start="4" size="2">
7725      <opt>h00</opt>
7726      <opt>h10</opt>
7727      <reserved/>
7728      <opt>h11</opt>
7729    </mod>
7730  </ins>
7731
7732  <ins name="+SWZ.v4i8" mask="0xfffc0" exact="0x3df40">
7733    <src start="0"/>
7734    <mod name="swz0" start="3" size="3">
7735      <opt>b0000</opt>
7736      <opt>b1111</opt>
7737      <opt>b2222</opt>
7738      <opt>b3333</opt>
7739      <opt>b0011</opt>
7740      <opt>b2233</opt>
7741      <opt>b1032</opt>
7742      <opt>b3210</opt>
7743    </mod>
7744  </ins>
7745
7746  <ins name="+TEXC" staging="rw=sr_count" mask="0xffc00" exact="0xd7000" message="tex" dests="2">
7747    <src start="0"/>
7748    <src start="3"/>
7749    <src start="6" mask="0xf7"/>
7750    <mod name="skip" start="9" size="1" opt="skip"/>
7751    <!-- not actually encoded, but used for IR -->
7752    <immediate name="sr_count" size="4" pseudo="true"/>
7753    <immediate name="sr_count_2" size="4" pseudo="true"/>
7754    <mod name="lod_mode" start="13" size="1" default="zero_lod" pseudo="true">
7755      <opt>computed_lod</opt>
7756      <opt>zero_lod</opt>
7757    </mod>
7758  </ins>
7759
7760  <ins name="+TEXS_2D.f16" staging="w=2" mask="0xfc000" exact="0xd8000" message="tex">
7761    <src start="0"/>
7762    <src start="3"/>
7763    <immediate name="texture_index" start="6" size="3"/>
7764    <immediate name="sampler_index" start="10" size="3"/>
7765    <mod name="skip" start="9" size="1" opt="skip"/>
7766    <mod name="lod_mode" start="13" size="1" default="zero_lod">
7767      <opt>computed_lod</opt>
7768      <opt>zero_lod</opt>
7769    </mod>
7770  </ins>
7771
7772  <ins name="+TEXS_2D.f32" staging="w=4" mask="0xfc000" exact="0x58000" message="tex">
7773    <src start="0"/>
7774    <src start="3"/>
7775    <immediate name="texture_index" start="6" size="3"/>
7776    <immediate name="sampler_index" start="10" size="3"/>
7777    <mod name="skip" start="9" size="1" opt="skip"/>
7778    <mod name="lod_mode" start="13" size="1" default="zero_lod">
7779      <opt>computed_lod</opt>
7780      <opt>zero_lod</opt>
7781    </mod>
7782  </ins>
7783
7784  <ins name="+TEXS_CUBE.f16" staging="w=2" mask="0xfc000" exact="0xdc000" message="tex">
7785    <src start="0"/>
7786    <src start="3"/>
7787    <src start="6"/>
7788    <immediate name="sampler_index" start="10" size="2"/>
7789    <immediate name="texture_index" start="12" size="2"/>
7790    <mod name="skip" start="9" size="1" opt="skip"/>
7791  </ins>
7792
7793  <ins name="+TEXS_CUBE.f32" staging="w=4" mask="0xfc000" exact="0x5c000" message="tex">
7794    <src start="0"/>
7795    <src start="3"/>
7796    <src start="6"/>
7797    <immediate name="sampler_index" start="10" size="2"/>
7798    <immediate name="texture_index" start="12" size="2"/>
7799    <mod name="skip" start="9" size="1" opt="skip"/>
7800  </ins>
7801
7802  <ins name="+U16_TO_F32" mask="0xfffe8" exact="0x3cce8">
7803    <src start="0"/>
7804    <mod name="lane0" start="4" size="1" default="h0">
7805      <opt>h0</opt>
7806      <opt>h1</opt>
7807    </mod>
7808  </ins>
7809
7810  <ins name="+U16_TO_U32" mask="0xfffe8" exact="0x3ccc8">
7811    <src start="0"/>
7812    <mod name="lane0" start="4" size="1" default="h0">
7813      <opt>h0</opt>
7814      <opt>h1</opt>
7815    </mod>
7816  </ins>
7817
7818  <ins name="+U32_TO_F32">
7819    <src start="0"/>
7820    <mod name="round" size="3">
7821      <opt>none</opt>
7822      <opt>rtp</opt>
7823      <opt>rtn</opt>
7824      <opt>rtz</opt>
7825      <opt>rtna</opt>
7826    </mod>
7827    <encoding mask="0xfffc8" exact="0x3cbc8">
7828      <neq left="round" right="#rtna"/>
7829      <derived start="4" size="2">
7830        <eq left="round" right="#none"/>
7831        <eq left="round" right="#rtp"/>
7832        <eq left="round" right="#rtn"/>
7833        <eq left="round" right="#rtz"/>
7834      </derived>
7835    </encoding>
7836    <encoding mask="0xffff8" exact="0x3cd08">
7837      <eq left="round" right="#rtna"/>
7838    </encoding>
7839  </ins>
7840
7841  <ins name="+U8_TO_F32" mask="0xfffc8" exact="0x3cb88">
7842    <src start="0"/>
7843    <mod name="lane0" start="4" size="2" default="b0">
7844      <opt>b0</opt>
7845      <opt>b1</opt>
7846      <opt>b2</opt>
7847      <opt>b3</opt>
7848    </mod>
7849  </ins>
7850
7851  <ins name="+U8_TO_U32" mask="0xfffc8" exact="0x3cb48">
7852    <src start="0"/>
7853    <mod name="lane0" start="4" size="2" default="b0">
7854      <opt>b0</opt>
7855      <opt>b1</opt>
7856      <opt>b2</opt>
7857      <opt>b3</opt>
7858    </mod>
7859  </ins>
7860
7861  <ins name="+V2F16_TO_V2S16">
7862    <src start="0"/>
7863    <mod name="round" size="3">
7864      <opt>none</opt>
7865      <opt>rtp</opt>
7866      <opt>rtn</opt>
7867      <opt>rtz</opt>
7868      <opt>rtna</opt>
7869    </mod>
7870    <mod name="swz0" size="2" default="h01">
7871      <opt>h00</opt>
7872      <opt>h10</opt>
7873      <opt>h01</opt>
7874      <opt>h11</opt>
7875    </mod>
7876    <encoding mask="0xfff08" exact="0x3c200">
7877      <neq left="round" right="#rtna"/>
7878      <copy name="swz0" start="6"/>
7879      <derived start="4" size="2">
7880        <eq left="round" right="#none"/>
7881        <eq left="round" right="#rtp"/>
7882        <eq left="round" right="#rtn"/>
7883        <eq left="round" right="#rtz"/>
7884      </derived>
7885    </encoding>
7886    <encoding mask="0xfffc8" exact="0x3ca80">
7887      <eq left="round" right="#rtna"/>
7888      <copy name="swz0" start="4"/>
7889    </encoding>
7890  </ins>
7891
7892  <ins name="+V2F16_TO_V2U16">
7893    <src start="0"/>
7894    <mod name="round" size="3">
7895      <opt>none</opt>
7896      <opt>rtp</opt>
7897      <opt>rtn</opt>
7898      <opt>rtz</opt>
7899      <opt>rtna</opt>
7900    </mod>
7901    <mod name="swz0" size="2" default="h01">
7902      <opt>h00</opt>
7903      <opt>h10</opt>
7904      <opt>h01</opt>
7905      <opt>h11</opt>
7906    </mod>
7907    <encoding mask="0xfff08" exact="0x3c208">
7908      <neq left="round" right="#rtna"/>
7909      <copy name="swz0" start="6"/>
7910      <derived start="4" size="2">
7911        <eq left="round" right="#none"/>
7912        <eq left="round" right="#rtp"/>
7913        <eq left="round" right="#rtn"/>
7914        <eq left="round" right="#rtz"/>
7915      </derived>
7916    </encoding>
7917    <encoding mask="0xfffc8" exact="0x3ca88">
7918      <eq left="round" right="#rtna"/>
7919      <copy name="swz0" start="4"/>
7920    </encoding>
7921  </ins>
7922
7923  <ins name="+V2F32_TO_V2F16" mask="0xfe000" exact="0x76000">
7924    <src start="0"/>
7925    <src start="3"/>
7926    <mod name="abs0" size="1" opt="abs"/>
7927    <mod name="abs1" size="1" opt="abs"/>
7928    <mod name="neg0" size="1" opt="neg"/>
7929    <mod name="neg1" size="1" opt="neg"/>
7930    <mod name="clamp" start="8" size="2">
7931      <opt>none</opt>
7932      <opt>clamp_0_inf</opt>
7933      <opt>clamp_m1_1</opt>
7934      <opt>clamp_0_1</opt>
7935    </mod>
7936    <mod name="round" start="10" size="3">
7937      <opt>none</opt>
7938      <opt>rtp</opt>
7939      <opt>rtn</opt>
7940      <opt>rtz</opt>
7941      <opt>rtna</opt>
7942    </mod>
7943    <mod name="ftz" start="9" size="1" opt="ftz" pseudo="true"/>
7944    <derived start="6" size="1">
7945      <and>
7946        <eq left="abs0" right="#none"/>
7947        <eq left="abs1" right="#none"/>
7948      </and>
7949      <and>
7950        <eq left="abs0" right="#abs"/>
7951        <eq left="abs1" right="#abs"/>
7952      </and>
7953    </derived>
7954    <derived start="7" size="1">
7955      <and>
7956        <eq left="neg0" right="#none"/>
7957        <eq left="neg1" right="#none"/>
7958      </and>
7959      <and>
7960        <eq left="neg0" right="#neg"/>
7961        <eq left="neg1" right="#neg"/>
7962      </and>
7963    </derived>
7964  </ins>
7965
7966  <ins name="+V2S16_TO_V2F16">
7967    <src start="0"/>
7968    <mod name="round" size="3">
7969      <opt>none</opt>
7970      <opt>rtp</opt>
7971      <opt>rtn</opt>
7972      <opt>rtz</opt>
7973      <opt>rtna</opt>
7974    </mod>
7975    <mod name="swz0" size="2" default="h01">
7976      <opt>h00</opt>
7977      <opt>h10</opt>
7978      <opt>h01</opt>
7979      <opt>h11</opt>
7980    </mod>
7981    <encoding mask="0xfff08" exact="0x3c600">
7982      <neq left="round" right="#rtna"/>
7983      <copy name="swz0" start="6"/>
7984      <derived start="4" size="2">
7985        <eq left="round" right="#none"/>
7986        <eq left="round" right="#rtp"/>
7987        <eq left="round" right="#rtn"/>
7988        <eq left="round" right="#rtz"/>
7989      </derived>
7990    </encoding>
7991    <encoding mask="0xfffc8" exact="0x3cb00">
7992      <eq left="round" right="#rtna"/>
7993      <copy name="swz0" start="4"/>
7994    </encoding>
7995  </ins>
7996
7997  <ins name="+V2S8_TO_V2F16" mask="0xfff08" exact="0x3c800">
7998    <src start="0"/>
7999    <mod name="swz0" start="4" size="4" default="b01">
8000      <opt>b00</opt>
8001      <opt>b10</opt>
8002      <opt>b20</opt>
8003      <opt>b30</opt>
8004      <opt>b01</opt>
8005      <opt>b11</opt>
8006      <opt>b21</opt>
8007      <opt>b31</opt>
8008      <opt>b02</opt>
8009      <opt>b12</opt>
8010      <opt>b22</opt>
8011      <opt>b32</opt>
8012      <opt>b03</opt>
8013      <opt>b13</opt>
8014      <opt>b23</opt>
8015      <opt>b33</opt>
8016    </mod>
8017  </ins>
8018
8019  <ins name="+V2S8_TO_V2S16" mask="0xfff08" exact="0x3c700">
8020    <src start="0"/>
8021    <mod name="swz0" start="4" size="4" default="b01">
8022      <opt>b00</opt>
8023      <opt>b10</opt>
8024      <opt>b20</opt>
8025      <opt>b30</opt>
8026      <opt>b01</opt>
8027      <opt>b11</opt>
8028      <opt>b21</opt>
8029      <opt>b31</opt>
8030      <opt>b02</opt>
8031      <opt>b12</opt>
8032      <opt>b22</opt>
8033      <opt>b32</opt>
8034      <opt>b03</opt>
8035      <opt>b13</opt>
8036      <opt>b23</opt>
8037      <opt>b33</opt>
8038    </mod>
8039  </ins>
8040
8041  <ins name="+V2U16_TO_V2F16">
8042    <src start="0"/>
8043    <mod name="round" size="3">
8044      <opt>none</opt>
8045      <opt>rtp</opt>
8046      <opt>rtn</opt>
8047      <opt>rtz</opt>
8048      <opt>rtna</opt>
8049    </mod>
8050    <mod name="swz0" size="2" default="h01">
8051      <opt>h00</opt>
8052      <opt>h10</opt>
8053      <opt>h01</opt>
8054      <opt>h11</opt>
8055    </mod>
8056    <encoding mask="0xfff08" exact="0x3c608">
8057      <neq left="round" right="#rtna"/>
8058      <copy name="swz0" start="6"/>
8059      <derived start="4" size="2">
8060        <eq left="round" right="#none"/>
8061        <eq left="round" right="#rtp"/>
8062        <eq left="round" right="#rtn"/>
8063        <eq left="round" right="#rtz"/>
8064      </derived>
8065    </encoding>
8066    <encoding mask="0xfffc8" exact="0x3cb08">
8067      <eq left="round" right="#rtna"/>
8068      <copy name="swz0" start="4"/>
8069    </encoding>
8070  </ins>
8071
8072  <ins name="+V2U8_TO_V2F16" mask="0xfff08" exact="0x3c808">
8073    <src start="0"/>
8074    <mod name="swz0" start="4" size="4" default="b01">
8075      <opt>b00</opt>
8076      <opt>b10</opt>
8077      <opt>b20</opt>
8078      <opt>b30</opt>
8079      <opt>b01</opt>
8080      <opt>b11</opt>
8081      <opt>b21</opt>
8082      <opt>b31</opt>
8083      <opt>b02</opt>
8084      <opt>b12</opt>
8085      <opt>b22</opt>
8086      <opt>b32</opt>
8087      <opt>b03</opt>
8088      <opt>b13</opt>
8089      <opt>b23</opt>
8090      <opt>b33</opt>
8091    </mod>
8092  </ins>
8093
8094  <ins name="+V2U8_TO_V2U16" mask="0xfff08" exact="0x3c708">
8095    <src start="0"/>
8096    <mod name="swz0" start="4" size="4" default="b01">
8097      <opt>b00</opt>
8098      <opt>b10</opt>
8099      <opt>b20</opt>
8100      <opt>b30</opt>
8101      <opt>b01</opt>
8102      <opt>b11</opt>
8103      <opt>b21</opt>
8104      <opt>b31</opt>
8105      <opt>b02</opt>
8106      <opt>b12</opt>
8107      <opt>b22</opt>
8108      <opt>b32</opt>
8109      <opt>b03</opt>
8110      <opt>b13</opt>
8111      <opt>b23</opt>
8112      <opt>b33</opt>
8113    </mod>
8114  </ins>
8115
8116  <ins name="+VAR_TEX.f16" staging="w=2" mask="0xffd00" exact="0xca100" message="vartex">
8117    <immediate name="varying_index" start="0" size="3"/>
8118    <immediate name="texture_index" start="3" size="2"/>
8119    <mod name="update" size="1">
8120      <opt>store</opt>
8121      <opt>retrieve</opt>
8122    </mod>
8123    <mod name="skip" start="7" size="1" opt="skip"/>
8124    <mod name="lod_mode" start="9" size="1" default="zero_lod">
8125      <opt>computed_lod</opt>
8126      <opt>zero_lod</opt>
8127    </mod>
8128    <mod name="sample" size="1">
8129      <opt>center</opt>
8130      <opt>none</opt>
8131    </mod>
8132    <derived start="5" size="2">
8133      <and>
8134        <eq left="sample" right="#center"/>
8135        <eq left="update" right="#store"/>
8136      </and>
8137      <and>
8138        <eq left="sample" right="#none"/>
8139        <eq left="update" right="#retrieve"/>
8140      </and>
8141      <reserved/>
8142      <reserved/>
8143    </derived>
8144  </ins>
8145
8146  <ins name="+VAR_TEX.f32" staging="w=4" mask="0xffd00" exact="0xca000" message="vartex">
8147    <immediate name="varying_index" start="0" size="3"/>
8148    <immediate name="texture_index" start="3" size="2"/>
8149    <mod name="update" size="1">
8150      <opt>store</opt>
8151      <opt>retrieve</opt>
8152    </mod>
8153    <mod name="skip" start="7" size="1" opt="skip"/>
8154    <mod name="lod_mode" start="9" size="1" default="zero_lod">
8155      <opt>computed_lod</opt>
8156      <opt>zero_lod</opt>
8157    </mod>
8158    <mod name="sample" size="1">
8159      <opt>center</opt>
8160      <opt>none</opt>
8161    </mod>
8162    <derived start="5" size="2">
8163      <and>
8164        <eq left="sample" right="#center"/>
8165        <eq left="update" right="#store"/>
8166      </and>
8167      <and>
8168        <eq left="sample" right="#none"/>
8169        <eq left="update" right="#retrieve"/>
8170      </and>
8171      <reserved/>
8172      <reserved/>
8173    </derived>
8174  </ins>
8175
8176  <ins name="+VN_ASST2.f32">
8177    <src start="0"/>
8178    <mod name="scale" size="1" opt="scale"/>
8179    <mod name="neg0" size="1" opt="neg"/>
8180    <encoding mask="0xffff0" exact="0x3df80">
8181      <eq left="scale" right="#none"/>
8182      <copy name="neg0" start="3"/>
8183    </encoding>
8184    <encoding mask="0xfffe8" exact="0x3de80">
8185      <eq left="scale" right="#scale"/>
8186      <copy name="neg0" start="4"/>
8187    </encoding>
8188  </ins>
8189
8190  <ins name="+VN_ASST2.v2f16" mask="0xffff0" exact="0x3dfa0">
8191    <src start="0"/>
8192    <mod name="neg0" start="3" size="1" opt="neg"/>
8193  </ins>
8194
8195  <ins name="+WMASK" mask="0xfffc0" exact="0x3d700">
8196    <src start="0"/>
8197    <immediate name="fill" start="3" size="1"/>
8198    <mod name="subgroup" start="4" size="2">
8199      <opt>subgroup2</opt>
8200      <opt>subgroup4</opt>
8201      <opt>subgroup8</opt>
8202    </mod>
8203  </ins>
8204
8205  <ins name="+ZS_EMIT" staging="w=1" mask="0xff800" exact="0xd7800" message="z_stencil">
8206    <src start="0"/>
8207    <src start="3"/>
8208    <src start="6"/>
8209    <mod name="stencil" size="1" opt="stencil"/>
8210    <mod name="z" size="1" opt="z"/>
8211    <derived start="9" size="2">
8212      <reserved/>
8213      <and>
8214        <eq left="stencil" right="#stencil"/>
8215        <eq left="z" right="#none"/>
8216      </and>
8217      <and>
8218        <eq left="stencil" right="#none"/>
8219        <eq left="z" right="#z"/>
8220      </and>
8221      <and>
8222        <eq left="stencil" right="#stencil"/>
8223        <eq left="z" right="#z"/>
8224      </and>
8225    </derived>
8226  </ins>
8227
8228  <!--- Lowered to *SEG_ADD/+SEG_ADD -->
8229  <ins name="+SEG_ADD.i64" pseudo="true">
8230    <src start="0"/>
8231    <src start="3"/>
8232    <mod name="seg" size="3">
8233      <reserved/>
8234      <reserved/>
8235      <opt>wls</opt>
8236      <reserved/>
8237      <reserved/>
8238      <reserved/>
8239      <reserved/>
8240      <opt>tl</opt>
8241    </mod>
8242    <mod name="preserve_null" size="1" opt="preserve_null"/>
8243  </ins>
8244
8245  <!-- Scheduler lowered to *ATOM_C.i32/+ATOM_CX. Real Valhall instructions. -->
8246  <ins name="+ATOM_RETURN.i32" pseudo="true" staging="rw=sr_count" message="atomic">
8247    <src start="0"/>
8248    <src start="3"/>
8249    <mod name="atom_opc" start="9" size="5">
8250      <reserved/>
8251      <reserved/>
8252      <opt>aadd</opt>
8253      <reserved/>
8254      <reserved/>
8255      <reserved/>
8256      <reserved/>
8257      <reserved/>
8258      <opt>asmin</opt>
8259      <opt>asmax</opt>
8260      <opt>aumin</opt>
8261      <opt>aumax</opt>
8262      <opt>aand</opt>
8263      <opt>aor</opt>
8264      <opt>axor</opt>
8265      <opt>axchg</opt> <!-- For Valhall -->
8266      <opt>acmpxchg</opt> <!-- For Valhall -->
8267    </mod>
8268    <!-- not actually encoded, but used for IR -->
8269    <immediate name="sr_count" size="4" pseudo="true"/>
8270  </ins>
8271
8272  <ins name="+ATOM1_RETURN.i32" pseudo="true" staging="w=sr_count" message="atomic">
8273    <src start="0"/>
8274    <src start="3"/>
8275    <mod name="atom_opc" start="6" size="3">
8276      <opt>ainc</opt>
8277      <opt>adec</opt>
8278      <opt>aumax1</opt>
8279      <opt>asmax1</opt>
8280      <opt>aor1</opt>
8281    </mod>
8282    <!-- not actually encoded, but used for IR -->
8283    <immediate name="sr_count" size="4" pseudo="true"/>
8284  </ins>
8285
8286  <ins name="+ATOM.i32" pseudo="true" staging="r=sr_count" message="atomic">
8287    <src start="0"/>
8288    <src start="3"/>
8289    <mod name="atom_opc" start="9" size="4">
8290      <reserved/>
8291      <reserved/>
8292      <opt>aadd</opt>
8293      <reserved/>
8294      <reserved/>
8295      <reserved/>
8296      <reserved/>
8297      <reserved/>
8298      <opt>asmin</opt>
8299      <opt>asmax</opt>
8300      <opt>aumin</opt>
8301      <opt>aumax</opt>
8302      <opt>aand</opt>
8303      <opt>aor</opt>
8304      <opt>axor</opt>
8305    </mod>
8306    <!-- not actually encoded, but used for IR -->
8307    <immediate name="sr_count" size="4" pseudo="true"/>
8308  </ins>
8309
8310  <!-- *CUBEFACE1/+CUBEFACE2 pair, two destinations, scheduler lowered -->
8311  <ins name="+CUBEFACE" pseudo="true" dests="2">
8312    <src start="0"/>
8313    <src start="3"/>
8314    <src start="6"/>
8315    <mod name="neg0" size="1" opt="neg"/>
8316    <mod name="neg1" size="1" opt="neg"/>
8317    <mod name="neg2" size="1" opt="neg"/>
8318  </ins>
8319
8320  <ins name="+IADD_IMM.i32" pseudo="true">
8321    <src start="0"/>
8322    <immediate name="index" size="32"/>
8323  </ins>
8324
8325  <ins name="+IADD_IMM.v2i16" pseudo="true">
8326    <src start="0"/>
8327    <immediate name="index" size="32"/>
8328  </ins>
8329
8330  <ins name="+IADD_IMM.v4i8" pseudo="true">
8331    <src start="0"/>
8332    <immediate name="index" size="32"/>
8333  </ins>
8334
8335  <ins name="+FADD_IMM.f32" pseudo="true">
8336    <src start="0"/>
8337    <immediate name="index" size="32"/>
8338  </ins>
8339
8340  <ins name="+FADD_IMM.v2f16" pseudo="true">
8341    <src start="0"/>
8342    <immediate name="index" size="32"/>
8343  </ins>
8344
8345  <ins name="*FABSNEG.f32" pseudo="true">
8346    <src start="0" mask="0xfb"/>
8347    <mod name="neg0" start="7" size="1" opt="neg"/>
8348    <mod name="abs0" start="12" size="1" opt="abs"/>
8349    <mod name="widen0" size="2">
8350      <opt>none</opt>
8351      <opt>h0</opt>
8352      <opt>h1</opt>
8353    </mod>
8354  </ins>
8355
8356  <ins name="*FABSNEG.v2f16" pseudo="true">
8357    <src start="0" mask="0xfb"/>
8358    <mod name="abs0" size="1" opt="abs"/>
8359    <mod name="neg0" start="7" size="1" opt="neg"/>
8360    <mod name="swz0" start="9" size="2" default="h01">
8361      <opt>h00</opt>
8362      <opt>h10</opt>
8363      <opt>h01</opt>
8364      <opt>h11</opt>
8365    </mod>
8366  </ins>
8367
8368  <ins name="*FCLAMP.f32" pseudo="true">
8369    <src start="0" mask="0xfb"/>
8370    <mod name="clamp" start="15" size="2">
8371      <opt>none</opt>
8372      <opt>clamp_0_inf</opt>
8373      <opt>clamp_m1_1</opt>
8374      <opt>clamp_0_1</opt>
8375    </mod>
8376  </ins>
8377
8378  <ins name="*FCLAMP.v2f16" pseudo="true">
8379    <src start="0" mask="0xfb"/>
8380    <mod name="clamp" start="15" size="2">
8381      <opt>none</opt>
8382      <opt>clamp_0_inf</opt>
8383      <opt>clamp_m1_1</opt>
8384      <opt>clamp_0_1</opt>
8385    </mod>
8386  </ins>
8387
8388  <ins name="+DISCARD.b32" pseudo="true" dests="0">
8389    <src start="0"/>
8390    <mod name="widen0" size="2">
8391      <opt>none</opt>
8392      <opt>h0</opt>
8393      <opt>h1</opt>
8394    </mod>
8395  </ins>
8396
8397  <ins name="+TEX_SINGLE" staging="rw=sr_count" message="tex" pseudo="true">
8398    <src start="0"/>
8399    <src start="1"/>
8400    <immediate name="sr_count" size="4" pseudo="true"/>
8401    <mod name="texel_offset" start="9" size="1" opt="texel_offset"/>
8402    <mod name="skip" start="9" size="1" opt="skip"/>
8403    <mod name="shadow" start="9" size="1" opt="shadow"/>
8404    <mod name="array_enable" start="9" size="1" opt="array_enable"/>
8405    <mod name="dimension" start="9" size="2">
8406      <opt>1d</opt>
8407      <opt>2d</opt>
8408      <opt>3d</opt>
8409      <opt>cube</opt>
8410    </mod>
8411    <mod name="write_mask" start="9" size="4">
8412      <opt>none</opt>
8413      <opt>r</opt>
8414      <opt>g</opt>
8415      <opt>rg</opt>
8416      <opt>b</opt>
8417      <opt>rb</opt>
8418      <opt>gb</opt>
8419      <opt>rgb</opt>
8420      <opt>a</opt>
8421      <opt>ra</opt>
8422      <opt>ga</opt>
8423      <opt>rga</opt>
8424      <opt>ba</opt>
8425      <opt>rba</opt>
8426      <opt>gba</opt>
8427      <opt>rgba</opt>
8428    </mod>
8429    <mod name="va_lod_mode" start="13" size="3" default="zero_lod">
8430      <opt>zero_lod</opt>
8431      <opt>computed_lod</opt>
8432      <opt>explicit</opt>
8433      <opt>computed_bias</opt>
8434      <opt>grdesc</opt>
8435    </mod>
8436    <mod name="register_format" size="4">
8437      <opt>f16</opt>
8438      <opt>f32</opt>
8439      <opt>s32</opt>
8440      <opt>u32</opt>
8441      <opt>s16</opt>
8442      <opt>u16</opt>
8443    </mod>
8444  </ins>
8445
8446  <ins name="+TEX_FETCH" staging="rw=sr_count" message="tex" pseudo="true">
8447    <src start="0"/>
8448    <src start="1"/>
8449    <immediate name="sr_count" size="4" pseudo="true"/>
8450    <mod name="texel_offset" start="9" size="1" opt="texel_offset"/>
8451    <mod name="skip" start="9" size="1" opt="skip"/>
8452    <mod name="array_enable" start="9" size="1" opt="array_enable"/>
8453    <mod name="dimension" start="9" size="2">
8454      <opt>1d</opt>
8455      <opt>2d</opt>
8456      <opt>3d</opt>
8457      <opt>cube</opt>
8458    </mod>
8459    <mod name="write_mask" start="9" size="4">
8460      <opt>none</opt>
8461      <opt>r</opt>
8462      <opt>g</opt>
8463      <opt>rg</opt>
8464      <opt>b</opt>
8465      <opt>rb</opt>
8466      <opt>gb</opt>
8467      <opt>rgb</opt>
8468      <opt>a</opt>
8469      <opt>ra</opt>
8470      <opt>ga</opt>
8471      <opt>rga</opt>
8472      <opt>ba</opt>
8473      <opt>rba</opt>
8474      <opt>gba</opt>
8475      <opt>rgba</opt>
8476    </mod>
8477    <mod name="register_format" size="4">
8478      <opt>f16</opt>
8479      <opt>f32</opt>
8480      <opt>s32</opt>
8481      <opt>u32</opt>
8482      <opt>s16</opt>
8483      <opt>u16</opt>
8484    </mod>
8485  </ins>
8486
8487  <ins name="+TEX_GATHER" staging="rw=sr_count" message="tex" pseudo="true">
8488    <src start="0"/>
8489    <src start="1"/>
8490    <immediate name="sr_count" size="4" pseudo="true"/>
8491    <mod name="texel_offset" start="9" size="1" opt="texel_offset"/>
8492    <mod name="skip" start="9" size="1" opt="skip"/>
8493    <mod name="shadow" start="9" size="1" opt="shadow"/>
8494    <mod name="array_enable" start="9" size="1" opt="array_enable"/>
8495    <mod name="integer_coordinates" start="9" size="1" opt="integer_coordinates"/>
8496    <mod name="fetch_component" start="9" size="2">
8497      <opt>gather4_r</opt>
8498      <opt>gather4_g</opt>
8499      <opt>gather4_b</opt>
8500      <opt>gather4_a</opt>
8501    </mod>
8502    <mod name="dimension" start="9" size="2">
8503      <opt>1d</opt>
8504      <opt>2d</opt>
8505      <opt>3d</opt>
8506      <opt>cube</opt>
8507    </mod>
8508    <mod name="write_mask" start="9" size="4">
8509      <opt>none</opt>
8510      <opt>r</opt>
8511      <opt>g</opt>
8512      <opt>rg</opt>
8513      <opt>b</opt>
8514      <opt>rb</opt>
8515      <opt>gb</opt>
8516      <opt>rgb</opt>
8517      <opt>a</opt>
8518      <opt>ra</opt>
8519      <opt>ga</opt>
8520      <opt>rga</opt>
8521      <opt>ba</opt>
8522      <opt>rba</opt>
8523      <opt>gba</opt>
8524      <opt>rgba</opt>
8525    </mod>
8526    <mod name="register_format" size="4">
8527      <opt>f16</opt>
8528      <opt>f32</opt>
8529      <opt>s32</opt>
8530      <opt>u32</opt>
8531      <opt>s16</opt>
8532      <opt>u16</opt>
8533    </mod>
8534  </ins>
8535
8536  <ins name="+CUBEFACE2_V9" pseudo="true">
8537    <src start="0" mask="0xfb"/>
8538    <src start="3" mask="0xfb"/>
8539    <src start="6"/>
8540    <mod name="neg0" size="1" opt="neg"/>
8541    <mod name="neg1" size="1" opt="neg"/>
8542    <mod name="neg2" size="1" opt="neg"/>
8543  </ins>
8544
8545  <ins name="+LD_VAR_BUF_IMM.f32" staging="w=format" message="varying" pseudo="true">
8546    <src start="0"/>
8547    <immediate name="index" start="3" size="5"/>
8548    <mod name="vecsize" start="8" size="2">
8549      <opt>none</opt>
8550      <opt>v2</opt>
8551      <opt>v3</opt>
8552      <opt>v4</opt>
8553    </mod>
8554    <mod name="update" size="2">
8555      <opt>store</opt>
8556      <opt>retrieve</opt>
8557      <opt>conditional</opt>
8558      <opt>clobber</opt>
8559    </mod>
8560    <mod name="register_format" size="2">
8561      <opt>f32</opt>
8562      <opt>f16</opt>
8563      <opt>u32</opt>
8564      <opt>u16</opt>
8565    </mod>
8566    <mod name="source_format" size="2">
8567      <opt>flat32</opt>
8568      <opt>flat16</opt>
8569      <opt>f32</opt>
8570      <opt>f16</opt>
8571    </mod>
8572    <mod name="sample" size="3">
8573      <opt>center</opt>
8574      <opt>centroid</opt>
8575      <opt>sample</opt>
8576      <opt>explicit</opt>
8577      <opt>none</opt>
8578    </mod>
8579  </ins>
8580
8581  <ins name="+LD_VAR_BUF.f32" staging="w=format" message="varying" pseudo="true">
8582    <src start="0"/>
8583    <src start="1"/>
8584    <mod name="vecsize" start="8" size="2">
8585      <opt>none</opt>
8586      <opt>v2</opt>
8587      <opt>v3</opt>
8588      <opt>v4</opt>
8589    </mod>
8590    <mod name="update" size="2">
8591      <opt>store</opt>
8592      <opt>retrieve</opt>
8593      <opt>conditional</opt>
8594      <opt>clobber</opt>
8595    </mod>
8596    <mod name="register_format" size="2">
8597      <opt>f32</opt>
8598      <opt>f16</opt>
8599      <opt>u32</opt>
8600      <opt>u16</opt>
8601    </mod>
8602    <mod name="source_format" size="2">
8603      <opt>flat32</opt>
8604      <opt>flat16</opt>
8605      <opt>f32</opt>
8606      <opt>f16</opt>
8607    </mod>
8608    <mod name="sample" size="3">
8609      <opt>center</opt>
8610      <opt>centroid</opt>
8611      <opt>sample</opt>
8612      <opt>explicit</opt>
8613      <opt>none</opt>
8614    </mod>
8615  </ins>
8616
8617  <ins name="+LD_VAR_BUF_IMM.f16" staging="w=format" message="varying" pseudo="true">
8618    <src start="0"/>
8619    <immediate name="index" start="3" size="5"/>
8620    <mod name="vecsize" start="8" size="2">
8621      <opt>none</opt>
8622      <opt>v2</opt>
8623      <opt>v3</opt>
8624      <opt>v4</opt>
8625    </mod>
8626    <mod name="update" size="2">
8627      <opt>store</opt>
8628      <opt>retrieve</opt>
8629      <opt>conditional</opt>
8630      <opt>clobber</opt>
8631    </mod>
8632    <mod name="register_format" size="2">
8633      <opt>f32</opt>
8634      <opt>f16</opt>
8635      <opt>u32</opt>
8636      <opt>u16</opt>
8637    </mod>
8638    <mod name="source_format" size="2">
8639      <opt>flat32</opt>
8640      <opt>flat16</opt>
8641      <opt>f32</opt>
8642      <opt>f16</opt>
8643    </mod>
8644    <mod name="sample" size="3">
8645      <opt>center</opt>
8646      <opt>centroid</opt>
8647      <opt>sample</opt>
8648      <opt>explicit</opt>
8649      <opt>none</opt>
8650    </mod>
8651  </ins>
8652
8653  <ins name="+LD_VAR_BUF.f16" staging="w=format" message="varying" pseudo="true">
8654    <src start="0"/>
8655    <src start="1"/>
8656    <mod name="vecsize" start="8" size="2">
8657      <opt>none</opt>
8658      <opt>v2</opt>
8659      <opt>v3</opt>
8660      <opt>v4</opt>
8661    </mod>
8662    <mod name="update" size="2">
8663      <opt>store</opt>
8664      <opt>retrieve</opt>
8665      <opt>conditional</opt>
8666      <opt>clobber</opt>
8667    </mod>
8668    <mod name="register_format" size="2">
8669      <opt>f32</opt>
8670      <opt>f16</opt>
8671      <opt>u32</opt>
8672      <opt>u16</opt>
8673    </mod>
8674    <mod name="source_format" size="2">
8675      <opt>flat32</opt>
8676      <opt>flat16</opt>
8677      <opt>f32</opt>
8678      <opt>f16</opt>
8679    </mod>
8680    <mod name="sample" size="3">
8681      <opt>center</opt>
8682      <opt>centroid</opt>
8683      <opt>sample</opt>
8684      <opt>explicit</opt>
8685      <opt>none</opt>
8686    </mod>
8687  </ins>
8688
8689  <ins name="+LEA_BUF_IMM" staging="w=2" message="attribute" pseudo="true">
8690    <src start="0"/>
8691  </ins>
8692
8693  <ins name="+LD_BUFFER.i128" staging="w=4" pseudo="true" message="load">
8694    <src start="0"/>
8695    <src start="3"/>
8696  </ins>
8697
8698  <ins name="+LD_BUFFER.i16" staging="w=1" pseudo="true" message="load">
8699    <src start="0"/>
8700    <src start="3"/>
8701    <mod name="lane_dest" size="2" default="h0">
8702      <opt>h0</opt>
8703      <opt>h1</opt>
8704      <opt>w0</opt>
8705      <opt>d0</opt>
8706    </mod>
8707    <mod name="extend" size="2">
8708      <opt>none</opt>
8709      <opt>sext</opt>
8710      <opt>zext</opt>
8711    </mod>
8712  </ins>
8713
8714  <ins name="+LD_BUFFER.i24" staging="w=1" pseudo="true" message="load">
8715    <src start="0"/>
8716    <src start="3"/>
8717  </ins>
8718
8719  <ins name="+LD_BUFFER.i32" staging="w=1" pseudo="true" message="load">
8720    <src start="0"/>
8721    <src start="3"/>
8722    <mod name="lane_dest" size="1" opt="d0"/>
8723    <mod name="extend" size="2">
8724      <opt>none</opt>
8725      <opt>sext</opt>
8726      <opt>zext</opt>
8727    </mod>
8728  </ins>
8729
8730  <ins name="+LD_BUFFER.i48" staging="w=2" pseudo="true" message="load">
8731    <src start="0"/>
8732    <src start="3"/>
8733  </ins>
8734
8735  <ins name="+LD_BUFFER.i64" staging="w=2" pseudo="true" message="load">
8736    <src start="0"/>
8737    <src start="3"/>
8738  </ins>
8739
8740  <ins name="+LD_BUFFER.i8" staging="w=1" pseudo="true" message="load">
8741    <src start="0"/>
8742    <src start="3"/>
8743    <mod name="lane_dest" size="3" default="b0">
8744      <opt>b0</opt>
8745      <opt>b1</opt>
8746      <opt>b2</opt>
8747      <opt>b3</opt>
8748      <opt>h0</opt>
8749      <opt>h1</opt>
8750      <opt>w0</opt>
8751      <opt>d0</opt>
8752    </mod>
8753    <mod name="extend" size="2">
8754      <opt>none</opt>
8755      <opt>sext</opt>
8756      <opt>zext</opt>
8757    </mod>
8758  </ins>
8759
8760  <ins name="+LD_BUFFER.i96" staging="w=3" pseudo="true" message="load">
8761    <src start="0"/>
8762    <src start="3"/>
8763  </ins>
8764
8765  <ins name="+BRANCHZI" pseudo="true" last="true" dests="0">
8766    <src start="0"/>
8767    <src start="6" mask="0xf7"/>
8768    <mod name="cmpf" size="1">
8769      <opt>eq</opt>
8770      <opt>ne</opt>
8771    </mod>
8772  </ins>
8773
8774  <ins name="+LD_TEX" pseudo="true" staging="w=format" message="attribute">
8775    <src start="0"/>
8776    <src start="3"/>
8777    <src start="6"/>
8778    <mod name="register_format" size="4">
8779      <opt>f16</opt>
8780      <opt>f32</opt>
8781      <opt>s32</opt>
8782      <opt>u32</opt>
8783      <opt>s16</opt>
8784      <opt>u16</opt>
8785      <opt>f64</opt>
8786      <opt>i64</opt>
8787      <opt>auto</opt>
8788    </mod>
8789    <mod name="vecsize" start="11" size="2">
8790      <opt>none</opt>
8791      <opt>v2</opt>
8792      <opt>v3</opt>
8793      <opt>v4</opt>
8794    </mod>
8795  </ins>
8796
8797  <ins name="+LD_TEX_IMM" pseudo="true" staging="w=format" message="attribute">
8798    <src start="0"/>
8799    <src start="3"/>
8800    <immediate name="texture_index" start="6" size="4"/>
8801    <mod name="register_format" size="4">
8802      <opt>f16</opt>
8803      <opt>f32</opt>
8804      <opt>s32</opt>
8805      <opt>u32</opt>
8806      <opt>s16</opt>
8807      <opt>u16</opt>
8808      <opt>f64</opt>
8809      <opt>i64</opt>
8810      <opt>auto</opt>
8811    </mod>
8812    <mod name="vecsize" start="11" size="2">
8813      <opt>none</opt>
8814      <opt>v2</opt>
8815      <opt>v3</opt>
8816      <opt>v4</opt>
8817    </mod>
8818  </ins>
8819
8820  <ins name="*MKVEC.v2i8" pseudo="true">
8821    <src start="0"/>
8822    <src start="3"/>
8823    <src start="6"/>
8824    <mod name="lane0" start="12" size="2" default="b0">
8825      <opt>b0</opt>
8826      <opt>b1</opt>
8827      <opt>b2</opt>
8828      <opt>b3</opt>
8829    </mod>
8830    <mod name="lane1" start="13" size="2" default="b0">
8831      <opt>b0</opt>
8832      <opt>b1</opt>
8833      <opt>b2</opt>
8834      <opt>b3</opt>
8835    </mod>
8836  </ins>
8837
8838  <ins name="+COLLECT.i32" pseudo="true"/>
8839
8840  <ins name="+SPLIT.i32" pseudo="true">
8841    <src start="0"/>
8842  </ins>
8843
8844</bifrost>
8845