Home | History | Annotate | Line # | Download | only in nir
      1 /* Copyright (C) 2014 Connor Abbott
      2  *
      3  * Permission is hereby granted, free of charge, to any person obtaining a
      4  * copy of this software and associated documentation files (the "Software"),
      5  * to deal in the Software without restriction, including without limitation
      6  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      7  * and/or sell copies of the Software, and to permit persons to whom the
      8  * Software is furnished to do so, subject to the following conditions:
      9  *
     10  * The above copyright notice and this permission notice (including the next
     11  * paragraph) shall be included in all copies or substantial portions of the
     12  * Software.
     13  *
     14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
     20  * IN THE SOFTWARE.
     21  *
     22  * Authors:
     23  *    Connor Abbott (cwabbott0 (at) gmail.com)
     24  */
     25 
     26 #ifndef _NIR_OPCODES_
     27 #define _NIR_OPCODES_
     28 
     29 
     30 
     31 typedef enum {
     32    nir_op_amul,
     33    nir_op_b16all_fequal16,
     34    nir_op_b16all_fequal2,
     35    nir_op_b16all_fequal3,
     36    nir_op_b16all_fequal4,
     37    nir_op_b16all_fequal5,
     38    nir_op_b16all_fequal8,
     39    nir_op_b16all_iequal16,
     40    nir_op_b16all_iequal2,
     41    nir_op_b16all_iequal3,
     42    nir_op_b16all_iequal4,
     43    nir_op_b16all_iequal5,
     44    nir_op_b16all_iequal8,
     45    nir_op_b16any_fnequal16,
     46    nir_op_b16any_fnequal2,
     47    nir_op_b16any_fnequal3,
     48    nir_op_b16any_fnequal4,
     49    nir_op_b16any_fnequal5,
     50    nir_op_b16any_fnequal8,
     51    nir_op_b16any_inequal16,
     52    nir_op_b16any_inequal2,
     53    nir_op_b16any_inequal3,
     54    nir_op_b16any_inequal4,
     55    nir_op_b16any_inequal5,
     56    nir_op_b16any_inequal8,
     57    nir_op_b16csel,
     58    nir_op_b2b1,
     59    nir_op_b2b16,
     60    nir_op_b2b32,
     61    nir_op_b2b8,
     62    nir_op_b2f16,
     63    nir_op_b2f32,
     64    nir_op_b2f64,
     65    nir_op_b2i1,
     66    nir_op_b2i16,
     67    nir_op_b2i32,
     68    nir_op_b2i64,
     69    nir_op_b2i8,
     70    nir_op_b32all_fequal16,
     71    nir_op_b32all_fequal2,
     72    nir_op_b32all_fequal3,
     73    nir_op_b32all_fequal4,
     74    nir_op_b32all_fequal5,
     75    nir_op_b32all_fequal8,
     76    nir_op_b32all_iequal16,
     77    nir_op_b32all_iequal2,
     78    nir_op_b32all_iequal3,
     79    nir_op_b32all_iequal4,
     80    nir_op_b32all_iequal5,
     81    nir_op_b32all_iequal8,
     82    nir_op_b32any_fnequal16,
     83    nir_op_b32any_fnequal2,
     84    nir_op_b32any_fnequal3,
     85    nir_op_b32any_fnequal4,
     86    nir_op_b32any_fnequal5,
     87    nir_op_b32any_fnequal8,
     88    nir_op_b32any_inequal16,
     89    nir_op_b32any_inequal2,
     90    nir_op_b32any_inequal3,
     91    nir_op_b32any_inequal4,
     92    nir_op_b32any_inequal5,
     93    nir_op_b32any_inequal8,
     94    nir_op_b32csel,
     95    nir_op_b8all_fequal16,
     96    nir_op_b8all_fequal2,
     97    nir_op_b8all_fequal3,
     98    nir_op_b8all_fequal4,
     99    nir_op_b8all_fequal5,
    100    nir_op_b8all_fequal8,
    101    nir_op_b8all_iequal16,
    102    nir_op_b8all_iequal2,
    103    nir_op_b8all_iequal3,
    104    nir_op_b8all_iequal4,
    105    nir_op_b8all_iequal5,
    106    nir_op_b8all_iequal8,
    107    nir_op_b8any_fnequal16,
    108    nir_op_b8any_fnequal2,
    109    nir_op_b8any_fnequal3,
    110    nir_op_b8any_fnequal4,
    111    nir_op_b8any_fnequal5,
    112    nir_op_b8any_fnequal8,
    113    nir_op_b8any_inequal16,
    114    nir_op_b8any_inequal2,
    115    nir_op_b8any_inequal3,
    116    nir_op_b8any_inequal4,
    117    nir_op_b8any_inequal5,
    118    nir_op_b8any_inequal8,
    119    nir_op_b8csel,
    120    nir_op_ball_fequal16,
    121    nir_op_ball_fequal2,
    122    nir_op_ball_fequal3,
    123    nir_op_ball_fequal4,
    124    nir_op_ball_fequal5,
    125    nir_op_ball_fequal8,
    126    nir_op_ball_iequal16,
    127    nir_op_ball_iequal2,
    128    nir_op_ball_iequal3,
    129    nir_op_ball_iequal4,
    130    nir_op_ball_iequal5,
    131    nir_op_ball_iequal8,
    132    nir_op_bany_fnequal16,
    133    nir_op_bany_fnequal2,
    134    nir_op_bany_fnequal3,
    135    nir_op_bany_fnequal4,
    136    nir_op_bany_fnequal5,
    137    nir_op_bany_fnequal8,
    138    nir_op_bany_inequal16,
    139    nir_op_bany_inequal2,
    140    nir_op_bany_inequal3,
    141    nir_op_bany_inequal4,
    142    nir_op_bany_inequal5,
    143    nir_op_bany_inequal8,
    144    nir_op_bcsel,
    145    nir_op_bfi,
    146    nir_op_bfm,
    147    nir_op_bit_count,
    148    nir_op_bitfield_insert,
    149    nir_op_bitfield_reverse,
    150    nir_op_bitfield_select,
    151    nir_op_cube_face_coord_amd,
    152    nir_op_cube_face_index_amd,
    153    nir_op_cube_r600,
    154    nir_op_extract_i16,
    155    nir_op_extract_i8,
    156    nir_op_extract_u16,
    157    nir_op_extract_u8,
    158    nir_op_f2b1,
    159    nir_op_f2b16,
    160    nir_op_f2b32,
    161    nir_op_f2b8,
    162    nir_op_f2f16,
    163    nir_op_f2f16_rtne,
    164    nir_op_f2f16_rtz,
    165    nir_op_f2f32,
    166    nir_op_f2f64,
    167    nir_op_f2fmp,
    168    nir_op_f2i1,
    169    nir_op_f2i16,
    170    nir_op_f2i32,
    171    nir_op_f2i64,
    172    nir_op_f2i8,
    173    nir_op_f2imp,
    174    nir_op_f2u1,
    175    nir_op_f2u16,
    176    nir_op_f2u32,
    177    nir_op_f2u64,
    178    nir_op_f2u8,
    179    nir_op_f2ump,
    180    nir_op_fabs,
    181    nir_op_fadd,
    182    nir_op_fall_equal16,
    183    nir_op_fall_equal2,
    184    nir_op_fall_equal3,
    185    nir_op_fall_equal4,
    186    nir_op_fall_equal5,
    187    nir_op_fall_equal8,
    188    nir_op_fany_nequal16,
    189    nir_op_fany_nequal2,
    190    nir_op_fany_nequal3,
    191    nir_op_fany_nequal4,
    192    nir_op_fany_nequal5,
    193    nir_op_fany_nequal8,
    194    nir_op_fceil,
    195    nir_op_fclamp_pos_mali,
    196    nir_op_fcos,
    197    nir_op_fcos_r600,
    198    nir_op_fcsel,
    199    nir_op_fcsel_ge,
    200    nir_op_fcsel_gt,
    201    nir_op_fddx,
    202    nir_op_fddx_coarse,
    203    nir_op_fddx_fine,
    204    nir_op_fddx_must_abs_mali,
    205    nir_op_fddy,
    206    nir_op_fddy_coarse,
    207    nir_op_fddy_fine,
    208    nir_op_fddy_must_abs_mali,
    209    nir_op_fdiv,
    210    nir_op_fdot16,
    211    nir_op_fdot16_replicated,
    212    nir_op_fdot2,
    213    nir_op_fdot2_replicated,
    214    nir_op_fdot3,
    215    nir_op_fdot3_replicated,
    216    nir_op_fdot4,
    217    nir_op_fdot4_replicated,
    218    nir_op_fdot5,
    219    nir_op_fdot5_replicated,
    220    nir_op_fdot8,
    221    nir_op_fdot8_replicated,
    222    nir_op_fdph,
    223    nir_op_fdph_replicated,
    224    nir_op_feq,
    225    nir_op_feq16,
    226    nir_op_feq32,
    227    nir_op_feq8,
    228    nir_op_fexp2,
    229    nir_op_ffloor,
    230    nir_op_ffma,
    231    nir_op_ffract,
    232    nir_op_fge,
    233    nir_op_fge16,
    234    nir_op_fge32,
    235    nir_op_fge8,
    236    nir_op_find_lsb,
    237    nir_op_fisfinite,
    238    nir_op_fisfinite32,
    239    nir_op_fisnormal,
    240    nir_op_flog2,
    241    nir_op_flrp,
    242    nir_op_flt,
    243    nir_op_flt16,
    244    nir_op_flt32,
    245    nir_op_flt8,
    246    nir_op_fmax,
    247    nir_op_fmin,
    248    nir_op_fmod,
    249    nir_op_fmul,
    250    nir_op_fneg,
    251    nir_op_fneu,
    252    nir_op_fneu16,
    253    nir_op_fneu32,
    254    nir_op_fneu8,
    255    nir_op_fpow,
    256    nir_op_fquantize2f16,
    257    nir_op_frcp,
    258    nir_op_frem,
    259    nir_op_frexp_exp,
    260    nir_op_frexp_sig,
    261    nir_op_fround_even,
    262    nir_op_frsq,
    263    nir_op_fsat,
    264    nir_op_fsat_signed_mali,
    265    nir_op_fsign,
    266    nir_op_fsin,
    267    nir_op_fsin_agx,
    268    nir_op_fsin_r600,
    269    nir_op_fsqrt,
    270    nir_op_fsub,
    271    nir_op_fsum2,
    272    nir_op_fsum3,
    273    nir_op_fsum4,
    274    nir_op_ftrunc,
    275    nir_op_i2b1,
    276    nir_op_i2b16,
    277    nir_op_i2b32,
    278    nir_op_i2b8,
    279    nir_op_i2f16,
    280    nir_op_i2f32,
    281    nir_op_i2f64,
    282    nir_op_i2fmp,
    283    nir_op_i2i1,
    284    nir_op_i2i16,
    285    nir_op_i2i32,
    286    nir_op_i2i64,
    287    nir_op_i2i8,
    288    nir_op_i2imp,
    289    nir_op_i32csel_ge,
    290    nir_op_i32csel_gt,
    291    nir_op_iabs,
    292    nir_op_iadd,
    293    nir_op_iadd3,
    294    nir_op_iadd_sat,
    295    nir_op_iand,
    296    nir_op_ibfe,
    297    nir_op_ibitfield_extract,
    298    nir_op_idiv,
    299    nir_op_ieq,
    300    nir_op_ieq16,
    301    nir_op_ieq32,
    302    nir_op_ieq8,
    303    nir_op_ifind_msb,
    304    nir_op_ifind_msb_rev,
    305    nir_op_ige,
    306    nir_op_ige16,
    307    nir_op_ige32,
    308    nir_op_ige8,
    309    nir_op_ihadd,
    310    nir_op_ilt,
    311    nir_op_ilt16,
    312    nir_op_ilt32,
    313    nir_op_ilt8,
    314    nir_op_imad24_ir3,
    315    nir_op_imadsh_mix16,
    316    nir_op_imax,
    317    nir_op_imin,
    318    nir_op_imod,
    319    nir_op_imul,
    320    nir_op_imul24,
    321    nir_op_imul24_relaxed,
    322    nir_op_imul_2x32_64,
    323    nir_op_imul_32x16,
    324    nir_op_imul_high,
    325    nir_op_ine,
    326    nir_op_ine16,
    327    nir_op_ine32,
    328    nir_op_ine8,
    329    nir_op_ineg,
    330    nir_op_inot,
    331    nir_op_insert_u16,
    332    nir_op_insert_u8,
    333    nir_op_ior,
    334    nir_op_irem,
    335    nir_op_irhadd,
    336    nir_op_ishl,
    337    nir_op_ishr,
    338    nir_op_isign,
    339    nir_op_isub,
    340    nir_op_isub_sat,
    341    nir_op_ixor,
    342    nir_op_ldexp,
    343    nir_op_mov,
    344    nir_op_pack_32_2x16,
    345    nir_op_pack_32_2x16_split,
    346    nir_op_pack_32_4x8,
    347    nir_op_pack_32_4x8_split,
    348    nir_op_pack_64_2x32,
    349    nir_op_pack_64_2x32_split,
    350    nir_op_pack_64_4x16,
    351    nir_op_pack_double_2x32_dxil,
    352    nir_op_pack_half_2x16,
    353    nir_op_pack_half_2x16_split,
    354    nir_op_pack_snorm_2x16,
    355    nir_op_pack_snorm_4x8,
    356    nir_op_pack_unorm_2x16,
    357    nir_op_pack_unorm_4x8,
    358    nir_op_pack_uvec2_to_uint,
    359    nir_op_pack_uvec4_to_uint,
    360    nir_op_sad_u8x4,
    361    nir_op_sdot_2x16_iadd,
    362    nir_op_sdot_2x16_iadd_sat,
    363    nir_op_sdot_4x8_iadd,
    364    nir_op_sdot_4x8_iadd_sat,
    365    nir_op_seq,
    366    nir_op_sge,
    367    nir_op_slt,
    368    nir_op_sne,
    369    nir_op_sudot_4x8_iadd,
    370    nir_op_sudot_4x8_iadd_sat,
    371    nir_op_u2f16,
    372    nir_op_u2f32,
    373    nir_op_u2f64,
    374    nir_op_u2fmp,
    375    nir_op_u2u1,
    376    nir_op_u2u16,
    377    nir_op_u2u32,
    378    nir_op_u2u64,
    379    nir_op_u2u8,
    380    nir_op_uabs_isub,
    381    nir_op_uabs_usub,
    382    nir_op_uadd_carry,
    383    nir_op_uadd_sat,
    384    nir_op_ubfe,
    385    nir_op_ubitfield_extract,
    386    nir_op_uclz,
    387    nir_op_udiv,
    388    nir_op_udot_2x16_uadd,
    389    nir_op_udot_2x16_uadd_sat,
    390    nir_op_udot_4x8_uadd,
    391    nir_op_udot_4x8_uadd_sat,
    392    nir_op_ufind_msb,
    393    nir_op_ufind_msb_rev,
    394    nir_op_uge,
    395    nir_op_uge16,
    396    nir_op_uge32,
    397    nir_op_uge8,
    398    nir_op_uhadd,
    399    nir_op_ult,
    400    nir_op_ult16,
    401    nir_op_ult32,
    402    nir_op_ult8,
    403    nir_op_umad24,
    404    nir_op_umad24_relaxed,
    405    nir_op_umax,
    406    nir_op_umax_4x8_vc4,
    407    nir_op_umin,
    408    nir_op_umin_4x8_vc4,
    409    nir_op_umod,
    410    nir_op_umul24,
    411    nir_op_umul24_relaxed,
    412    nir_op_umul_2x32_64,
    413    nir_op_umul_32x16,
    414    nir_op_umul_high,
    415    nir_op_umul_low,
    416    nir_op_umul_unorm_4x8_vc4,
    417    nir_op_unpack_32_2x16,
    418    nir_op_unpack_32_2x16_split_x,
    419    nir_op_unpack_32_2x16_split_y,
    420    nir_op_unpack_32_4x8,
    421    nir_op_unpack_64_2x32,
    422    nir_op_unpack_64_2x32_split_x,
    423    nir_op_unpack_64_2x32_split_y,
    424    nir_op_unpack_64_4x16,
    425    nir_op_unpack_double_2x32_dxil,
    426    nir_op_unpack_half_2x16,
    427    nir_op_unpack_half_2x16_flush_to_zero,
    428    nir_op_unpack_half_2x16_split_x,
    429    nir_op_unpack_half_2x16_split_x_flush_to_zero,
    430    nir_op_unpack_half_2x16_split_y,
    431    nir_op_unpack_half_2x16_split_y_flush_to_zero,
    432    nir_op_unpack_snorm_2x16,
    433    nir_op_unpack_snorm_4x8,
    434    nir_op_unpack_unorm_2x16,
    435    nir_op_unpack_unorm_4x8,
    436    nir_op_urhadd,
    437    nir_op_urol,
    438    nir_op_uror,
    439    nir_op_usadd_4x8_vc4,
    440    nir_op_ushr,
    441    nir_op_ussub_4x8_vc4,
    442    nir_op_usub_borrow,
    443    nir_op_usub_sat,
    444    nir_op_vec16,
    445    nir_op_vec2,
    446    nir_op_vec3,
    447    nir_op_vec4,
    448    nir_op_vec5,
    449    nir_op_vec8,
    450    nir_last_opcode = nir_op_vec8,
    451    nir_num_opcodes = nir_last_opcode + 1
    452 } nir_op;
    453 
    454 #endif /* _NIR_OPCODES_ */
    455