Home | History | Annotate | Line # | Download | only in bifrost
      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 
     32 enum bi_adj {
     33     BI_ADJ_NONE = 0,
     34     BI_ADJ_SMALL = 1,
     35     BI_ADJ_LOW = 2,
     36 };
     37 
     38 enum 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 
     56 enum 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 
     63 enum 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 
     74 enum bi_extend {
     75     BI_EXTEND_NONE = 0,
     76     BI_EXTEND_SEXT = 1,
     77     BI_EXTEND_ZEXT = 2,
     78 };
     79 
     80 enum bi_func {
     81     BI_FUNC_POW = 0,
     82     BI_FUNC_POWR = 1,
     83     BI_FUNC_POWN = 2,
     84     BI_FUNC_ROOTN = 3,
     85 };
     86 
     87 enum bi_function {
     88     BI_FUNCTION_NONE = 1,
     89     BI_FUNCTION_AND = 2,
     90     BI_FUNCTION_OR = 3,
     91 };
     92 
     93 enum 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 
    112 enum 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 
    122 enum 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 
    134 enum 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 
    141 enum 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 
    169 enum bi_mode {
    170     BI_MODE_RED = 0,
    171     BI_MODE_BASE2 = 1,
    172     BI_MODE_NATURAL = 2,
    173 };
    174 
    175 enum 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 
    182 enum bi_precision {
    183     BI_PRECISION_NONE = 0,
    184     BI_PRECISION_HIGH = 1,
    185     BI_PRECISION_LOW = 2,
    186 };
    187 
    188 enum 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 
    200 enum 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 
    208 enum bi_result_type {
    209     BI_RESULT_TYPE_I1 = 0,
    210     BI_RESULT_TYPE_F1 = 1,
    211     BI_RESULT_TYPE_M1 = 2,
    212 };
    213 
    214 enum 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 
    225 enum 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 
    233 enum 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 
    241 enum 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 
    248 enum bi_source {
    249     BI_SOURCE_SYSTEM_TIMESTAMP = 1,
    250     BI_SOURCE_CYCLE_COUNTER = 2,
    251 };
    252 
    253 enum bi_special {
    254     BI_SPECIAL_NONE = 0,
    255     BI_SPECIAL_N = 1,
    256     BI_SPECIAL_LEFT = 2,
    257     BI_SPECIAL_SCALE16 = 3,
    258 };
    259 
    260 enum 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 
    267 enum bi_subgroup {
    268     BI_SUBGROUP_SUBGROUP2 = 0,
    269     BI_SUBGROUP_SUBGROUP4 = 1,
    270     BI_SUBGROUP_SUBGROUP8 = 2,
    271 };
    272 
    273 enum 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 
    304 enum 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 
    311 enum bi_update {
    312     BI_UPDATE_STORE = 0,
    313     BI_UPDATE_RETRIEVE = 1,
    314     BI_UPDATE_CONDITIONAL = 2,
    315     BI_UPDATE_CLOBBER = 3,
    316 };
    317 
    318 enum 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 
    324 enum bi_vecsize {
    325     BI_VECSIZE_NONE = 0,
    326     BI_VECSIZE_V2 = 1,
    327     BI_VECSIZE_V3 = 2,
    328     BI_VECSIZE_V4 = 3,
    329 };
    330 
    331 enum 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 
    341 enum 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 
    633 enum 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 
    651 enum 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 */
    663 struct 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 */
    686 extern struct bi_op_props bi_opcode_props[BI_NUM_OPCODES];
    687 
    688 #endif
    689 
    690