1*61046927SAndroid Build Coastguard Worker<!-- 2*61046927SAndroid Build Coastguard Worker Copyright (C) 2024 Collabora Ltd. 3*61046927SAndroid Build Coastguard Worker 4*61046927SAndroid Build Coastguard Worker Permission is hereby granted, free of charge, to any person obtaining a 5*61046927SAndroid Build Coastguard Worker copy of this software and associated documentation files (the "Software"), 6*61046927SAndroid Build Coastguard Worker to deal in the Software without restriction, including without limitation 7*61046927SAndroid Build Coastguard Worker the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*61046927SAndroid Build Coastguard Worker and/or sell copies of the Software, and to permit persons to whom the 9*61046927SAndroid Build Coastguard Worker Software is furnished to do so, subject to the following conditions: 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard Worker The above copyright notice and this permission notice (including the next 12*61046927SAndroid Build Coastguard Worker paragraph) shall be included in all copies or substantial portions of the 13*61046927SAndroid Build Coastguard Worker Software. 14*61046927SAndroid Build Coastguard Worker 15*61046927SAndroid Build Coastguard Worker THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16*61046927SAndroid Build Coastguard Worker IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*61046927SAndroid Build Coastguard Worker FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*61046927SAndroid Build Coastguard Worker THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19*61046927SAndroid Build Coastguard Worker LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20*61046927SAndroid Build Coastguard Worker OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21*61046927SAndroid Build Coastguard Worker SOFTWARE. 22*61046927SAndroid Build Coastguard Worker--> 23*61046927SAndroid Build Coastguard Worker 24*61046927SAndroid Build Coastguard Worker<bifrost> 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard Worker <!-- Pseudo instruction representing dual texturing on Bifrost. Lowered to 27*61046927SAndroid Build Coastguard Worker TEXC after register allocation, when the second destination register can 28*61046927SAndroid Build Coastguard Worker be combined with the texture operation descriptor. --> 29*61046927SAndroid Build Coastguard Worker <ins name="TEXC_DUAL" staging="rw=sr_count" pseudo="true" message="tex" dests="2" unit="add"> 30*61046927SAndroid Build Coastguard Worker <src start="0"/> 31*61046927SAndroid Build Coastguard Worker <src start="3"/> 32*61046927SAndroid Build Coastguard Worker <src start="6" mask="0xf7"/> 33*61046927SAndroid Build Coastguard Worker <mod name="skip" start="9" size="1" opt="skip"/> 34*61046927SAndroid Build Coastguard Worker <immediate name="sr_count" size="4" pseudo="true"/> 35*61046927SAndroid Build Coastguard Worker <immediate name="sr_count_2" size="4" pseudo="true"/> 36*61046927SAndroid Build Coastguard Worker <mod name="lod_mode" start="13" size="1" default="zero_lod" pseudo="true"> 37*61046927SAndroid Build Coastguard Worker <opt>computed_lod</opt> 38*61046927SAndroid Build Coastguard Worker <opt>zero_lod</opt> 39*61046927SAndroid Build Coastguard Worker </mod> 40*61046927SAndroid Build Coastguard Worker </ins> 41*61046927SAndroid Build Coastguard Worker 42*61046927SAndroid Build Coastguard Worker <!--- Lowered to *SEG_ADD/+SEG_ADD --> 43*61046927SAndroid Build Coastguard Worker <ins name="SEG_ADD.i64" pseudo="true" unit="add"> 44*61046927SAndroid Build Coastguard Worker <src start="0"/> 45*61046927SAndroid Build Coastguard Worker <src start="3"/> 46*61046927SAndroid Build Coastguard Worker <mod name="seg" size="3"> 47*61046927SAndroid Build Coastguard Worker <reserved/> 48*61046927SAndroid Build Coastguard Worker <reserved/> 49*61046927SAndroid Build Coastguard Worker <opt>wls</opt> 50*61046927SAndroid Build Coastguard Worker <reserved/> 51*61046927SAndroid Build Coastguard Worker <reserved/> 52*61046927SAndroid Build Coastguard Worker <reserved/> 53*61046927SAndroid Build Coastguard Worker <reserved/> 54*61046927SAndroid Build Coastguard Worker <opt>tl</opt> 55*61046927SAndroid Build Coastguard Worker </mod> 56*61046927SAndroid Build Coastguard Worker <mod name="preserve_null" size="1" opt="preserve_null"/> 57*61046927SAndroid Build Coastguard Worker </ins> 58*61046927SAndroid Build Coastguard Worker 59*61046927SAndroid Build Coastguard Worker <!-- Scheduler lowered to *ATOM_C.i32/+ATOM_CX. Real Valhall instructions. --> 60*61046927SAndroid Build Coastguard Worker <ins name="ATOM_RETURN.i32" pseudo="true" staging="rw=sr_count" message="atomic" unit="add"> 61*61046927SAndroid Build Coastguard Worker <src start="0"/> 62*61046927SAndroid Build Coastguard Worker <src start="3"/> 63*61046927SAndroid Build Coastguard Worker <mod name="atom_opc" start="9" size="5"> 64*61046927SAndroid Build Coastguard Worker <reserved/> 65*61046927SAndroid Build Coastguard Worker <reserved/> 66*61046927SAndroid Build Coastguard Worker <opt>aadd</opt> 67*61046927SAndroid Build Coastguard Worker <reserved/> 68*61046927SAndroid Build Coastguard Worker <reserved/> 69*61046927SAndroid Build Coastguard Worker <reserved/> 70*61046927SAndroid Build Coastguard Worker <reserved/> 71*61046927SAndroid Build Coastguard Worker <reserved/> 72*61046927SAndroid Build Coastguard Worker <opt>asmin</opt> 73*61046927SAndroid Build Coastguard Worker <opt>asmax</opt> 74*61046927SAndroid Build Coastguard Worker <opt>aumin</opt> 75*61046927SAndroid Build Coastguard Worker <opt>aumax</opt> 76*61046927SAndroid Build Coastguard Worker <opt>aand</opt> 77*61046927SAndroid Build Coastguard Worker <opt>aor</opt> 78*61046927SAndroid Build Coastguard Worker <opt>axor</opt> 79*61046927SAndroid Build Coastguard Worker <opt>axchg</opt> <!-- For Valhall --> 80*61046927SAndroid Build Coastguard Worker <opt>acmpxchg</opt> <!-- For Valhall --> 81*61046927SAndroid Build Coastguard Worker </mod> 82*61046927SAndroid Build Coastguard Worker <!-- not actually encoded, but used for IR --> 83*61046927SAndroid Build Coastguard Worker <immediate name="sr_count" size="4" pseudo="true"/> 84*61046927SAndroid Build Coastguard Worker </ins> 85*61046927SAndroid Build Coastguard Worker 86*61046927SAndroid Build Coastguard Worker <ins name="ATOM1_RETURN.i32" pseudo="true" staging="w=sr_count" message="atomic" unit="add"> 87*61046927SAndroid Build Coastguard Worker <src start="0"/> 88*61046927SAndroid Build Coastguard Worker <src start="3"/> 89*61046927SAndroid Build Coastguard Worker <mod name="atom_opc" start="6" size="3"> 90*61046927SAndroid Build Coastguard Worker <opt>ainc</opt> 91*61046927SAndroid Build Coastguard Worker <opt>adec</opt> 92*61046927SAndroid Build Coastguard Worker <opt>aumax1</opt> 93*61046927SAndroid Build Coastguard Worker <opt>asmax1</opt> 94*61046927SAndroid Build Coastguard Worker <opt>aor1</opt> 95*61046927SAndroid Build Coastguard Worker </mod> 96*61046927SAndroid Build Coastguard Worker <!-- not actually encoded, but used for IR --> 97*61046927SAndroid Build Coastguard Worker <immediate name="sr_count" size="4" pseudo="true"/> 98*61046927SAndroid Build Coastguard Worker </ins> 99*61046927SAndroid Build Coastguard Worker 100*61046927SAndroid Build Coastguard Worker <ins name="ATOM.i32" pseudo="true" staging="r=sr_count" message="atomic" unit="add"> 101*61046927SAndroid Build Coastguard Worker <src start="0"/> 102*61046927SAndroid Build Coastguard Worker <src start="3"/> 103*61046927SAndroid Build Coastguard Worker <mod name="atom_opc" start="9" size="4"> 104*61046927SAndroid Build Coastguard Worker <reserved/> 105*61046927SAndroid Build Coastguard Worker <reserved/> 106*61046927SAndroid Build Coastguard Worker <opt>aadd</opt> 107*61046927SAndroid Build Coastguard Worker <reserved/> 108*61046927SAndroid Build Coastguard Worker <reserved/> 109*61046927SAndroid Build Coastguard Worker <reserved/> 110*61046927SAndroid Build Coastguard Worker <reserved/> 111*61046927SAndroid Build Coastguard Worker <reserved/> 112*61046927SAndroid Build Coastguard Worker <opt>asmin</opt> 113*61046927SAndroid Build Coastguard Worker <opt>asmax</opt> 114*61046927SAndroid Build Coastguard Worker <opt>aumin</opt> 115*61046927SAndroid Build Coastguard Worker <opt>aumax</opt> 116*61046927SAndroid Build Coastguard Worker <opt>aand</opt> 117*61046927SAndroid Build Coastguard Worker <opt>aor</opt> 118*61046927SAndroid Build Coastguard Worker <opt>axor</opt> 119*61046927SAndroid Build Coastguard Worker </mod> 120*61046927SAndroid Build Coastguard Worker <!-- not actually encoded, but used for IR --> 121*61046927SAndroid Build Coastguard Worker <immediate name="sr_count" size="4" pseudo="true"/> 122*61046927SAndroid Build Coastguard Worker </ins> 123*61046927SAndroid Build Coastguard Worker 124*61046927SAndroid Build Coastguard Worker <!-- *CUBEFACE1/+CUBEFACE2 pair, two destinations, scheduler lowered --> 125*61046927SAndroid Build Coastguard Worker <ins name="CUBEFACE" pseudo="true" dests="2" unit="add"> 126*61046927SAndroid Build Coastguard Worker <src start="0"/> 127*61046927SAndroid Build Coastguard Worker <src start="3"/> 128*61046927SAndroid Build Coastguard Worker <src start="6"/> 129*61046927SAndroid Build Coastguard Worker <mod name="neg0" size="1" opt="neg"/> 130*61046927SAndroid Build Coastguard Worker <mod name="neg1" size="1" opt="neg"/> 131*61046927SAndroid Build Coastguard Worker <mod name="neg2" size="1" opt="neg"/> 132*61046927SAndroid Build Coastguard Worker </ins> 133*61046927SAndroid Build Coastguard Worker 134*61046927SAndroid Build Coastguard Worker <ins name="FABSNEG.f32" pseudo="true" unit="fma"> 135*61046927SAndroid Build Coastguard Worker <src start="0" mask="0xfb"/> 136*61046927SAndroid Build Coastguard Worker <mod name="neg0" start="7" size="1" opt="neg"/> 137*61046927SAndroid Build Coastguard Worker <mod name="abs0" start="12" size="1" opt="abs"/> 138*61046927SAndroid Build Coastguard Worker <mod name="widen0" size="2"> 139*61046927SAndroid Build Coastguard Worker <opt>none</opt> 140*61046927SAndroid Build Coastguard Worker <opt>h0</opt> 141*61046927SAndroid Build Coastguard Worker <opt>h1</opt> 142*61046927SAndroid Build Coastguard Worker </mod> 143*61046927SAndroid Build Coastguard Worker </ins> 144*61046927SAndroid Build Coastguard Worker 145*61046927SAndroid Build Coastguard Worker <ins name="FABSNEG.v2f16" pseudo="true" unit="fma"> 146*61046927SAndroid Build Coastguard Worker <src start="0" mask="0xfb"/> 147*61046927SAndroid Build Coastguard Worker <mod name="abs0" size="1" opt="abs"/> 148*61046927SAndroid Build Coastguard Worker <mod name="neg0" start="7" size="1" opt="neg"/> 149*61046927SAndroid Build Coastguard Worker <mod name="swz0" start="9" size="2" default="h01"> 150*61046927SAndroid Build Coastguard Worker <opt>h00</opt> 151*61046927SAndroid Build Coastguard Worker <opt>h10</opt> 152*61046927SAndroid Build Coastguard Worker <opt>h01</opt> 153*61046927SAndroid Build Coastguard Worker <opt>h11</opt> 154*61046927SAndroid Build Coastguard Worker </mod> 155*61046927SAndroid Build Coastguard Worker </ins> 156*61046927SAndroid Build Coastguard Worker 157*61046927SAndroid Build Coastguard Worker <ins name="FCLAMP.f32" pseudo="true" unit="fma"> 158*61046927SAndroid Build Coastguard Worker <src start="0" mask="0xfb"/> 159*61046927SAndroid Build Coastguard Worker <mod name="clamp" start="15" size="2"> 160*61046927SAndroid Build Coastguard Worker <opt>none</opt> 161*61046927SAndroid Build Coastguard Worker <opt>clamp_0_inf</opt> 162*61046927SAndroid Build Coastguard Worker <opt>clamp_m1_1</opt> 163*61046927SAndroid Build Coastguard Worker <opt>clamp_0_1</opt> 164*61046927SAndroid Build Coastguard Worker </mod> 165*61046927SAndroid Build Coastguard Worker </ins> 166*61046927SAndroid Build Coastguard Worker 167*61046927SAndroid Build Coastguard Worker <ins name="FCLAMP.v2f16" pseudo="true" unit="fma"> 168*61046927SAndroid Build Coastguard Worker <src start="0" mask="0xfb"/> 169*61046927SAndroid Build Coastguard Worker <mod name="clamp" start="15" size="2"> 170*61046927SAndroid Build Coastguard Worker <opt>none</opt> 171*61046927SAndroid Build Coastguard Worker <opt>clamp_0_inf</opt> 172*61046927SAndroid Build Coastguard Worker <opt>clamp_m1_1</opt> 173*61046927SAndroid Build Coastguard Worker <opt>clamp_0_1</opt> 174*61046927SAndroid Build Coastguard Worker </mod> 175*61046927SAndroid Build Coastguard Worker </ins> 176*61046927SAndroid Build Coastguard Worker 177*61046927SAndroid Build Coastguard Worker <ins name="DISCARD.b32" pseudo="true" dests="0" unit="add"> 178*61046927SAndroid Build Coastguard Worker <src start="0"/> 179*61046927SAndroid Build Coastguard Worker <mod name="widen0" size="2"> 180*61046927SAndroid Build Coastguard Worker <opt>none</opt> 181*61046927SAndroid Build Coastguard Worker <opt>h0</opt> 182*61046927SAndroid Build Coastguard Worker <opt>h1</opt> 183*61046927SAndroid Build Coastguard Worker </mod> 184*61046927SAndroid Build Coastguard Worker </ins> 185*61046927SAndroid Build Coastguard Worker 186*61046927SAndroid Build Coastguard Worker <ins name="PHI" pseudo="true" variable_srcs="true" unit="add"/> 187*61046927SAndroid Build Coastguard Worker 188*61046927SAndroid Build Coastguard Worker <ins name="COLLECT.i32" pseudo="true" variable_srcs="true" unit="add"/> 189*61046927SAndroid Build Coastguard Worker 190*61046927SAndroid Build Coastguard Worker <ins name="SPLIT.i32" pseudo="true" variable_dests="true" unit="add"> 191*61046927SAndroid Build Coastguard Worker <src start="0"/> 192*61046927SAndroid Build Coastguard Worker </ins> 193*61046927SAndroid Build Coastguard Worker 194*61046927SAndroid Build Coastguard Worker 195*61046927SAndroid Build Coastguard Worker</bifrost> 196