| <!-- |
| Copyright (C) 2020 Collabora Ltd. |
| |
| Permission is hereby granted, free of charge, to any person obtaining a |
| copy of this software and associated documentation files (the "Software"), |
| to deal in the Software without restriction, including without limitation |
| the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| and/or sell copies of the Software, and to permit persons to whom the |
| Software is furnished to do so, subject to the following conditions: |
| |
| The above copyright notice and this permission notice (including the next |
| paragraph) shall be included in all copies or substantial portions of the |
| Software. |
| |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| SOFTWARE. |
| --> |
| |
| <bifrost> |
| |
| <ins name="*ARSHIFT.i32" mask="0x7ff838" exact="0x335018"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0x8"/> |
| <src start="6"/> |
| <mod name="lane2" start="9" size="2" default="b0"> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ARSHIFT.v2i16"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0x8"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b02"> |
| <opt>b00</opt> |
| <opt>b11</opt> |
| <opt>b22</opt> |
| <opt>b33</opt> |
| <opt>b01</opt> |
| <opt>b23</opt> |
| <opt>b02</opt> |
| </mod> |
| <encoding mask="0x7ff838" exact="0x334818"> |
| <or> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </or> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7ff838" exact="0x335818"> |
| <or> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </or> |
| <derived start="9" size="2"> |
| <reserved/> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </derived> |
| </encoding> |
| </ins> |
| |
| <ins name="*ARSHIFT.v4i8"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0x8"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b0123"> |
| <opt>b0123</opt> |
| <opt>b0000</opt> |
| <opt>b1111</opt> |
| <opt>b2222</opt> |
| <opt>b3333</opt> |
| </mod> |
| <encoding mask="0x7ff838" exact="0x334018"> |
| <neq left="lanes2" right="#b0123"/> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b0000"/> |
| <eq left="lanes2" right="#b1111"/> |
| <eq left="lanes2" right="#b2222"/> |
| <eq left="lanes2" right="#b3333"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7ffe38" exact="0x335818"> |
| <eq left="lanes2" right="#b0123"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*ARSHIFT_DOUBLE.i32" mask="0x7ff000" exact="0x33e000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="bytes2" start="9" size="1" opt="bytes2"/> |
| <mod name="lane2" start="10" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| <mod name="result_word" start="11" size="1" default="w0"> |
| <opt>w0</opt> |
| <opt>w1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_C.i32" mask="0x7fe000" exact="0x2f4000" last="true" dests="0"> |
| <src start="0" mask="0xf3"/> |
| <src start="3" mask="0xf3"/> |
| <src start="6" mask="0xf7"/> |
| <mod name="atom_opc" start="9" size="4"> |
| <reserved/> |
| <reserved/> |
| <opt>aadd</opt> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <opt>asmin</opt> |
| <opt>asmax</opt> |
| <opt>aumin</opt> |
| <opt>aumax</opt> |
| <opt>aand</opt> |
| <opt>aor</opt> |
| <opt>axor</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_C.i64" mask="0x7fe000" exact="0x2f0000" last="true" dests="0"> |
| <src start="0" mask="0xf3"/> |
| <src start="3" mask="0xf3"/> |
| <src start="6" mask="0xf7"/> |
| <mod name="atom_opc" start="9" size="4"> |
| <opt>aaddu</opt> |
| <opt>aadds</opt> |
| <opt>aadd</opt> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <opt>asmin</opt> |
| <opt>asmax</opt> |
| <opt>aumin</opt> |
| <opt>aumax</opt> |
| <opt>aand</opt> |
| <opt>aor</opt> |
| <opt>axor</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_C1.i32" mask="0x7ffe00" exact="0x2f5e00" last="true" dests="0"> |
| <src start="0" mask="0xf3"/> |
| <src start="3" mask="0xf3"/> |
| <mod name="atom_opc" start="6" size="3"> |
| <opt>ainc</opt> |
| <opt>adec</opt> |
| <opt>aumax1</opt> |
| <opt>asmax1</opt> |
| <opt>aor1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_C1.i64" mask="0x7ffe00" exact="0x2f1e00" last="true" dests="0"> |
| <src start="0" mask="0xf3"/> |
| <src start="3" mask="0xf3"/> |
| <mod name="atom_opc" start="6" size="3"> |
| <opt>ainc</opt> |
| <opt>adec</opt> |
| <opt>aumax1</opt> |
| <opt>asmax1</opt> |
| <opt>aor1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_C1_RETURN.i32" mask="0x7ffe00" exact="0x2f7e00" last="true" dests="0"> |
| <src start="0" mask="0xf3"/> |
| <src start="3" mask="0xf3"/> |
| <mod name="atom_opc" start="6" size="3"> |
| <opt>ainc</opt> |
| <opt>adec</opt> |
| <opt>aumax1</opt> |
| <opt>asmax1</opt> |
| <opt>aor1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_C1_RETURN.i64" mask="0x7ffe00" exact="0x2f3e00" last="true" dests="0"> |
| <src start="0" mask="0xf3"/> |
| <src start="3" mask="0xf3"/> |
| <mod name="atom_opc" start="6" size="3"> |
| <opt>ainc</opt> |
| <opt>adec</opt> |
| <opt>aumax1</opt> |
| <opt>asmax1</opt> |
| <opt>aor1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_C_RETURN.i32" mask="0x7fe000" exact="0x2f6000" last="true" dests="0"> |
| <src start="0" mask="0xf3"/> |
| <src start="3" mask="0xf3"/> |
| <src start="6" mask="0xf7"/> |
| <mod name="atom_opc" start="9" size="4"> |
| <reserved/> |
| <reserved/> |
| <opt>aadd</opt> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <opt>asmin</opt> |
| <opt>asmax</opt> |
| <opt>aumin</opt> |
| <opt>aumax</opt> |
| <opt>aand</opt> |
| <opt>aor</opt> |
| <opt>axor</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_C_RETURN.i64" mask="0x7fe000" exact="0x2f2000" last="true" dests="0"> |
| <src start="0" mask="0xf3"/> |
| <src start="3" mask="0xf3"/> |
| <src start="6" mask="0xf7"/> |
| <mod name="atom_opc" start="9" size="4"> |
| <opt>aaddu</opt> |
| <opt>aadds</opt> |
| <opt>aadd</opt> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <opt>asmin</opt> |
| <opt>asmax</opt> |
| <opt>aumin</opt> |
| <opt>aumax</opt> |
| <opt>aand</opt> |
| <opt>aor</opt> |
| <opt>axor</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_POST.i32" mask="0x7ffc00" exact="0x6ee400"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="atom_opc" start="6" size="4"> |
| <reserved/> |
| <reserved/> |
| <opt>aadd</opt> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <opt>asmin</opt> |
| <opt>asmax</opt> |
| <opt>aumin</opt> |
| <opt>aumax</opt> |
| <opt>aand</opt> |
| <opt>aor</opt> |
| <opt>axor</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_POST.i64" mask="0x7ffc00" exact="0x6ee000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="atom_opc" start="6" size="4"> |
| <opt>aaddu</opt> |
| <opt>aadds</opt> |
| <opt>aadd</opt> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <opt>asmin</opt> |
| <opt>asmax</opt> |
| <opt>aumin</opt> |
| <opt>aumax</opt> |
| <opt>aand</opt> |
| <opt>aor</opt> |
| <opt>axor</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ATOM_PRE.i64" mask="0x7fe000" exact="0x6ec000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="atom_opc" start="9" size="4"> |
| <opt>aaddu</opt> |
| <opt>aadds</opt> |
| <opt>aadd</opt> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <opt>asmin</opt> |
| <opt>asmax</opt> |
| <opt>aumin</opt> |
| <opt>aumax</opt> |
| <opt>aand</opt> |
| <opt>aor</opt> |
| <opt>axor</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*BITREV.i32" mask="0x7ffff8" exact="0x701fc0"> |
| <src start="0" mask="0xfb"/> |
| </ins> |
| |
| <ins name="*CLZ.u32" mask="0x7ffff0" exact="0x701fd0"> |
| <src start="0" mask="0xfb"/> |
| <mod name="mask" start="3" size="1" opt="mask"/> |
| </ins> |
| |
| <ins name="*CLZ.v2u16" mask="0x7fffc0" exact="0x701ec0"> |
| <src start="0" mask="0xfb"/> |
| <mod name="mask" start="3" size="1" opt="mask"/> |
| <mod name="swz0" start="4" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*CLZ.v4u8" mask="0x7ffff0" exact="0x701f90"> |
| <src start="0" mask="0xfb"/> |
| <mod name="mask" start="3" size="1" opt="mask"/> |
| </ins> |
| |
| <ins name="*CSEL.f32" mask="0x7fc000" exact="0x2e0000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="cmpf" size="3"> |
| <opt>eq</opt> |
| <opt>gt</opt> |
| <opt>ge</opt> |
| <opt>ne</opt> |
| <opt>lt</opt> |
| <opt>le</opt> |
| </mod> |
| <derived start="12" size="2"> |
| <eq left="cmpf" right="#eq"/> |
| <eq left="cmpf" right="#gt"/> |
| <eq left="cmpf" right="#ge"/> |
| <reserved/> |
| </derived> |
| <swap left="0" right="1"> |
| <or> |
| <eq left="cmpf" right="#lt"/> |
| <eq left="cmpf" right="#le"/> |
| </or> |
| <rewrite name="cmpf"> |
| <map from="lt" to="gt"/> |
| <map from="le" to="ge"/> |
| </rewrite> |
| </swap> |
| <swap left="2" right="3"> |
| <eq left="cmpf" right="#ne"/> |
| <rewrite name="cmpf"> |
| <map from="ne" to="eq"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*CSEL.i32" mask="0x7f8000" exact="0x2e0000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="cmpf" size="1"> |
| <opt>eq</opt> |
| <opt>ne</opt> |
| </mod> |
| <derived start="12" size="3"> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <eq left="cmpf" right="#eq"/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| </derived> |
| <swap left="2" right="3"> |
| <eq left="cmpf" right="#ne"/> |
| <rewrite name="cmpf"> |
| <map from="ne" to="eq"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*CSEL.s32" mask="0x7fe000" exact="0x2e4000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="cmpf" size="2"> |
| <opt>gt</opt> |
| <opt>ge</opt> |
| <opt>lt</opt> |
| <opt>le</opt> |
| </mod> |
| <derived start="12" size="1"> |
| <eq left="cmpf" right="#gt"/> |
| <eq left="cmpf" right="#ge"/> |
| </derived> |
| <swap left="0" right="1"> |
| <or> |
| <eq left="cmpf" right="#lt"/> |
| <eq left="cmpf" right="#le"/> |
| </or> |
| <rewrite name="cmpf"> |
| <map from="lt" to="gt"/> |
| <map from="le" to="ge"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*CSEL.u32" mask="0x7fe000" exact="0x2e6000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="cmpf" size="2"> |
| <opt>gt</opt> |
| <opt>ge</opt> |
| <opt>lt</opt> |
| <opt>le</opt> |
| </mod> |
| <derived start="12" size="1"> |
| <eq left="cmpf" right="#gt"/> |
| <eq left="cmpf" right="#ge"/> |
| </derived> |
| <swap left="0" right="1"> |
| <or> |
| <eq left="cmpf" right="#lt"/> |
| <eq left="cmpf" right="#le"/> |
| </or> |
| <rewrite name="cmpf"> |
| <map from="lt" to="gt"/> |
| <map from="le" to="ge"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*CSEL.v2f16" mask="0x7fc000" exact="0x6e0000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="cmpf" size="3"> |
| <opt>eq</opt> |
| <opt>gt</opt> |
| <opt>ge</opt> |
| <opt>ne</opt> |
| <opt>lt</opt> |
| <opt>le</opt> |
| </mod> |
| <derived start="12" size="2"> |
| <eq left="cmpf" right="#eq"/> |
| <eq left="cmpf" right="#gt"/> |
| <eq left="cmpf" right="#ge"/> |
| <reserved/> |
| </derived> |
| <swap left="0" right="1"> |
| <or> |
| <eq left="cmpf" right="#lt"/> |
| <eq left="cmpf" right="#le"/> |
| </or> |
| <rewrite name="cmpf"> |
| <map from="lt" to="gt"/> |
| <map from="le" to="ge"/> |
| </rewrite> |
| </swap> |
| <swap left="2" right="3"> |
| <eq left="cmpf" right="#ne"/> |
| <rewrite name="cmpf"> |
| <map from="ne" to="eq"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*CSEL.v2i16" mask="0x7f8000" exact="0x6e0000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="cmpf" size="1"> |
| <opt>eq</opt> |
| <opt>ne</opt> |
| </mod> |
| <derived start="12" size="3"> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <eq left="cmpf" right="#eq"/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| </derived> |
| <swap left="2" right="3"> |
| <eq left="cmpf" right="#ne"/> |
| <rewrite name="cmpf"> |
| <map from="ne" to="eq"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*CSEL.v2s16" mask="0x7fe000" exact="0x6e4000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="cmpf" size="2"> |
| <opt>gt</opt> |
| <opt>ge</opt> |
| <opt>lt</opt> |
| <opt>le</opt> |
| </mod> |
| <derived start="12" size="1"> |
| <eq left="cmpf" right="#gt"/> |
| <eq left="cmpf" right="#ge"/> |
| </derived> |
| <swap left="0" right="1"> |
| <or> |
| <eq left="cmpf" right="#lt"/> |
| <eq left="cmpf" right="#le"/> |
| </or> |
| <rewrite name="cmpf"> |
| <map from="lt" to="gt"/> |
| <map from="le" to="ge"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*CSEL.v2u16" mask="0x7fe000" exact="0x6e6000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="cmpf" size="2"> |
| <opt>gt</opt> |
| <opt>ge</opt> |
| <opt>lt</opt> |
| <opt>le</opt> |
| </mod> |
| <derived start="12" size="1"> |
| <eq left="cmpf" right="#gt"/> |
| <eq left="cmpf" right="#ge"/> |
| </derived> |
| <swap left="0" right="1"> |
| <or> |
| <eq left="cmpf" right="#lt"/> |
| <eq left="cmpf" right="#le"/> |
| </or> |
| <rewrite name="cmpf"> |
| <map from="lt" to="gt"/> |
| <map from="le" to="ge"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*CUBEFACE1" mask="0x7ffc00" exact="0x706800"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="neg0" size="1" opt="neg"/> |
| <mod name="neg1" size="1" opt="neg"/> |
| <mod name="neg2" size="1" opt="neg"/> |
| <derived start="9" size="1"> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#none"/> |
| <eq left="neg2" right="#none"/> |
| </and> |
| <and> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#neg"/> |
| <eq left="neg2" right="#neg"/> |
| </and> |
| </derived> |
| </ins> |
| |
| <ins name="*DTSEL_IMM" mask="0x7fffe0" exact="0x70f3e0"> |
| <src start="0" mask="0xfb"/> |
| <mod name="table" start="3" size="2"> |
| <opt>attribute_1</opt> |
| <opt>attribute_2</opt> |
| <opt>none</opt> <!-- actually reserved, used as sentinel --> |
| <opt>flat</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*F16_TO_F32" mask="0x7ffff0" exact="0x700d10"> |
| <src start="0" mask="0xfb"/> |
| <mod name="lane0" start="3" size="1" default="h0"> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*FADD.f32" mask="0x7e0000" exact="0x2c0000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="abs1" start="6" size="1" opt="abs"/> |
| <mod name="neg0" start="7" size="1" opt="neg"/> |
| <mod name="neg1" start="8" size="1" opt="neg"/> |
| <mod name="abs0" start="12" size="1" opt="abs"/> |
| <mod name="round" start="13" size="2"> |
| <opt>none</opt> |
| <opt>rtp</opt> |
| <opt>rtn</opt> |
| <opt>rtz</opt> |
| </mod> |
| <mod name="clamp" start="15" size="2"> |
| <opt>none</opt> |
| <opt>clamp_0_inf</opt> |
| <opt>clamp_m1_1</opt> |
| <opt>clamp_0_1</opt> |
| </mod> |
| <mod name="widen0" size="2"> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <mod name="widen1" size="2"> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <derived start="9" size="3"> |
| <and> |
| <eq left="widen0" right="#none"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#none"/> |
| <eq left="widen1" right="#h0"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#none"/> |
| <eq left="widen1" right="#h1"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h0"/> |
| <eq left="widen1" right="#h0"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h0"/> |
| <eq left="widen1" right="#h1"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h1"/> |
| <eq left="widen1" right="#h1"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h0"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h1"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| </derived> |
| <swap left="0" right="1"> |
| <and> |
| <eq left="widen0" right="#h1"/> |
| <eq left="widen1" right="#h0"/> |
| </and> |
| </swap> |
| </ins> |
| |
| <ins name="*FADD.v2f16" mask="0x7e0000" exact="0x6c0000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="abs0" size="1" opt="abs"/> |
| <mod name="abs1" size="1" opt="abs"/> |
| <mod name="neg0" start="7" size="1" opt="neg"/> |
| <mod name="neg1" start="8" size="1" opt="neg"/> |
| <mod name="swz0" start="9" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <mod name="swz1" start="11" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <mod name="round" start="13" size="2"> |
| <opt>none</opt> |
| <opt>rtp</opt> |
| <opt>rtn</opt> |
| <opt>rtz</opt> |
| </mod> |
| <mod name="clamp" start="15" size="2"> |
| <opt>none</opt> |
| <opt>clamp_0_inf</opt> |
| <opt>clamp_m1_1</opt> |
| <opt>clamp_0_1</opt> |
| </mod> |
| <derived start="6" size="1"> |
| <or> |
| <and> |
| <eq left="abs0" right="#abs"/> |
| <eq left="abs1" right="#none"/> |
| <eq left="ordering" right="#gt"/> |
| </and> |
| <and> |
| <eq left="abs0" right="#none"/> |
| <eq left="abs1" right="#none"/> |
| <neq left="ordering" right="#gt"/> |
| </and> |
| </or> |
| <or> |
| <and> |
| <eq left="abs0" right="#abs"/> |
| <eq left="abs1" right="#abs"/> |
| <eq left="ordering" right="#gt"/> |
| </and> |
| <and> |
| <eq left="abs0" right="#abs"/> |
| <eq left="abs1" right="#none"/> |
| <neq left="ordering" right="#gt"/> |
| </and> |
| </or> |
| </derived> |
| <swap left="0" right="1"> |
| <or> |
| <and> |
| <eq left="abs0" right="#none"/> |
| <eq left="ordering" right="#gt"/> |
| </and> |
| <and> |
| <eq left="abs1" right="#abs"/> |
| <neq left="ordering" right="#gt"/> |
| </and> |
| </or> |
| </swap> |
| </ins> |
| |
| <ins name="*FADD_LSCALE.f32" mask="0x7ffc00" exact="0x70f400"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="abs0" start="6" size="1" opt="abs"/> |
| <mod name="neg0" start="7" size="1" opt="neg"/> |
| <mod name="abs1" start="8" size="1" opt="abs"/> |
| <mod name="neg1" start="9" size="1" opt="neg"/> |
| </ins> |
| |
| <ins name="*FCMP.f32" mask="0x7c0000" exact="0x240000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="widen0" size="2"> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <mod name="widen1" size="2"> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <mod name="abs1" start="6" size="1" opt="abs"/> |
| <mod name="neg0" start="7" size="1" opt="neg"/> |
| <mod name="neg1" start="8" size="1" opt="neg"/> |
| <mod name="abs0" start="12" size="1" opt="abs"/> |
| <mod name="cmpf" start="13" size="3"> |
| <opt>eq</opt> |
| <opt>gt</opt> |
| <opt>ge</opt> |
| <opt>ne</opt> |
| <opt>lt</opt> |
| <opt>le</opt> |
| <opt>gtlt</opt> |
| <opt>total</opt> |
| </mod> |
| <mod name="result_type" start="16" size="2" default="i1"> |
| <opt>i1</opt> |
| <opt>f1</opt> |
| <opt>m1</opt> |
| </mod> |
| <derived start="9" size="3"> |
| <and> |
| <eq left="widen0" right="#none"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#none"/> |
| <eq left="widen1" right="#h0"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#none"/> |
| <eq left="widen1" right="#h1"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h0"/> |
| <eq left="widen1" right="#h0"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h0"/> |
| <eq left="widen1" right="#h1"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h1"/> |
| <eq left="widen1" right="#h1"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h0"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h1"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| </derived> |
| <swap left="0" right="1"> |
| <and> |
| <eq left="widen0" right="#h1"/> |
| <eq left="widen1" right="#h0"/> |
| </and> |
| <rewrite name="cmpf"> |
| <map from="lt" to="gt"/> |
| <map from="le" to="ge"/> |
| <map from="gt" to="lt"/> |
| <map from="ge" to="le"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*FCMP.v2f16" mask="0x7c0000" exact="0x640000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="abs0" size="1" opt="abs"/> |
| <mod name="abs1" size="1" opt="abs"/> |
| <mod name="cmpf" size="3"> |
| <opt>eq</opt> |
| <opt>gt</opt> |
| <opt>ge</opt> |
| <opt>ne</opt> |
| <opt>lt</opt> |
| <opt>le</opt> |
| <opt>gtlt</opt> |
| <opt>total</opt> |
| </mod> |
| <mod name="neg0" start="7" size="1" opt="neg"/> |
| <mod name="neg1" start="8" size="1" opt="neg"/> |
| <mod name="swz0" start="9" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <mod name="swz1" start="11" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <mod name="result_type" start="16" size="2" default="i1"> |
| <opt>i1</opt> |
| <opt>f1</opt> |
| <opt>m1</opt> |
| </mod> |
| <derived start="6" size="1"> |
| <or> |
| <and> |
| <eq left="abs0" right="#abs"/> |
| <eq left="abs1" right="#none"/> |
| <eq left="ordering" right="#gt"/> |
| </and> |
| <and> |
| <eq left="abs0" right="#none"/> |
| <eq left="abs1" right="#none"/> |
| <neq left="ordering" right="#gt"/> |
| </and> |
| </or> |
| <or> |
| <and> |
| <eq left="abs0" right="#abs"/> |
| <eq left="abs1" right="#abs"/> |
| <eq left="ordering" right="#gt"/> |
| </and> |
| <and> |
| <eq left="abs0" right="#abs"/> |
| <eq left="abs1" right="#none"/> |
| <neq left="ordering" right="#gt"/> |
| </and> |
| </or> |
| </derived> |
| <derived start="13" size="3"> |
| <eq left="cmpf" right="#eq"/> |
| <eq left="cmpf" right="#gt"/> |
| <eq left="cmpf" right="#ge"/> |
| <eq left="cmpf" right="#ne"/> |
| <eq left="cmpf" right="#lt"/> |
| <eq left="cmpf" right="#le"/> |
| <eq left="cmpf" right="#gtlt"/> |
| <and> |
| <eq left="cmpf" right="#total"/> |
| <eq left="abs0" right="#none"/> |
| <eq left="abs1" right="#none"/> |
| </and> |
| </derived> |
| <swap left="0" right="1"> |
| <or> |
| <and> |
| <eq left="abs0" right="#none"/> |
| <eq left="ordering" right="#gt"/> |
| </and> |
| <and> |
| <eq left="abs1" right="#abs"/> |
| <neq left="ordering" right="#gt"/> |
| </and> |
| </or> |
| <rewrite name="cmpf"> |
| <map from="lt" to="gt"/> |
| <map from="le" to="ge"/> |
| <map from="gt" to="lt"/> |
| <map from="ge" to="le"/> |
| </rewrite> |
| </swap> |
| </ins> |
| |
| <ins name="*FLSHIFT_DOUBLE.i32" mask="0x7ff800" exact="0x33f800"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="bytes2" start="9" size="1" opt="bytes2"/> |
| <mod name="lane2" start="10" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*FMA.f32" mask="0x600000" exact="0x0"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="widen0" size="2"> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <mod name="widen1" size="2"> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <mod name="neg0" size="1" opt="neg"/> |
| <mod name="neg1" size="1" opt="neg"/> |
| <mod name="abs0" start="12" size="1" opt="abs"/> |
| <mod name="round" start="13" size="2"> |
| <opt>none</opt> |
| <opt>rtp</opt> |
| <opt>rtn</opt> |
| <opt>rtz</opt> |
| </mod> |
| <mod name="clamp" start="15" size="2"> |
| <opt>none</opt> |
| <opt>clamp_0_inf</opt> |
| <opt>clamp_m1_1</opt> |
| <opt>clamp_0_1</opt> |
| </mod> |
| <mod name="abs1" start="19" size="1" opt="abs"/> |
| <mod name="neg2" start="18" size="1" opt="neg"/> |
| <mod name="abs2" start="20" size="1" opt="abs"/> |
| <derived start="9" size="3"> |
| <and> |
| <eq left="widen0" right="#none"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#none"/> |
| <eq left="widen1" right="#h0"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#none"/> |
| <eq left="widen1" right="#h1"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h0"/> |
| <eq left="widen1" right="#h0"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h0"/> |
| <eq left="widen1" right="#h1"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h1"/> |
| <eq left="widen1" right="#h1"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h0"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| <and> |
| <eq left="widen0" right="#h1"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| </derived> |
| <derived start="17" size="1"> |
| <or> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#none"/> |
| </and> |
| <and alias="true"> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#neg"/> |
| </and> |
| </or> |
| <or> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#neg"/> |
| </and> |
| <and alias="true"> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#none"/> |
| </and> |
| </or> |
| </derived> |
| <swap left="0" right="1"> |
| <and> |
| <eq left="widen0" right="#h1"/> |
| <eq left="widen1" right="#h0"/> |
| </and> |
| </swap> |
| </ins> |
| |
| <ins name="*FMA.v2f16" mask="0x600000" exact="0x400000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="neg0" size="1" opt="neg"/> |
| <mod name="neg1" size="1" opt="neg"/> |
| <mod name="swz0" start="9" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <mod name="swz1" start="11" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <mod name="round" start="13" size="2"> |
| <opt>none</opt> |
| <opt>rtp</opt> |
| <opt>rtn</opt> |
| <opt>rtz</opt> |
| </mod> |
| <mod name="clamp" start="15" size="2"> |
| <opt>none</opt> |
| <opt>clamp_0_inf</opt> |
| <opt>clamp_m1_1</opt> |
| <opt>clamp_0_1</opt> |
| </mod> |
| <mod name="neg2" start="18" size="1" opt="neg"/> |
| <mod name="swz2" start="19" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <derived start="17" size="1"> |
| <or> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#none"/> |
| </and> |
| <and alias="true"> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#neg"/> |
| </and> |
| </or> |
| <or> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#neg"/> |
| </and> |
| <and alias="true"> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#none"/> |
| </and> |
| </or> |
| </derived> |
| </ins> |
| |
| <ins name="*FMA_RSCALE.f32" mask="0x7c0000" exact="0x280000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="round" size="1" opt="rtz"/> |
| <mod name="clamp" size="2"> |
| <opt>none</opt> |
| <opt>clamp_0_inf</opt> |
| <opt>clamp_m1_1</opt> |
| <opt>clamp_0_1</opt> |
| </mod> |
| <mod name="neg0" size="1" opt="neg"/> |
| <mod name="neg1" size="1" opt="neg"/> |
| <mod name="abs0" start="15" size="1" opt="abs"/> |
| <mod name="neg2" start="17" size="1" opt="neg"/> |
| <mod name="special" size="2"> |
| <opt>none</opt> |
| <opt>n</opt> |
| <opt>left</opt> |
| <opt>scale16</opt> |
| </mod> |
| <derived start="16" size="1"> |
| <or> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#none"/> |
| </and> |
| <and alias="true"> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#neg"/> |
| </and> |
| </or> |
| <or> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#neg"/> |
| </and> |
| <and alias="true"> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#none"/> |
| </and> |
| </or> |
| </derived> |
| <derived start="12" size="3"> |
| <and> |
| <eq left="clamp" right="#none"/> |
| <eq left="special" right="#none"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#clamp_0_inf"/> |
| <eq left="special" right="#none"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#clamp_m1_1"/> |
| <eq left="special" right="#none"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#clamp_0_1"/> |
| <eq left="special" right="#none"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#none"/> |
| <eq left="special" right="#n"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#none"/> |
| <eq left="special" right="#n"/> |
| <eq left="round" right="#rtz"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#none"/> |
| <eq left="special" right="#scale16"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#none"/> |
| <eq left="special" right="#left"/> |
| <eq left="round" right="#none"/> |
| </and> |
| </derived> |
| </ins> |
| |
| <ins name="*FMA_RSCALE.v2f16" mask="0x7c0000" exact="0x680000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="round" size="1" opt="rtz"/> |
| <mod name="clamp" size="2"> |
| <opt>none</opt> |
| <opt>clamp_0_inf</opt> |
| <opt>clamp_m1_1</opt> |
| <opt>clamp_0_1</opt> |
| </mod> |
| <mod name="neg0" size="1" opt="neg"/> |
| <mod name="neg1" size="1" opt="neg"/> |
| <mod name="abs0" start="15" size="1" opt="abs"/> |
| <mod name="neg2" start="17" size="1" opt="neg"/> |
| <mod name="special" size="2"> |
| <opt>none</opt> |
| <opt>n</opt> |
| <opt>left</opt> |
| </mod> |
| <derived start="16" size="1"> |
| <or> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#none"/> |
| </and> |
| <and alias="true"> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#neg"/> |
| </and> |
| </or> |
| <or> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#neg"/> |
| </and> |
| <and alias="true"> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#none"/> |
| </and> |
| </or> |
| </derived> |
| <derived start="12" size="3"> |
| <and> |
| <eq left="clamp" right="#none"/> |
| <eq left="special" right="#none"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#clamp_0_inf"/> |
| <eq left="special" right="#none"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#clamp_m1_1"/> |
| <eq left="special" right="#none"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#clamp_0_1"/> |
| <eq left="special" right="#none"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#none"/> |
| <eq left="special" right="#n"/> |
| <eq left="round" right="#none"/> |
| </and> |
| <and> |
| <eq left="clamp" right="#none"/> |
| <eq left="special" right="#n"/> |
| <eq left="round" right="#rtz"/> |
| </and> |
| <reserved/> |
| <and> |
| <eq left="clamp" right="#none"/> |
| <eq left="special" right="#left"/> |
| <eq left="round" right="#none"/> |
| </and> |
| </derived> |
| </ins> |
| |
| <ins name="*FMUL_CSLICE" mask="0x7ffe00" exact="0x70d000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="lane0" start="6" size="1" default="h0"> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <mod name="abs0" start="7" size="1" opt="abs"/> |
| <mod name="neg0" start="8" size="1" opt="neg"/> |
| </ins> |
| |
| <ins name="*FMUL_SLICE.f32" mask="0x7fffc0" exact="0x70cb40"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| </ins> |
| |
| <ins name="*FREXPE.f32"> |
| <src start="0" mask="0xfb"/> |
| <mod name="neg0" size="1" opt="neg"/> |
| <mod name="sqrt" size="1" opt="sqrt"/> |
| <mod name="log" size="1" opt="log"/> |
| <mod name="widen0" start="3" size="2"> |
| <reserved/> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <encoding mask="0x7ffea0" exact="0x701c20"> |
| <eq left="log" right="#none"/> |
| <copy name="neg0" start="6"/> |
| <copy name="sqrt" start="8"/> |
| </encoding> |
| <encoding mask="0x7fffe0" exact="0x701e20"> |
| <and> |
| <eq left="log" right="#log"/> |
| <eq left="sqrt" right="#none"/> |
| <eq left="neg0" right="#none"/> |
| </and> |
| </encoding> |
| </ins> |
| |
| <ins name="*FREXPE.v2f16"> |
| <src start="0" mask="0xfb"/> |
| <mod name="neg0" size="1" opt="neg"/> |
| <mod name="sqrt" size="1" opt="sqrt"/> |
| <mod name="log" size="1" opt="log"/> |
| <mod name="swz0" start="3" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <encoding mask="0x7ffea0" exact="0x701c00"> |
| <eq left="log" right="#none"/> |
| <copy name="neg0" start="6"/> |
| <copy name="sqrt" start="8"/> |
| </encoding> |
| <encoding mask="0x7fffe0" exact="0x701e00"> |
| <and> |
| <eq left="log" right="#log"/> |
| <eq left="sqrt" right="#none"/> |
| <eq left="neg0" right="#none"/> |
| </and> |
| </encoding> |
| </ins> |
| |
| <ins name="*FREXPM.f32"> |
| <src start="0" mask="0xfb"/> |
| <mod name="abs0" start="6" size="1" opt="abs"/> |
| <mod name="sqrt" size="1" opt="sqrt"/> |
| <mod name="log" size="1" opt="log"/> |
| <mod name="widen0" start="3" size="2"> |
| <reserved/> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <mod name="neg0" size="1" opt="neg"/> |
| <encoding mask="0x7fff20" exact="0x701b20"> |
| <and> |
| <eq left="log" right="#none"/> |
| <eq left="neg0" right="#none"/> |
| </and> |
| <copy name="sqrt" start="7"/> |
| </encoding> |
| <encoding mask="0x7fff20" exact="0x701a20"> |
| <and> |
| <eq left="log" right="#log"/> |
| <eq left="sqrt" right="#none"/> |
| </and> |
| <copy name="neg0" start="7"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*FREXPM.v2f16"> |
| <src start="0" mask="0xfb"/> |
| <mod name="abs0" start="6" size="1" opt="abs"/> |
| <mod name="sqrt" size="1" opt="sqrt"/> |
| <mod name="log" size="1" opt="log"/> |
| <mod name="swz0" start="3" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <mod name="neg0" size="1" opt="neg"/> |
| <encoding mask="0x7fff20" exact="0x701b00"> |
| <and> |
| <eq left="log" right="#none"/> |
| <eq left="neg0" right="#none"/> |
| </and> |
| <copy name="sqrt" start="7"/> |
| </encoding> |
| <encoding mask="0x7fff20" exact="0x701a00"> |
| <and> |
| <eq left="log" right="#log"/> |
| <eq left="sqrt" right="#none"/> |
| </and> |
| <copy name="neg0" start="7"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*FROUND.f32"> |
| <src start="0" mask="0xfb"/> |
| <mod name="abs0" start="7" size="1" opt="abs"/> |
| <mod name="neg0" start="8" size="1" opt="neg"/> |
| <mod name="widen0" start="3" size="2"> |
| <reserved/> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <mod name="round" size="3"> |
| <opt>none</opt> |
| <opt>rtp</opt> |
| <opt>rtn</opt> |
| <opt>rtz</opt> |
| <opt>rtna</opt> |
| </mod> |
| <encoding mask="0x7ff860" exact="0x70c020"> |
| <neq left="round" right="#rtna"/> |
| <derived start="9" size="2"> |
| <eq left="round" right="#none"/> |
| <eq left="round" right="#rtp"/> |
| <eq left="round" right="#rtn"/> |
| <eq left="round" right="#rtz"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7ffe60" exact="0x707620"> |
| <eq left="round" right="#rtna"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*FROUND.v2f16"> |
| <src start="0" mask="0xfb"/> |
| <mod name="abs0" start="7" size="1" opt="abs"/> |
| <mod name="neg0" start="8" size="1" opt="neg"/> |
| <mod name="swz0" start="3" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <mod name="round" size="3"> |
| <opt>none</opt> |
| <opt>rtp</opt> |
| <opt>rtn</opt> |
| <opt>rtz</opt> |
| <opt>rtna</opt> |
| </mod> |
| <encoding mask="0x7ff860" exact="0x70c000"> |
| <neq left="round" right="#rtna"/> |
| <derived start="9" size="2"> |
| <eq left="round" right="#none"/> |
| <eq left="round" right="#rtp"/> |
| <eq left="round" right="#rtn"/> |
| <eq left="round" right="#rtz"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7ffe60" exact="0x707600"> |
| <eq left="round" right="#rtna"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*FRSHIFT_DOUBLE.i32" mask="0x7ff800" exact="0x33f000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="bytes2" start="9" size="1" opt="bytes2"/> |
| <mod name="lane2" start="10" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*IADDC.i32" mask="0x7ffe00" exact="0x27fc00"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| </ins> |
| |
| <ins name="*IDP.v4i8" mask="0x7ff9c0" exact="0x73e8c0"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="sign0" start="9" size="1"> |
| <opt>zext</opt> |
| <opt>sext</opt> |
| </mod> |
| <mod name="sign1" start="10" size="1"> |
| <opt>zext</opt> |
| <opt>sext</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*IMUL.i32"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="widen1" size="3"> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| <mod name="extend" size="2"> |
| <opt>none</opt> |
| <opt>sext</opt> |
| <opt>zext</opt> |
| </mod> |
| <encoding mask="0x7fffc0" exact="0x73c0c0"> |
| <and> |
| <eq left="extend" right="#none"/> |
| <eq left="widen1" right="#none"/> |
| </and> |
| </encoding> |
| <encoding mask="0x7ff9c0" exact="0x73c8c0"> |
| <and> |
| <neq left="extend" right="#none"/> |
| <or> |
| <eq left="widen1" right="#h0"/> |
| <eq left="widen1" right="#h1"/> |
| </or> |
| </and> |
| <derived start="9" size="1"> |
| <eq left="widen1" right="#h0"/> |
| <eq left="widen1" right="#h1"/> |
| </derived> |
| <derived start="10" size="1"> |
| <eq left="extend" right="#zext"/> |
| <eq left="extend" right="#sext"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7ff1c0" exact="0x73b0c0"> |
| <and> |
| <neq left="extend" right="#none"/> |
| <or> |
| <eq left="widen1" right="#b0"/> |
| <eq left="widen1" right="#b1"/> |
| <eq left="widen1" right="#b2"/> |
| <eq left="widen1" right="#b3"/> |
| </or> |
| </and> |
| <derived start="9" size="2"> |
| <eq left="widen1" right="#b0"/> |
| <eq left="widen1" right="#b1"/> |
| <eq left="widen1" right="#b2"/> |
| <eq left="widen1" right="#b3"/> |
| </derived> |
| <derived start="11" size="1"> |
| <eq left="extend" right="#zext"/> |
| <eq left="extend" right="#sext"/> |
| </derived> |
| </encoding> |
| </ins> |
| |
| <ins name="*IMUL.v2i16" mask="0x7fe1c0" exact="0x7240c0"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="swz0" start="9" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| <mod name="swz1" start="11" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*IMUL.v4i8"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="replicate0" size="3" default="b0123"> |
| <opt>b0123</opt> |
| </mod> |
| <mod name="replicate1" size="3" default="b0123"> |
| <opt>b0123</opt> |
| <opt>b0000</opt> |
| <opt>b1111</opt> |
| <opt>b2222</opt> |
| <opt>b3333</opt> |
| </mod> |
| <encoding mask="0x7fffc0" exact="0x73e0c0"> |
| <and> |
| <eq left="replicate0" right="#b0123"/> |
| <eq left="replicate1" right="#b0123"/> |
| </and> |
| </encoding> |
| <encoding mask="0x7ff9c0" exact="0x7380c0"> |
| <and> |
| <eq left="replicate0" right="#b0123"/> |
| <neq left="replicate1" right="#b0123"/> |
| </and> |
| <derived start="9" size="2"> |
| <eq left="replicate1" right="#b0000"/> |
| <eq left="replicate1" right="#b1111"/> |
| <eq left="replicate1" right="#b2222"/> |
| <eq left="replicate1" right="#b3333"/> |
| </derived> |
| </encoding> |
| </ins> |
| |
| <ins name="*IMULD" mask="0x7fff80" exact="0x70f100"> |
| <src start="0" mask="0x33"/> |
| <src start="3" mask="0x33"/> |
| <mod name="threads" start="6" size="1" default="odd"> |
| <opt>even</opt> |
| <opt>odd</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*ISUBB.i32" mask="0x7ffe00" exact="0x27fe00"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| </ins> |
| |
| <ins name="*JUMP_EX" mask="0x7ff000" exact="0x2eb000" last="true"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="test_mode" start="9" size="1" default="z"> |
| <opt>z</opt> |
| <opt>nz</opt> |
| </mod> |
| <mod name="stack_mode" start="10" size="2"> |
| <opt>return</opt> |
| <opt>call</opt> |
| <opt>none</opt> |
| <opt>replace</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*LROT_DOUBLE.i32" mask="0x7ff000" exact="0x33b000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="bytes2" start="9" size="1" opt="bytes2"/> |
| <mod name="lane2" start="10" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| <mod name="result_word" start="11" size="1" default="w0"> |
| <opt>w0</opt> |
| <opt>w1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*LSHIFT_AND.i32" mask="0x7f3800" exact="0x311000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lane2" start="9" size="2" default="b0"> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| <mod name="not1" start="14" size="1" opt="not"/> |
| <mod name="not_result" start="15" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*LSHIFT_AND.v2i16"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b02"> |
| <opt>b00</opt> |
| <opt>b11</opt> |
| <opt>b22</opt> |
| <opt>b33</opt> |
| <opt>b01</opt> |
| <opt>b23</opt> |
| <opt>b02</opt> |
| </mod> |
| <mod name="not1" start="14" size="1" opt="not"/> |
| <mod name="not_result" start="15" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <encoding mask="0x7f3800" exact="0x310800"> |
| <or> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </or> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7f3800" exact="0x311800"> |
| <or> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </or> |
| <derived start="9" size="2"> |
| <reserved/> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </derived> |
| </encoding> |
| </ins> |
| |
| <ins name="*LSHIFT_AND.v4i8"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b0123"> |
| <opt>b0123</opt> |
| <opt>b0000</opt> |
| <opt>b1111</opt> |
| <opt>b2222</opt> |
| <opt>b3333</opt> |
| </mod> |
| <mod name="not1" start="14" size="1" opt="not"/> |
| <mod name="not_result" start="15" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <encoding mask="0x7f3800" exact="0x310000"> |
| <neq left="lanes2" right="#b0123"/> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b0000"/> |
| <eq left="lanes2" right="#b1111"/> |
| <eq left="lanes2" right="#b2222"/> |
| <eq left="lanes2" right="#b3333"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7f3e00" exact="0x311800"> |
| <eq left="lanes2" right="#b0123"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*LSHIFT_DOUBLE.i32" mask="0x7ff000" exact="0x33c000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="bytes2" start="9" size="1" opt="bytes2"/> |
| <mod name="lane2" start="10" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| <mod name="result_word" start="11" size="1" default="w0"> |
| <opt>w0</opt> |
| <opt>w1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*LSHIFT_OR.i32" mask="0x7f3800" exact="0x313000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lane2" start="9" size="2" default="b0"> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| <mod name="not1" start="14" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <mod name="not_result" start="15" size="1" opt="not"/> |
| </ins> |
| |
| <ins name="*LSHIFT_OR.v2i16"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b02"> |
| <opt>b00</opt> |
| <opt>b11</opt> |
| <opt>b22</opt> |
| <opt>b33</opt> |
| <opt>b01</opt> |
| <opt>b23</opt> |
| <opt>b02</opt> |
| </mod> |
| <mod name="not1" start="14" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <mod name="not_result" start="15" size="1" opt="not"/> |
| <encoding mask="0x7f3800" exact="0x312800"> |
| <or> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </or> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7f3800" exact="0x313800"> |
| <or> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </or> |
| <derived start="9" size="2"> |
| <reserved/> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </derived> |
| </encoding> |
| </ins> |
| |
| <ins name="*LSHIFT_OR.v4i8"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b0123"> |
| <opt>b0123</opt> |
| <opt>b0000</opt> |
| <opt>b1111</opt> |
| <opt>b2222</opt> |
| <opt>b3333</opt> |
| </mod> |
| <mod name="not1" start="14" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <mod name="not_result" start="15" size="1" opt="not"/> |
| <encoding mask="0x7f3800" exact="0x312000"> |
| <neq left="lanes2" right="#b0123"/> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b0000"/> |
| <eq left="lanes2" right="#b1111"/> |
| <eq left="lanes2" right="#b2222"/> |
| <eq left="lanes2" right="#b3333"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7f3e00" exact="0x313800"> |
| <eq left="lanes2" right="#b0123"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*LSHIFT_XOR.i32" mask="0x7fd800" exact="0x325000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lane2" start="9" size="2" default="b0"> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| <mod name="not_result" start="13" size="1" opt="not"/> |
| </ins> |
| |
| <ins name="*LSHIFT_XOR.v2i16"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b02"> |
| <opt>b00</opt> |
| <opt>b11</opt> |
| <opt>b22</opt> |
| <opt>b33</opt> |
| <opt>b01</opt> |
| <opt>b23</opt> |
| <opt>b02</opt> |
| </mod> |
| <mod name="not_result" start="13" size="1" opt="not"/> |
| <encoding mask="0x7fd800" exact="0x324800"> |
| <or> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </or> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7fd800" exact="0x325800"> |
| <or> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </or> |
| <derived start="9" size="2"> |
| <reserved/> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </derived> |
| </encoding> |
| </ins> |
| |
| <ins name="*LSHIFT_XOR.v4i8"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b0123"> |
| <opt>b0123</opt> |
| <opt>b0000</opt> |
| <opt>b1111</opt> |
| <opt>b2222</opt> |
| <opt>b3333</opt> |
| </mod> |
| <mod name="not_result" start="13" size="1" opt="not"/> |
| <encoding mask="0x7fd800" exact="0x324000"> |
| <neq left="lanes2" right="#b0123"/> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b0000"/> |
| <eq left="lanes2" right="#b1111"/> |
| <eq left="lanes2" right="#b2222"/> |
| <eq left="lanes2" right="#b3333"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7fde00" exact="0x325800"> |
| <eq left="lanes2" right="#b0123"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*MKVEC.v2i16" mask="0x7fff00" exact="0x70f000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="lane0" start="6" size="1" default="h0"> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| <mod name="lane1" start="7" size="1" default="h0"> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*MKVEC.v4i8" mask="0x7f0000" exact="0x710000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="lane0" start="12" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| <mod name="lane1" start="13" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| <mod name="lane2" start="14" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| <mod name="lane3" start="15" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*MOV.i32" mask="0x7ffff8" exact="0x701968"> |
| <src start="0" mask="0xfb"/> |
| </ins> |
| |
| <ins name="*NOP" mask="0x7fffff" exact="0x701963" dests="0"/> |
| |
| <ins name="*POPCOUNT.i32" mask="0x7ffff8" exact="0x73c6d8"> |
| <src start="0" mask="0xfb"/> |
| </ins> |
| |
| <ins name="*QUIET.f32" mask="0x7ffff8" exact="0x701970"> |
| <src start="0" mask="0xfb"/> |
| </ins> |
| |
| <ins name="*QUIET.v2f16" mask="0x7fffc8" exact="0x701900"> |
| <src start="0" mask="0xfb"/> |
| <mod name="swz0" start="4" size="2" default="h01"> |
| <opt>h00</opt> |
| <opt>h10</opt> |
| <opt>h01</opt> |
| <opt>h11</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*RROT_DOUBLE.i32" mask="0x7ff000" exact="0x33a000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="bytes2" start="9" size="1" opt="bytes2"/> |
| <mod name="lane2" start="10" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| <mod name="result_word" start="11" size="1" default="w0"> |
| <opt>w0</opt> |
| <opt>w1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*RSHIFT_AND.i32" mask="0x7f3800" exact="0x301000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lane2" start="9" size="2" default="b0"> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| <mod name="not1" start="14" size="1" opt="not"/> |
| <mod name="not_result" start="15" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/> |
| </ins> |
| |
| <ins name="*RSHIFT_AND.v2i16"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b02"> |
| <opt>b00</opt> |
| <opt>b11</opt> |
| <opt>b22</opt> |
| <opt>b33</opt> |
| <opt>b01</opt> |
| <opt>b23</opt> |
| <opt>b02</opt> |
| </mod> |
| <mod name="not1" start="14" size="1" opt="not"/> |
| <mod name="not_result" start="15" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/> |
| <encoding mask="0x7f3800" exact="0x300800"> |
| <or> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </or> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7f3800" exact="0x301800"> |
| <or> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </or> |
| <derived start="9" size="2"> |
| <reserved/> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </derived> |
| </encoding> |
| </ins> |
| |
| <ins name="*RSHIFT_AND.v4i8"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/> |
| <mod name="lanes2" size="3" default="b0123"> |
| <opt>b0123</opt> |
| <opt>b0000</opt> |
| <opt>b1111</opt> |
| <opt>b2222</opt> |
| <opt>b3333</opt> |
| </mod> |
| <mod name="not1" start="14" size="1" opt="not"/> |
| <mod name="not_result" start="15" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <encoding mask="0x7f3800" exact="0x300000"> |
| <neq left="lanes2" right="#b0123"/> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b0000"/> |
| <eq left="lanes2" right="#b1111"/> |
| <eq left="lanes2" right="#b2222"/> |
| <eq left="lanes2" right="#b3333"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7f3e00" exact="0x301800"> |
| <eq left="lanes2" right="#b0123"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*RSHIFT_DOUBLE.i32" mask="0x7ff000" exact="0x33d000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="bytes2" start="9" size="1" opt="bytes2"/> |
| <mod name="lane2" start="10" size="1" default="b0"> |
| <opt>b0</opt> |
| <opt>b2</opt> |
| </mod> |
| <mod name="result_word" start="11" size="1" default="w0"> |
| <opt>w0</opt> |
| <opt>w1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*RSHIFT_OR.i32" mask="0x7f3800" exact="0x303000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lane2" start="9" size="2" default="b0"> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| <mod name="not1" start="14" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/> |
| <mod name="not_result" start="15" size="1" opt="not"/> |
| </ins> |
| |
| <ins name="*RSHIFT_OR.v2i16"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b02"> |
| <opt>b00</opt> |
| <opt>b11</opt> |
| <opt>b22</opt> |
| <opt>b33</opt> |
| <opt>b01</opt> |
| <opt>b23</opt> |
| <opt>b02</opt> |
| </mod> |
| <mod name="not1" start="14" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <mod name="not_result" start="15" size="1" opt="not"/> |
| <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/> |
| <encoding mask="0x7f3800" exact="0x302800"> |
| <or> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </or> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7f3800" exact="0x303800"> |
| <or> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </or> |
| <derived start="9" size="2"> |
| <reserved/> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </derived> |
| </encoding> |
| </ins> |
| |
| <ins name="*RSHIFT_OR.v4i8"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b0123"> |
| <opt>b0123</opt> |
| <opt>b0000</opt> |
| <opt>b1111</opt> |
| <opt>b2222</opt> |
| <opt>b3333</opt> |
| </mod> |
| <mod name="not1" start="14" size="1"> |
| <opt>not</opt> |
| <opt>none</opt> |
| </mod> |
| <mod name="not_result" start="15" size="1" opt="not"/> |
| <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/> |
| <encoding mask="0x7f3800" exact="0x302000"> |
| <neq left="lanes2" right="#b0123"/> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b0000"/> |
| <eq left="lanes2" right="#b1111"/> |
| <eq left="lanes2" right="#b2222"/> |
| <eq left="lanes2" right="#b3333"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7f3e00" exact="0x303800"> |
| <eq left="lanes2" right="#b0123"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*RSHIFT_XOR.i32" mask="0x7fd800" exact="0x321000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lane2" start="9" size="2" default="b0"> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| <mod name="not_result" start="13" size="1" opt="not"/> |
| <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/> |
| </ins> |
| |
| <ins name="*RSHIFT_XOR.v2i16"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b02"> |
| <opt>b00</opt> |
| <opt>b11</opt> |
| <opt>b22</opt> |
| <opt>b33</opt> |
| <opt>b01</opt> |
| <opt>b23</opt> |
| <opt>b02</opt> |
| </mod> |
| <mod name="not_result" start="13" size="1" opt="not"/> |
| <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/> |
| <encoding mask="0x7fd800" exact="0x320800"> |
| <or> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </or> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b00"/> |
| <eq left="lanes2" right="#b11"/> |
| <eq left="lanes2" right="#b22"/> |
| <eq left="lanes2" right="#b33"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7fd800" exact="0x321800"> |
| <or> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </or> |
| <derived start="9" size="2"> |
| <reserved/> |
| <eq left="lanes2" right="#b01"/> |
| <eq left="lanes2" right="#b23"/> |
| <eq left="lanes2" right="#b02"/> |
| </derived> |
| </encoding> |
| </ins> |
| |
| <ins name="*RSHIFT_XOR.v4i8"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="lanes2" size="3" default="b0123"> |
| <opt>b0123</opt> |
| <opt>b0000</opt> |
| <opt>b1111</opt> |
| <opt>b2222</opt> |
| <opt>b3333</opt> |
| </mod> |
| <mod name="not_result" start="13" size="1" opt="not"/> |
| <mod name="arithmetic" opt="arithmetic" size="1" start="1" pseudo="true"/> |
| <encoding mask="0x7fd800" exact="0x320000"> |
| <neq left="lanes2" right="#b0123"/> |
| <derived start="9" size="2"> |
| <eq left="lanes2" right="#b0000"/> |
| <eq left="lanes2" right="#b1111"/> |
| <eq left="lanes2" right="#b2222"/> |
| <eq left="lanes2" right="#b3333"/> |
| </derived> |
| </encoding> |
| <encoding mask="0x7fde00" exact="0x321800"> |
| <eq left="lanes2" right="#b0123"/> |
| </encoding> |
| </ins> |
| |
| <ins name="*S16_TO_S32" mask="0x7fffe8" exact="0x700cc0"> |
| <src start="0" mask="0xfb"/> |
| <mod name="lane0" start="4" size="1" default="h0"> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*S8_TO_S32" mask="0x7fffc8" exact="0x700b40"> |
| <src start="0" mask="0xfb"/> |
| <mod name="lane0" start="4" size="2" default="b0"> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*SEG_ADD" mask="0x7fff40" exact="0x701500"> |
| <src start="0" mask="0xfb"/> |
| <mod name="seg" start="3" size="3"> |
| <reserved/> |
| <reserved/> |
| <opt>wls</opt> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <opt>tl</opt> |
| </mod> |
| <mod name="preserve_null" start="7" size="1" opt="preserve_null"/> |
| </ins> |
| |
| <ins name="*SEG_SUB" mask="0x7fff40" exact="0x701540" unused="true"> |
| <src start="0" mask="0xfb"/> |
| <mod name="seg" start="3" size="3"> |
| <reserved/> |
| <reserved/> |
| <opt>wls</opt> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <reserved/> |
| <opt>tl</opt> |
| </mod> |
| <mod name="preserve_null" start="7" size="1" opt="preserve_null"/> |
| </ins> |
| |
| <ins name="*SHADDXL.i64" mask="0x7ffe00" exact="0x70e600"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <immediate name="shift" start="6" size="3"/> |
| </ins> |
| |
| <ins name="*SHADDXL.s32" mask="0x7ff800" exact="0x70e800"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <immediate name="shift" start="6" size="3"/> |
| <mod name="lane1" start="9" size="2"> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| <opt>none</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*SHADDXL.u32" mask="0x7ff800" exact="0x70e000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <immediate name="shift" start="6" size="3"/> |
| <mod name="lane1" start="9" size="2"> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| <opt>none</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*U16_TO_U32" mask="0x7fffe8" exact="0x700cc8"> |
| <src start="0" mask="0xfb"/> |
| <mod name="lane0" start="4" size="1" default="h0"> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*U8_TO_U32" mask="0x7fffc8" exact="0x700b48"> |
| <src start="0" mask="0xfb"/> |
| <mod name="lane0" start="4" size="2" default="b0"> |
| <opt>b0</opt> |
| <opt>b1</opt> |
| <opt>b2</opt> |
| <opt>b3</opt> |
| </mod> |
| </ins> |
| |
| <ins name="*V2F32_TO_V2F16" mask="0x7fe000" exact="0x6e8000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <mod name="abs0" size="1" opt="abs"/> |
| <mod name="abs1" size="1" opt="abs"/> |
| <mod name="neg0" size="1" opt="neg"/> |
| <mod name="neg1" size="1" opt="neg"/> |
| <mod name="clamp" start="8" size="2"> |
| <opt>none</opt> |
| <opt>clamp_0_inf</opt> |
| <opt>clamp_m1_1</opt> |
| <opt>clamp_0_1</opt> |
| </mod> |
| <mod name="round" start="10" size="3"> |
| <opt>none</opt> |
| <opt>rtp</opt> |
| <opt>rtn</opt> |
| <opt>rtz</opt> |
| <opt>rtna</opt> |
| </mod> |
| <mod name="ftz" start="9" size="1" opt="ftz" pseudo="true"/> |
| <derived start="6" size="1"> |
| <and> |
| <eq left="abs0" right="#none"/> |
| <eq left="abs1" right="#none"/> |
| </and> |
| <and> |
| <eq left="abs0" right="#abs"/> |
| <eq left="abs1" right="#abs"/> |
| </and> |
| </derived> |
| <derived start="7" size="1"> |
| <and> |
| <eq left="neg0" right="#none"/> |
| <eq left="neg1" right="#none"/> |
| </and> |
| <and> |
| <eq left="neg0" right="#neg"/> |
| <eq left="neg1" right="#neg"/> |
| </and> |
| </derived> |
| </ins> |
| |
| <ins name="*VN_ASST1.f16" mask="0x7ff000" exact="0x6eb000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <mod name="h" start="9" size="1" opt="h"/> |
| <mod name="l" start="10" size="1" opt="l"/> |
| <mod name="neg2" start="11" size="1" opt="neg"/> |
| </ins> |
| |
| <ins name="*VN_ASST1.f32" mask="0x7fe000" exact="0x27c000"> |
| <src start="0" mask="0xfb"/> |
| <src start="3" mask="0xfb"/> |
| <src start="6"/> |
| <src start="9"/> |
| <mod name="neg2" start="12" size="1" opt="neg"/> |
| </ins> |
| |
| <ins name="+ACMPSTORE.i32" staging="r=2" mask="0xffdc0" exact="0x648c0" message="atomic" dests="0"> |
| <src start="0"/> |
| <src start="3"/> |
| <mod name="seg" start="9" size="1" opt="wls"/> |
| </ins> |
| |
| <ins name="+ACMPSTORE.i64" staging="r=4" mask="0xffdc0" exact="0x64900" message="atomic" dests="0"> |
| <src start="0"/> |
| <src start="3"/> |
| <mod name="seg" start="9" size="1" opt="wls"/> |
| </ins> |
| |
| <ins name="+ACMPXCHG.i32" staging="rw=2" mask="0xffdc0" exact="0x644c0" message="atomic"> |
| <src start="0"/> |
| <src start="3"/> |
| <mod name="seg" start="9" size="1" opt="wls"/> |
| </ins> |
| |
| <ins name="+ACMPXCHG.i64" staging="rw=4" mask="0xffdc0" exact="0x64500" message="atomic"> |
| <src start="0"/> |
| <src start="3"/> |
| <mod name="seg" start="9" size="1" opt="wls"/> |
| </ins> |
| |
| <ins name="+ATEST" staging="w=1" mask="0xfff00" exact="0xc8f00" message="atest" table="true"> |
| <src start="0" mask="0xf7"/> |
| <src start="3" mask="0xf7"/> |
| <!-- ATEST parameter datum. Implicitly encoded into the tuple on Bifrost. |
| Real source on Valhall. --> |
| <src start="6" pseudo="true"/> |
| <mod name="widen1" start="6" size="2"> |
| <reserved/> |
| <opt>none</opt> |
| <opt>h0</opt> |
| <opt>h1</opt> |
| </mod> |
| </ins> |
| |
| <ins name="+ATOM_CX" staging="rw=sr_count" mask="0xffe00" exact="0xd7400" message="atomic"> |
| <src start="0"/> |
| <src start="3"/> |
| <src start="6"/> |
| <!-- not actually encoded, but used for IR --> |
| <immediate name="sr_count" size="4" pseudo="true"/> |
| </ins> |
| |
| <ins name="+AXCHG.i32" staging="rw=1" mask="0xffdc0" exact="0x640c0" message="atomic"> |
| <src start="0"/> |
| <src start="3"/> |
| <mod name="seg" start="9" size="1" opt="wls"/> |
| </ins> |
| |
| <ins name="+AXCHG.i64" staging="rw=2" mask="0xffdc0" exact="0x64100" message="atomic"> |
| <src start="0"/> |
| <src start="3"/> |
| <mod name="seg" start="9" size="1" opt="wls"/> |
| </ins> |
| |
| <ins name="+BARRIER" mask="0xfffff" exact="0xd7874" message="barrier" last="true" dests="0"/> |
| |
| <ins name="+BLEND" staging="r=sr_count" mask="0xffe00" exact="0xca800" message="blend" last="true"> |
| <src start="0"/> |
| <src start="3" mask="0xf7"/> |
| <src start="6" mask="0xf7"/> |
| <!-- pseudo source for a dual source blend input --> |
| <src start="9" pseudo="true"/> |