nir_opcodes.h revision 10e230b6
110e230b6Smaya/* Copyright (C) 2014 Connor Abbott
210e230b6Smaya *
310e230b6Smaya * Permission is hereby granted, free of charge, to any person obtaining a
410e230b6Smaya * copy of this software and associated documentation files (the "Software"),
510e230b6Smaya * to deal in the Software without restriction, including without limitation
610e230b6Smaya * the rights to use, copy, modify, merge, publish, distribute, sublicense,
710e230b6Smaya * and/or sell copies of the Software, and to permit persons to whom the
810e230b6Smaya * Software is furnished to do so, subject to the following conditions:
910e230b6Smaya *
1010e230b6Smaya * The above copyright notice and this permission notice (including the next
1110e230b6Smaya * paragraph) shall be included in all copies or substantial portions of the
1210e230b6Smaya * Software.
1310e230b6Smaya *
1410e230b6Smaya * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1510e230b6Smaya * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1610e230b6Smaya * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1710e230b6Smaya * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1810e230b6Smaya * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1910e230b6Smaya * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
2010e230b6Smaya * IN THE SOFTWARE.
2110e230b6Smaya *
2210e230b6Smaya * Authors:
2310e230b6Smaya *    Connor Abbott (cwabbott0@gmail.com)
2410e230b6Smaya */
2510e230b6Smaya
2610e230b6Smaya#ifndef _NIR_OPCODES_
2710e230b6Smaya#define _NIR_OPCODES_
2810e230b6Smaya
2910e230b6Smaya
3010e230b6Smaya
3110e230b6Smayatypedef enum {
3210e230b6Smaya   nir_op_b2f16,
3310e230b6Smaya   nir_op_b2f32,
3410e230b6Smaya   nir_op_b2f64,
3510e230b6Smaya   nir_op_b2i1,
3610e230b6Smaya   nir_op_b2i16,
3710e230b6Smaya   nir_op_b2i32,
3810e230b6Smaya   nir_op_b2i64,
3910e230b6Smaya   nir_op_b2i8,
4010e230b6Smaya   nir_op_b32all_fequal2,
4110e230b6Smaya   nir_op_b32all_fequal3,
4210e230b6Smaya   nir_op_b32all_fequal4,
4310e230b6Smaya   nir_op_b32all_iequal2,
4410e230b6Smaya   nir_op_b32all_iequal3,
4510e230b6Smaya   nir_op_b32all_iequal4,
4610e230b6Smaya   nir_op_b32any_fnequal2,
4710e230b6Smaya   nir_op_b32any_fnequal3,
4810e230b6Smaya   nir_op_b32any_fnequal4,
4910e230b6Smaya   nir_op_b32any_inequal2,
5010e230b6Smaya   nir_op_b32any_inequal3,
5110e230b6Smaya   nir_op_b32any_inequal4,
5210e230b6Smaya   nir_op_b32csel,
5310e230b6Smaya   nir_op_ball_fequal2,
5410e230b6Smaya   nir_op_ball_fequal3,
5510e230b6Smaya   nir_op_ball_fequal4,
5610e230b6Smaya   nir_op_ball_iequal2,
5710e230b6Smaya   nir_op_ball_iequal3,
5810e230b6Smaya   nir_op_ball_iequal4,
5910e230b6Smaya   nir_op_bany_fnequal2,
6010e230b6Smaya   nir_op_bany_fnequal3,
6110e230b6Smaya   nir_op_bany_fnequal4,
6210e230b6Smaya   nir_op_bany_inequal2,
6310e230b6Smaya   nir_op_bany_inequal3,
6410e230b6Smaya   nir_op_bany_inequal4,
6510e230b6Smaya   nir_op_bcsel,
6610e230b6Smaya   nir_op_bfi,
6710e230b6Smaya   nir_op_bfm,
6810e230b6Smaya   nir_op_bit_count,
6910e230b6Smaya   nir_op_bitfield_insert,
7010e230b6Smaya   nir_op_bitfield_reverse,
7110e230b6Smaya   nir_op_cube_face_coord,
7210e230b6Smaya   nir_op_cube_face_index,
7310e230b6Smaya   nir_op_extract_i16,
7410e230b6Smaya   nir_op_extract_i8,
7510e230b6Smaya   nir_op_extract_u16,
7610e230b6Smaya   nir_op_extract_u8,
7710e230b6Smaya   nir_op_f2b1,
7810e230b6Smaya   nir_op_f2b32,
7910e230b6Smaya   nir_op_f2f16,
8010e230b6Smaya   nir_op_f2f16_rtne,
8110e230b6Smaya   nir_op_f2f16_rtz,
8210e230b6Smaya   nir_op_f2f32,
8310e230b6Smaya   nir_op_f2f64,
8410e230b6Smaya   nir_op_f2i1,
8510e230b6Smaya   nir_op_f2i16,
8610e230b6Smaya   nir_op_f2i32,
8710e230b6Smaya   nir_op_f2i64,
8810e230b6Smaya   nir_op_f2i8,
8910e230b6Smaya   nir_op_f2u1,
9010e230b6Smaya   nir_op_f2u16,
9110e230b6Smaya   nir_op_f2u32,
9210e230b6Smaya   nir_op_f2u64,
9310e230b6Smaya   nir_op_f2u8,
9410e230b6Smaya   nir_op_fabs,
9510e230b6Smaya   nir_op_fadd,
9610e230b6Smaya   nir_op_fall_equal2,
9710e230b6Smaya   nir_op_fall_equal3,
9810e230b6Smaya   nir_op_fall_equal4,
9910e230b6Smaya   nir_op_fand,
10010e230b6Smaya   nir_op_fany_nequal2,
10110e230b6Smaya   nir_op_fany_nequal3,
10210e230b6Smaya   nir_op_fany_nequal4,
10310e230b6Smaya   nir_op_fceil,
10410e230b6Smaya   nir_op_fcos,
10510e230b6Smaya   nir_op_fcsel,
10610e230b6Smaya   nir_op_fddx,
10710e230b6Smaya   nir_op_fddx_coarse,
10810e230b6Smaya   nir_op_fddx_fine,
10910e230b6Smaya   nir_op_fddy,
11010e230b6Smaya   nir_op_fddy_coarse,
11110e230b6Smaya   nir_op_fddy_fine,
11210e230b6Smaya   nir_op_fdiv,
11310e230b6Smaya   nir_op_fdot2,
11410e230b6Smaya   nir_op_fdot3,
11510e230b6Smaya   nir_op_fdot4,
11610e230b6Smaya   nir_op_fdot_replicated2,
11710e230b6Smaya   nir_op_fdot_replicated3,
11810e230b6Smaya   nir_op_fdot_replicated4,
11910e230b6Smaya   nir_op_fdph,
12010e230b6Smaya   nir_op_fdph_replicated,
12110e230b6Smaya   nir_op_feq,
12210e230b6Smaya   nir_op_feq32,
12310e230b6Smaya   nir_op_fexp2,
12410e230b6Smaya   nir_op_ffloor,
12510e230b6Smaya   nir_op_ffma,
12610e230b6Smaya   nir_op_ffract,
12710e230b6Smaya   nir_op_fge,
12810e230b6Smaya   nir_op_fge32,
12910e230b6Smaya   nir_op_find_lsb,
13010e230b6Smaya   nir_op_flog2,
13110e230b6Smaya   nir_op_flrp,
13210e230b6Smaya   nir_op_flt,
13310e230b6Smaya   nir_op_flt32,
13410e230b6Smaya   nir_op_fmax,
13510e230b6Smaya   nir_op_fmax3,
13610e230b6Smaya   nir_op_fmed3,
13710e230b6Smaya   nir_op_fmin,
13810e230b6Smaya   nir_op_fmin3,
13910e230b6Smaya   nir_op_fmod,
14010e230b6Smaya   nir_op_fmov,
14110e230b6Smaya   nir_op_fmul,
14210e230b6Smaya   nir_op_fne,
14310e230b6Smaya   nir_op_fne32,
14410e230b6Smaya   nir_op_fneg,
14510e230b6Smaya   nir_op_fnoise1_1,
14610e230b6Smaya   nir_op_fnoise1_2,
14710e230b6Smaya   nir_op_fnoise1_3,
14810e230b6Smaya   nir_op_fnoise1_4,
14910e230b6Smaya   nir_op_fnoise2_1,
15010e230b6Smaya   nir_op_fnoise2_2,
15110e230b6Smaya   nir_op_fnoise2_3,
15210e230b6Smaya   nir_op_fnoise2_4,
15310e230b6Smaya   nir_op_fnoise3_1,
15410e230b6Smaya   nir_op_fnoise3_2,
15510e230b6Smaya   nir_op_fnoise3_3,
15610e230b6Smaya   nir_op_fnoise3_4,
15710e230b6Smaya   nir_op_fnoise4_1,
15810e230b6Smaya   nir_op_fnoise4_2,
15910e230b6Smaya   nir_op_fnoise4_3,
16010e230b6Smaya   nir_op_fnoise4_4,
16110e230b6Smaya   nir_op_fnot,
16210e230b6Smaya   nir_op_for,
16310e230b6Smaya   nir_op_fpow,
16410e230b6Smaya   nir_op_fquantize2f16,
16510e230b6Smaya   nir_op_frcp,
16610e230b6Smaya   nir_op_frem,
16710e230b6Smaya   nir_op_frexp_exp,
16810e230b6Smaya   nir_op_frexp_sig,
16910e230b6Smaya   nir_op_fround_even,
17010e230b6Smaya   nir_op_frsq,
17110e230b6Smaya   nir_op_fsat,
17210e230b6Smaya   nir_op_fsign,
17310e230b6Smaya   nir_op_fsin,
17410e230b6Smaya   nir_op_fsqrt,
17510e230b6Smaya   nir_op_fsub,
17610e230b6Smaya   nir_op_ftrunc,
17710e230b6Smaya   nir_op_fxor,
17810e230b6Smaya   nir_op_i2b1,
17910e230b6Smaya   nir_op_i2b32,
18010e230b6Smaya   nir_op_i2f16,
18110e230b6Smaya   nir_op_i2f32,
18210e230b6Smaya   nir_op_i2f64,
18310e230b6Smaya   nir_op_i2i1,
18410e230b6Smaya   nir_op_i2i16,
18510e230b6Smaya   nir_op_i2i32,
18610e230b6Smaya   nir_op_i2i64,
18710e230b6Smaya   nir_op_i2i8,
18810e230b6Smaya   nir_op_iabs,
18910e230b6Smaya   nir_op_iadd,
19010e230b6Smaya   nir_op_iadd_sat,
19110e230b6Smaya   nir_op_iand,
19210e230b6Smaya   nir_op_ibfe,
19310e230b6Smaya   nir_op_ibitfield_extract,
19410e230b6Smaya   nir_op_idiv,
19510e230b6Smaya   nir_op_ieq,
19610e230b6Smaya   nir_op_ieq32,
19710e230b6Smaya   nir_op_ifind_msb,
19810e230b6Smaya   nir_op_ige,
19910e230b6Smaya   nir_op_ige32,
20010e230b6Smaya   nir_op_ihadd,
20110e230b6Smaya   nir_op_ilt,
20210e230b6Smaya   nir_op_ilt32,
20310e230b6Smaya   nir_op_imax,
20410e230b6Smaya   nir_op_imax3,
20510e230b6Smaya   nir_op_imed3,
20610e230b6Smaya   nir_op_imin,
20710e230b6Smaya   nir_op_imin3,
20810e230b6Smaya   nir_op_imod,
20910e230b6Smaya   nir_op_imov,
21010e230b6Smaya   nir_op_imul,
21110e230b6Smaya   nir_op_imul_2x32_64,
21210e230b6Smaya   nir_op_imul_high,
21310e230b6Smaya   nir_op_ine,
21410e230b6Smaya   nir_op_ine32,
21510e230b6Smaya   nir_op_ineg,
21610e230b6Smaya   nir_op_inot,
21710e230b6Smaya   nir_op_ior,
21810e230b6Smaya   nir_op_irem,
21910e230b6Smaya   nir_op_irhadd,
22010e230b6Smaya   nir_op_ishl,
22110e230b6Smaya   nir_op_ishr,
22210e230b6Smaya   nir_op_isign,
22310e230b6Smaya   nir_op_isub,
22410e230b6Smaya   nir_op_isub_sat,
22510e230b6Smaya   nir_op_ixor,
22610e230b6Smaya   nir_op_ldexp,
22710e230b6Smaya   nir_op_pack_32_2x16,
22810e230b6Smaya   nir_op_pack_32_2x16_split,
22910e230b6Smaya   nir_op_pack_64_2x32,
23010e230b6Smaya   nir_op_pack_64_2x32_split,
23110e230b6Smaya   nir_op_pack_64_4x16,
23210e230b6Smaya   nir_op_pack_half_2x16,
23310e230b6Smaya   nir_op_pack_half_2x16_split,
23410e230b6Smaya   nir_op_pack_snorm_2x16,
23510e230b6Smaya   nir_op_pack_snorm_4x8,
23610e230b6Smaya   nir_op_pack_unorm_2x16,
23710e230b6Smaya   nir_op_pack_unorm_4x8,
23810e230b6Smaya   nir_op_pack_uvec2_to_uint,
23910e230b6Smaya   nir_op_pack_uvec4_to_uint,
24010e230b6Smaya   nir_op_seq,
24110e230b6Smaya   nir_op_sge,
24210e230b6Smaya   nir_op_slt,
24310e230b6Smaya   nir_op_sne,
24410e230b6Smaya   nir_op_u2f16,
24510e230b6Smaya   nir_op_u2f32,
24610e230b6Smaya   nir_op_u2f64,
24710e230b6Smaya   nir_op_u2u1,
24810e230b6Smaya   nir_op_u2u16,
24910e230b6Smaya   nir_op_u2u32,
25010e230b6Smaya   nir_op_u2u64,
25110e230b6Smaya   nir_op_u2u8,
25210e230b6Smaya   nir_op_uadd_carry,
25310e230b6Smaya   nir_op_uadd_sat,
25410e230b6Smaya   nir_op_ubfe,
25510e230b6Smaya   nir_op_ubitfield_extract,
25610e230b6Smaya   nir_op_udiv,
25710e230b6Smaya   nir_op_ufind_msb,
25810e230b6Smaya   nir_op_uge,
25910e230b6Smaya   nir_op_uge32,
26010e230b6Smaya   nir_op_uhadd,
26110e230b6Smaya   nir_op_ult,
26210e230b6Smaya   nir_op_ult32,
26310e230b6Smaya   nir_op_umax,
26410e230b6Smaya   nir_op_umax3,
26510e230b6Smaya   nir_op_umax_4x8,
26610e230b6Smaya   nir_op_umed3,
26710e230b6Smaya   nir_op_umin,
26810e230b6Smaya   nir_op_umin3,
26910e230b6Smaya   nir_op_umin_4x8,
27010e230b6Smaya   nir_op_umod,
27110e230b6Smaya   nir_op_umul_2x32_64,
27210e230b6Smaya   nir_op_umul_high,
27310e230b6Smaya   nir_op_umul_unorm_4x8,
27410e230b6Smaya   nir_op_unpack_32_2x16,
27510e230b6Smaya   nir_op_unpack_32_2x16_split_x,
27610e230b6Smaya   nir_op_unpack_32_2x16_split_y,
27710e230b6Smaya   nir_op_unpack_64_2x32,
27810e230b6Smaya   nir_op_unpack_64_2x32_split_x,
27910e230b6Smaya   nir_op_unpack_64_2x32_split_y,
28010e230b6Smaya   nir_op_unpack_64_4x16,
28110e230b6Smaya   nir_op_unpack_half_2x16,
28210e230b6Smaya   nir_op_unpack_half_2x16_split_x,
28310e230b6Smaya   nir_op_unpack_half_2x16_split_y,
28410e230b6Smaya   nir_op_unpack_snorm_2x16,
28510e230b6Smaya   nir_op_unpack_snorm_4x8,
28610e230b6Smaya   nir_op_unpack_unorm_2x16,
28710e230b6Smaya   nir_op_unpack_unorm_4x8,
28810e230b6Smaya   nir_op_urhadd,
28910e230b6Smaya   nir_op_usadd_4x8,
29010e230b6Smaya   nir_op_ushr,
29110e230b6Smaya   nir_op_ussub_4x8,
29210e230b6Smaya   nir_op_usub_borrow,
29310e230b6Smaya   nir_op_usub_sat,
29410e230b6Smaya   nir_op_vec2,
29510e230b6Smaya   nir_op_vec3,
29610e230b6Smaya   nir_op_vec4,
29710e230b6Smaya   nir_last_opcode = nir_op_vec4,
29810e230b6Smaya   nir_num_opcodes = nir_last_opcode + 1
29910e230b6Smaya} nir_op;
30010e230b6Smaya
30110e230b6Smaya#endif /* _NIR_OPCODES_ */
302