1/*
2 * Copyright (C) 2020 Collabora, Ltd.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 * SOFTWARE.
22 */
23
24/* Autogenerated file, do not edit */
25
26
27#ifndef _BI_OPCODES_H_
28#define _BI_OPCODES_H_
29
30#include "bifrost.h"
31
32enum bi_adj {
33    BI_ADJ_NONE = 0,
34    BI_ADJ_SMALL = 1,
35    BI_ADJ_LOW = 2,
36};
37
38enum bi_atom_opc {
39    BI_ATOM_OPC_AADD = 1,
40    BI_ATOM_OPC_ASMIN = 2,
41    BI_ATOM_OPC_ASMAX = 3,
42    BI_ATOM_OPC_AUMIN = 4,
43    BI_ATOM_OPC_AUMAX = 5,
44    BI_ATOM_OPC_AAND = 6,
45    BI_ATOM_OPC_AOR = 7,
46    BI_ATOM_OPC_AXOR = 8,
47    BI_ATOM_OPC_AADDU = 9,
48    BI_ATOM_OPC_AADDS = 10,
49    BI_ATOM_OPC_AINC = 11,
50    BI_ATOM_OPC_ADEC = 12,
51    BI_ATOM_OPC_AUMAX1 = 13,
52    BI_ATOM_OPC_ASMAX1 = 14,
53    BI_ATOM_OPC_AOR1 = 15,
54};
55
56enum bi_clamp {
57    BI_CLAMP_NONE = 0,
58    BI_CLAMP_CLAMP_0_INF = 1,
59    BI_CLAMP_CLAMP_M1_1 = 2,
60    BI_CLAMP_CLAMP_0_1 = 3,
61};
62
63enum bi_cmpf {
64    BI_CMPF_EQ = 0,
65    BI_CMPF_GT = 1,
66    BI_CMPF_GE = 2,
67    BI_CMPF_NE = 3,
68    BI_CMPF_LT = 4,
69    BI_CMPF_LE = 5,
70    BI_CMPF_GTLT = 7,
71    BI_CMPF_TOTAL = 8,
72};
73
74enum bi_extend {
75    BI_EXTEND_NONE = 0,
76    BI_EXTEND_SEXT = 1,
77    BI_EXTEND_ZEXT = 2,
78};
79
80enum bi_func {
81    BI_FUNC_POW = 0,
82    BI_FUNC_POWR = 1,
83    BI_FUNC_POWN = 2,
84    BI_FUNC_ROOTN = 3,
85};
86
87enum bi_function {
88    BI_FUNCTION_NONE = 1,
89    BI_FUNCTION_AND = 2,
90    BI_FUNCTION_OR = 3,
91};
92
93enum bi_inactive_result {
94    BI_INACTIVE_RESULT_ZERO = 0,
95    BI_INACTIVE_RESULT_UMAX = 1,
96    BI_INACTIVE_RESULT_I1 = 2,
97    BI_INACTIVE_RESULT_V2I1 = 3,
98    BI_INACTIVE_RESULT_SMIN = 4,
99    BI_INACTIVE_RESULT_SMAX = 5,
100    BI_INACTIVE_RESULT_V2SMIN = 6,
101    BI_INACTIVE_RESULT_V2SMAX = 7,
102    BI_INACTIVE_RESULT_V4SMIN = 8,
103    BI_INACTIVE_RESULT_V4SMAX = 9,
104    BI_INACTIVE_RESULT_F1 = 10,
105    BI_INACTIVE_RESULT_V2F1 = 11,
106    BI_INACTIVE_RESULT_INFN = 12,
107    BI_INACTIVE_RESULT_INF = 13,
108    BI_INACTIVE_RESULT_V2INFN = 14,
109    BI_INACTIVE_RESULT_V2INF = 15,
110};
111
112enum bi_lane {
113    BI_LANE_B0 = 0,
114    BI_LANE_B1 = 1,
115    BI_LANE_B2 = 2,
116    BI_LANE_B3 = 3,
117    BI_LANE_H0 = 4,
118    BI_LANE_H1 = 5,
119    BI_LANE_NONE = 6,
120};
121
122enum bi_lane_dest {
123    BI_LANE_DEST_H0 = 0,
124    BI_LANE_DEST_H1 = 1,
125    BI_LANE_DEST_W0 = 2,
126    BI_LANE_DEST_D0 = 3,
127    BI_LANE_DEST_NONE = 4,
128    BI_LANE_DEST_B0 = 5,
129    BI_LANE_DEST_B1 = 6,
130    BI_LANE_DEST_B2 = 7,
131    BI_LANE_DEST_B3 = 8,
132};
133
134enum bi_lane_op {
135    BI_LANE_OP_NONE = 0,
136    BI_LANE_OP_XOR = 1,
137    BI_LANE_OP_ACCUMULATE = 2,
138    BI_LANE_OP_SHIFT = 3,
139};
140
141enum bi_lanes {
142    BI_LANES_B00 = 0,
143    BI_LANES_B11 = 1,
144    BI_LANES_B22 = 2,
145    BI_LANES_B33 = 3,
146    BI_LANES_B01 = 4,
147    BI_LANES_B23 = 5,
148    BI_LANES_B02 = 6,
149    BI_LANES_B0123 = 8,
150    BI_LANES_B0000 = 9,
151    BI_LANES_B1111 = 10,
152    BI_LANES_B2222 = 11,
153    BI_LANES_B3333 = 12,
154    BI_LANES_NONE = 13,
155    BI_LANES_H0 = 14,
156    BI_LANES_H1 = 15,
157    BI_LANES_B0 = 16,
158    BI_LANES_B1 = 17,
159    BI_LANES_B2 = 18,
160    BI_LANES_B3 = 19,
161    BI_LANES_H01 = 20,
162    BI_LANES_H10 = 21,
163    BI_LANES_H00 = 22,
164    BI_LANES_H11 = 23,
165    BI_LANES_B0101 = 24,
166    BI_LANES_B2323 = 25,
167};
168
169enum bi_mode {
170    BI_MODE_RED = 0,
171    BI_MODE_BASE2 = 1,
172    BI_MODE_NATURAL = 2,
173};
174
175enum bi_mux {
176    BI_MUX_NEG = 0,
177    BI_MUX_INT_ZERO = 1,
178    BI_MUX_FP_ZERO = 2,
179    BI_MUX_BIT = 3,
180};
181
182enum bi_precision {
183    BI_PRECISION_NONE = 0,
184    BI_PRECISION_HIGH = 1,
185    BI_PRECISION_LOW = 2,
186};
187
188enum bi_register_format {
189    BI_REGISTER_FORMAT_F16 = 0,
190    BI_REGISTER_FORMAT_F32 = 1,
191    BI_REGISTER_FORMAT_S32 = 2,
192    BI_REGISTER_FORMAT_U32 = 3,
193    BI_REGISTER_FORMAT_S16 = 4,
194    BI_REGISTER_FORMAT_U16 = 5,
195    BI_REGISTER_FORMAT_F64 = 6,
196    BI_REGISTER_FORMAT_I64 = 7,
197    BI_REGISTER_FORMAT_AUTO = 8,
198};
199
200enum bi_replicate {
201    BI_REPLICATE_B0123 = 0,
202    BI_REPLICATE_B0000 = 2,
203    BI_REPLICATE_B1111 = 3,
204    BI_REPLICATE_B2222 = 4,
205    BI_REPLICATE_B3333 = 5,
206};
207
208enum bi_result_type {
209    BI_RESULT_TYPE_I1 = 0,
210    BI_RESULT_TYPE_F1 = 1,
211    BI_RESULT_TYPE_M1 = 2,
212};
213
214enum bi_round {
215    BI_ROUND_NONE = 0,
216    BI_ROUND_RTP = 1,
217    BI_ROUND_RTN = 2,
218    BI_ROUND_RTZ = 3,
219    BI_ROUND_RTNA = 4,
220    BI_ROUND_RTO = 6,
221    BI_ROUND_INF = 7,
222    BI_ROUND_INF0 = 8,
223};
224
225enum bi_sample {
226    BI_SAMPLE_CENTER = 0,
227    BI_SAMPLE_CENTROID = 1,
228    BI_SAMPLE_SAMPLE = 2,
229    BI_SAMPLE_EXPLICIT = 3,
230    BI_SAMPLE_NONE = 4,
231};
232
233enum bi_seg {
234    BI_SEG_NONE = 0,
235    BI_SEG_WLS = 1,
236    BI_SEG_STREAM = 3,
237    BI_SEG_UBO = 4,
238    BI_SEG_TL = 5,
239};
240
241enum bi_sem {
242    BI_SEM_NAN_SUPPRESS = 0,
243    BI_SEM_NAN_PROPAGATE = 1,
244    BI_SEM_C = 2,
245    BI_SEM_INVERSE_C = 3,
246};
247
248enum bi_source {
249    BI_SOURCE_SYSTEM_TIMESTAMP = 1,
250    BI_SOURCE_CYCLE_COUNTER = 2,
251};
252
253enum bi_special {
254    BI_SPECIAL_NONE = 0,
255    BI_SPECIAL_N = 1,
256    BI_SPECIAL_LEFT = 2,
257    BI_SPECIAL_SCALE16 = 3,
258};
259
260enum bi_stack_mode {
261    BI_STACK_MODE_RETURN = 0,
262    BI_STACK_MODE_CALL = 1,
263    BI_STACK_MODE_NONE = 2,
264    BI_STACK_MODE_REPLACE = 3,
265};
266
267enum bi_subgroup {
268    BI_SUBGROUP_SUBGROUP2 = 0,
269    BI_SUBGROUP_SUBGROUP4 = 1,
270    BI_SUBGROUP_SUBGROUP8 = 2,
271};
272
273enum bi_swz {
274    BI_SWZ_H00 = 0,
275    BI_SWZ_H10 = 1,
276    BI_SWZ_H01 = 2,
277    BI_SWZ_H11 = 3,
278    BI_SWZ_B0000 = 5,
279    BI_SWZ_B1111 = 6,
280    BI_SWZ_B2222 = 7,
281    BI_SWZ_B3333 = 8,
282    BI_SWZ_B0011 = 9,
283    BI_SWZ_B2233 = 10,
284    BI_SWZ_B1032 = 11,
285    BI_SWZ_B3210 = 12,
286    BI_SWZ_B00 = 13,
287    BI_SWZ_B10 = 14,
288    BI_SWZ_B20 = 15,
289    BI_SWZ_B30 = 16,
290    BI_SWZ_B01 = 17,
291    BI_SWZ_B11 = 18,
292    BI_SWZ_B21 = 19,
293    BI_SWZ_B31 = 20,
294    BI_SWZ_B02 = 21,
295    BI_SWZ_B12 = 22,
296    BI_SWZ_B22 = 23,
297    BI_SWZ_B32 = 24,
298    BI_SWZ_B03 = 25,
299    BI_SWZ_B13 = 26,
300    BI_SWZ_B23 = 27,
301    BI_SWZ_B33 = 28,
302};
303
304enum bi_table {
305    BI_TABLE_NONE = 0,
306    BI_TABLE_ATTRIBUTE_2 = 1,
307    BI_TABLE_ATTRIBUTE_1 = 2,
308    BI_TABLE_FLAT = 3,
309};
310
311enum bi_update {
312    BI_UPDATE_STORE = 0,
313    BI_UPDATE_RETRIEVE = 1,
314    BI_UPDATE_CONDITIONAL = 2,
315    BI_UPDATE_CLOBBER = 3,
316};
317
318enum bi_varying_name {
319    BI_VARYING_NAME_POINT = 0,
320    BI_VARYING_NAME_FRAG_W = 2,
321    BI_VARYING_NAME_FRAG_Z = 3,
322};
323
324enum bi_vecsize {
325    BI_VECSIZE_NONE = 0,
326    BI_VECSIZE_V2 = 1,
327    BI_VECSIZE_V3 = 2,
328    BI_VECSIZE_V4 = 3,
329};
330
331enum bi_widen {
332    BI_WIDEN_NONE = 1,
333    BI_WIDEN_H0 = 2,
334    BI_WIDEN_H1 = 3,
335    BI_WIDEN_B0 = 4,
336    BI_WIDEN_B1 = 5,
337    BI_WIDEN_B2 = 6,
338    BI_WIDEN_B3 = 7,
339};
340
341enum bi_opcode {
342    BI_OPCODE_ACMPSTORE_I32,
343    BI_OPCODE_ACMPSTORE_I64,
344    BI_OPCODE_ACMPXCHG_I32,
345    BI_OPCODE_ACMPXCHG_I64,
346    BI_OPCODE_ARSHIFT_I32,
347    BI_OPCODE_ARSHIFT_V2I16,
348    BI_OPCODE_ARSHIFT_V4I8,
349    BI_OPCODE_ARSHIFT_DOUBLE_I32,
350    BI_OPCODE_ATEST,
351    BI_OPCODE_ATOM_C_I32,
352    BI_OPCODE_ATOM_C_I64,
353    BI_OPCODE_ATOM_C1_I32,
354    BI_OPCODE_ATOM_C1_I64,
355    BI_OPCODE_ATOM_C1_RETURN_I32,
356    BI_OPCODE_ATOM_C1_RETURN_I64,
357    BI_OPCODE_ATOM_CX,
358    BI_OPCODE_ATOM_C_RETURN_I32,
359    BI_OPCODE_ATOM_C_RETURN_I64,
360    BI_OPCODE_ATOM_POST_I32,
361    BI_OPCODE_ATOM_POST_I64,
362    BI_OPCODE_ATOM_PRE_I64,
363    BI_OPCODE_AXCHG_I32,
364    BI_OPCODE_AXCHG_I64,
365    BI_OPCODE_BARRIER,
366    BI_OPCODE_BITREV_I32,
367    BI_OPCODE_BLEND,
368    BI_OPCODE_BRANCH_F16,
369    BI_OPCODE_BRANCH_F32,
370    BI_OPCODE_BRANCH_I16,
371    BI_OPCODE_BRANCH_I32,
372    BI_OPCODE_BRANCH_S16,
373    BI_OPCODE_BRANCH_S32,
374    BI_OPCODE_BRANCH_U16,
375    BI_OPCODE_BRANCH_U32,
376    BI_OPCODE_BRANCHC_I16,
377    BI_OPCODE_BRANCHC_I32,
378    BI_OPCODE_BRANCHZ_F16,
379    BI_OPCODE_BRANCHZ_F32,
380    BI_OPCODE_BRANCHZ_I16,
381    BI_OPCODE_BRANCHZ_I32,
382    BI_OPCODE_BRANCHZ_S16,
383    BI_OPCODE_BRANCHZ_S32,
384    BI_OPCODE_BRANCHZ_U16,
385    BI_OPCODE_BRANCHZ_U32,
386    BI_OPCODE_BRANCH_DIVERG,
387    BI_OPCODE_BRANCH_LOWBITS_F32,
388    BI_OPCODE_BRANCH_NO_DIVERG,
389    BI_OPCODE_CLPER_I32,
390    BI_OPCODE_CLPER_V6_I32,
391    BI_OPCODE_CLZ_U32,
392    BI_OPCODE_CLZ_V2U16,
393    BI_OPCODE_CLZ_V4U8,
394    BI_OPCODE_CSEL_F32,
395    BI_OPCODE_CSEL_I32,
396    BI_OPCODE_CSEL_S32,
397    BI_OPCODE_CSEL_U32,
398    BI_OPCODE_CSEL_V2F16,
399    BI_OPCODE_CSEL_V2I16,
400    BI_OPCODE_CSEL_V2S16,
401    BI_OPCODE_CSEL_V2U16,
402    BI_OPCODE_CUBEFACE,
403    BI_OPCODE_CUBEFACE1,
404    BI_OPCODE_CUBEFACE2,
405    BI_OPCODE_CUBE_SSEL,
406    BI_OPCODE_CUBE_TSEL,
407    BI_OPCODE_DISCARD_B32,
408    BI_OPCODE_DISCARD_F32,
409    BI_OPCODE_DTSEL_IMM,
410    BI_OPCODE_F16_TO_F32,
411    BI_OPCODE_F16_TO_S32,
412    BI_OPCODE_F16_TO_U32,
413    BI_OPCODE_F32_TO_S32,
414    BI_OPCODE_F32_TO_U32,
415    BI_OPCODE_FABSNEG_F32,
416    BI_OPCODE_FABSNEG_V2F16,
417    BI_OPCODE_FADD_F32,
418    BI_OPCODE_FADD_V2F16,
419    BI_OPCODE_FADD_IMM_F32,
420    BI_OPCODE_FADD_IMM_V2F16,
421    BI_OPCODE_FADD_LSCALE_F32,
422    BI_OPCODE_FADD_RSCALE_F32,
423    BI_OPCODE_FCLAMP_F32,
424    BI_OPCODE_FCLAMP_V2F16,
425    BI_OPCODE_FCMP_F32,
426    BI_OPCODE_FCMP_V2F16,
427    BI_OPCODE_FCOS_TABLE_U6,
428    BI_OPCODE_FEXP_F32,
429    BI_OPCODE_FEXP_TABLE_U4,
430    BI_OPCODE_FLOGD_F32,
431    BI_OPCODE_FLOG_TABLE_F32,
432    BI_OPCODE_FLSHIFT_DOUBLE_I32,
433    BI_OPCODE_FMA_F32,
434    BI_OPCODE_FMA_V2F16,
435    BI_OPCODE_FMAX_F32,
436    BI_OPCODE_FMAX_V2F16,
437    BI_OPCODE_FMA_RSCALE_F32,
438    BI_OPCODE_FMA_RSCALE_V2F16,
439    BI_OPCODE_FMIN_F32,
440    BI_OPCODE_FMIN_V2F16,
441    BI_OPCODE_FMUL_CSLICE,
442    BI_OPCODE_FMUL_SLICE_F32,
443    BI_OPCODE_FPCLASS_F16,
444    BI_OPCODE_FPCLASS_F32,
445    BI_OPCODE_FPOW_SC_APPLY,
446    BI_OPCODE_FPOW_SC_DET_F16,
447    BI_OPCODE_FPOW_SC_DET_F32,
448    BI_OPCODE_FRCP_F16,
449    BI_OPCODE_FRCP_F32,
450    BI_OPCODE_FRCP_APPROX_F32,
451    BI_OPCODE_FREXPE_F32,
452    BI_OPCODE_FREXPE_V2F16,
453    BI_OPCODE_FREXPM_F32,
454    BI_OPCODE_FREXPM_V2F16,
455    BI_OPCODE_FROUND_F32,
456    BI_OPCODE_FROUND_V2F16,
457    BI_OPCODE_FRSCALE_F32,
458    BI_OPCODE_FRSCALE_V2F16,
459    BI_OPCODE_FRSHIFT_DOUBLE_I32,
460    BI_OPCODE_FRSQ_F16,
461    BI_OPCODE_FRSQ_F32,
462    BI_OPCODE_FRSQ_APPROX_F32,
463    BI_OPCODE_FSINCOS_OFFSET_U6,
464    BI_OPCODE_FSIN_TABLE_U6,
465    BI_OPCODE_HADD_S32,
466    BI_OPCODE_HADD_U32,
467    BI_OPCODE_HADD_V2S16,
468    BI_OPCODE_HADD_V2U16,
469    BI_OPCODE_HADD_V4S8,
470    BI_OPCODE_HADD_V4U8,
471    BI_OPCODE_IABS_S32,
472    BI_OPCODE_IABS_V2S16,
473    BI_OPCODE_IABS_V4S8,
474    BI_OPCODE_IADD_S32,
475    BI_OPCODE_IADD_U32,
476    BI_OPCODE_IADD_V2S16,
477    BI_OPCODE_IADD_V2U16,
478    BI_OPCODE_IADD_V4S8,
479    BI_OPCODE_IADD_V4U8,
480    BI_OPCODE_IADDC_I32,
481    BI_OPCODE_IADD_IMM_I32,
482    BI_OPCODE_IADD_IMM_V2I16,
483    BI_OPCODE_IADD_IMM_V4I8,
484    BI_OPCODE_ICMP_I32,
485    BI_OPCODE_ICMP_S32,
486    BI_OPCODE_ICMP_U32,
487    BI_OPCODE_ICMP_V2I16,
488    BI_OPCODE_ICMP_V2S16,
489    BI_OPCODE_ICMP_V2U16,
490    BI_OPCODE_ICMP_V4I8,
491    BI_OPCODE_ICMP_V4S8,
492    BI_OPCODE_ICMP_V4U8,
493    BI_OPCODE_ICMPF_I32,
494    BI_OPCODE_ICMPI_I32,
495    BI_OPCODE_ICMPI_S32,
496    BI_OPCODE_ICMPI_U32,
497    BI_OPCODE_ICMPM_I32,
498    BI_OPCODE_IDP_V4I8,
499    BI_OPCODE_ILOGB_F32,
500    BI_OPCODE_ILOGB_V2F16,
501    BI_OPCODE_IMOV_FMA,
502    BI_OPCODE_IMUL_I32,
503    BI_OPCODE_IMUL_V2I16,
504    BI_OPCODE_IMUL_V4I8,
505    BI_OPCODE_IMULD,
506    BI_OPCODE_ISUB_S32,
507    BI_OPCODE_ISUB_U32,
508    BI_OPCODE_ISUB_V2S16,
509    BI_OPCODE_ISUB_V2U16,
510    BI_OPCODE_ISUB_V4S8,
511    BI_OPCODE_ISUB_V4U8,
512    BI_OPCODE_ISUBB_I32,
513    BI_OPCODE_JUMP,
514    BI_OPCODE_JUMP_EX,
515    BI_OPCODE_LDEXP_F32,
516    BI_OPCODE_LDEXP_V2F16,
517    BI_OPCODE_LD_ATTR,
518    BI_OPCODE_LD_ATTR_IMM,
519    BI_OPCODE_LD_ATTR_TEX,
520    BI_OPCODE_LD_CVT,
521    BI_OPCODE_LD_GCLK_U64,
522    BI_OPCODE_LD_TILE,
523    BI_OPCODE_LD_VAR,
524    BI_OPCODE_LD_VAR_FLAT,
525    BI_OPCODE_LD_VAR_FLAT_IMM,
526    BI_OPCODE_LD_VAR_IMM,
527    BI_OPCODE_LD_VAR_SPECIAL,
528    BI_OPCODE_LEA_ATTR,
529    BI_OPCODE_LEA_ATTR_IMM,
530    BI_OPCODE_LEA_ATTR_TEX,
531    BI_OPCODE_LEA_TEX,
532    BI_OPCODE_LEA_TEX_IMM,
533    BI_OPCODE_LOAD_I128,
534    BI_OPCODE_LOAD_I16,
535    BI_OPCODE_LOAD_I24,
536    BI_OPCODE_LOAD_I32,
537    BI_OPCODE_LOAD_I48,
538    BI_OPCODE_LOAD_I64,
539    BI_OPCODE_LOAD_I8,
540    BI_OPCODE_LOAD_I96,
541    BI_OPCODE_LOGB_F32,
542    BI_OPCODE_LOGB_V2F16,
543    BI_OPCODE_LROT_DOUBLE_I32,
544    BI_OPCODE_LSHIFT_AND_I32,
545    BI_OPCODE_LSHIFT_AND_V2I16,
546    BI_OPCODE_LSHIFT_AND_V4I8,
547    BI_OPCODE_LSHIFT_DOUBLE_I32,
548    BI_OPCODE_LSHIFT_OR_I32,
549    BI_OPCODE_LSHIFT_OR_V2I16,
550    BI_OPCODE_LSHIFT_OR_V4I8,
551    BI_OPCODE_LSHIFT_XOR_I32,
552    BI_OPCODE_LSHIFT_XOR_V2I16,
553    BI_OPCODE_LSHIFT_XOR_V4I8,
554    BI_OPCODE_MKVEC_V2I16,
555    BI_OPCODE_MKVEC_V4I8,
556    BI_OPCODE_MOV_I32,
557    BI_OPCODE_MUX_I32,
558    BI_OPCODE_MUX_V2I16,
559    BI_OPCODE_MUX_V4I8,
560    BI_OPCODE_NOP,
561    BI_OPCODE_PATOM_C_I32,
562    BI_OPCODE_PATOM_C1_I32,
563    BI_OPCODE_POPCOUNT_I32,
564    BI_OPCODE_QUIET_F32,
565    BI_OPCODE_QUIET_V2F16,
566    BI_OPCODE_RROT_DOUBLE_I32,
567    BI_OPCODE_RSHIFT_AND_I32,
568    BI_OPCODE_RSHIFT_AND_V2I16,
569    BI_OPCODE_RSHIFT_AND_V4I8,
570    BI_OPCODE_RSHIFT_DOUBLE_I32,
571    BI_OPCODE_RSHIFT_OR_I32,
572    BI_OPCODE_RSHIFT_OR_V2I16,
573    BI_OPCODE_RSHIFT_OR_V4I8,
574    BI_OPCODE_RSHIFT_XOR_I32,
575    BI_OPCODE_RSHIFT_XOR_V2I16,
576    BI_OPCODE_RSHIFT_XOR_V4I8,
577    BI_OPCODE_S16_TO_F32,
578    BI_OPCODE_S16_TO_S32,
579    BI_OPCODE_S32_TO_F32,
580    BI_OPCODE_S8_TO_F32,
581    BI_OPCODE_S8_TO_S32,
582    BI_OPCODE_SEG_ADD,
583    BI_OPCODE_SEG_ADD_I64,
584    BI_OPCODE_SHADDXH_I32,
585    BI_OPCODE_SHADDXL_I64,
586    BI_OPCODE_SHADDXL_S32,
587    BI_OPCODE_SHADDXL_U32,
588    BI_OPCODE_SHIFT_DOUBLE_I32,
589    BI_OPCODE_STORE_I128,
590    BI_OPCODE_STORE_I16,
591    BI_OPCODE_STORE_I24,
592    BI_OPCODE_STORE_I32,
593    BI_OPCODE_STORE_I48,
594    BI_OPCODE_STORE_I64,
595    BI_OPCODE_STORE_I8,
596    BI_OPCODE_STORE_I96,
597    BI_OPCODE_ST_CVT,
598    BI_OPCODE_ST_TILE,
599    BI_OPCODE_SWZ_V2I16,
600    BI_OPCODE_SWZ_V4I8,
601    BI_OPCODE_TEXC,
602    BI_OPCODE_TEXS_2D_F16,
603    BI_OPCODE_TEXS_2D_F32,
604    BI_OPCODE_TEXS_CUBE_F16,
605    BI_OPCODE_TEXS_CUBE_F32,
606    BI_OPCODE_U16_TO_F32,
607    BI_OPCODE_U16_TO_U32,
608    BI_OPCODE_U32_TO_F32,
609    BI_OPCODE_U8_TO_F32,
610    BI_OPCODE_U8_TO_U32,
611    BI_OPCODE_V2F16_TO_V2S16,
612    BI_OPCODE_V2F16_TO_V2U16,
613    BI_OPCODE_V2F32_TO_V2F16,
614    BI_OPCODE_V2S16_TO_V2F16,
615    BI_OPCODE_V2S8_TO_V2F16,
616    BI_OPCODE_V2S8_TO_V2S16,
617    BI_OPCODE_V2U16_TO_V2F16,
618    BI_OPCODE_V2U8_TO_V2F16,
619    BI_OPCODE_V2U8_TO_V2U16,
620    BI_OPCODE_VAR_TEX_F16,
621    BI_OPCODE_VAR_TEX_F32,
622    BI_OPCODE_VN_ASST1_F16,
623    BI_OPCODE_VN_ASST1_F32,
624    BI_OPCODE_VN_ASST2_F32,
625    BI_OPCODE_VN_ASST2_V2F16,
626    BI_OPCODE_WMASK,
627    BI_OPCODE_ZS_EMIT,
628    BI_NUM_OPCODES
629};
630
631/* Number of staging registers accessed, note this fits into 3-bits */
632
633enum bi_sr_count {
634    /* fixed counts */
635    BI_SR_COUNT_0 = 0,
636    BI_SR_COUNT_1 = 1,
637    BI_SR_COUNT_2 = 2,
638    BI_SR_COUNT_3 = 3,
639    BI_SR_COUNT_4 = 4,
640
641    /* derived from register_format and vecsize */
642    BI_SR_COUNT_FORMAT = 5,
643
644    /* equal to vecsize alone */
645    BI_SR_COUNT_VECSIZE = 6,
646
647    /* specified directly as the sr_count immediate */
648    BI_SR_COUNT_SR_COUNT = 7
649};
650
651enum bi_size {
652   BI_SIZE_8 = 0,
653   BI_SIZE_16,
654   BI_SIZE_24,
655   BI_SIZE_32,
656   BI_SIZE_48,
657   BI_SIZE_64,
658   BI_SIZE_96,
659   BI_SIZE_128,
660};
661
662/* Description of an opcode in the IR */
663struct bi_op_props {
664        const char *name;
665
666        enum bifrost_message_type message : 4;
667        enum bi_size size : 3;
668        enum bi_sr_count sr_count : 3;
669        bool sr_read : 1;
670        bool sr_write : 1;
671        bool last : 1;
672        bool branch : 1;
673        bool table : 1;
674        bool fma : 1;
675        bool add : 1;
676
677        /* Supported propagable modifiers */
678        bool clamp : 1;
679        bool not_result : 1;
680        unsigned abs : 3;
681        unsigned neg : 3;
682        bool not : 1;
683};
684
685/* Generated in bi_opcodes.c.py */
686extern struct bi_op_props bi_opcode_props[BI_NUM_OPCODES];
687
688#endif
689
690