xref: /aosp_15_r20/external/mesa3d/src/panfrost/compiler/IR_pseudo.xml (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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