1 /* 2 * Copyright (C) 2010 Intel Corporation 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 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 * DEALINGS IN THE SOFTWARE. 22 */ 23 24 enum ir_expression_operation { 25 ir_unop_bit_not, 26 ir_unop_logic_not, 27 ir_unop_neg, 28 ir_unop_abs, 29 ir_unop_sign, 30 ir_unop_rcp, 31 ir_unop_rsq, 32 ir_unop_sqrt, 33 ir_unop_exp, 34 ir_unop_log, 35 ir_unop_exp2, 36 ir_unop_log2, 37 ir_unop_f2i, 38 ir_unop_f2u, 39 ir_unop_i2f, 40 ir_unop_f2b, 41 ir_unop_b2f, 42 ir_unop_b2f16, 43 ir_unop_i2b, 44 ir_unop_b2i, 45 ir_unop_u2f, 46 ir_unop_i2u, 47 ir_unop_u2i, 48 ir_unop_d2f, 49 ir_unop_f2d, 50 ir_unop_f2f16, 51 ir_unop_f2fmp, 52 ir_unop_f162f, 53 ir_unop_d2i, 54 ir_unop_i2d, 55 ir_unop_d2u, 56 ir_unop_u2d, 57 ir_unop_d2b, 58 ir_unop_f162b, 59 ir_unop_bitcast_i2f, 60 ir_unop_bitcast_f2i, 61 ir_unop_bitcast_u2f, 62 ir_unop_bitcast_f2u, 63 ir_unop_bitcast_u642d, 64 ir_unop_bitcast_i642d, 65 ir_unop_bitcast_d2u64, 66 ir_unop_bitcast_d2i64, 67 ir_unop_i642i, 68 ir_unop_u642i, 69 ir_unop_i642u, 70 ir_unop_u642u, 71 ir_unop_i642b, 72 ir_unop_i642f, 73 ir_unop_u642f, 74 ir_unop_i642d, 75 ir_unop_u642d, 76 ir_unop_i2i64, 77 ir_unop_u2i64, 78 ir_unop_b2i64, 79 ir_unop_f2i64, 80 ir_unop_d2i64, 81 ir_unop_i2u64, 82 ir_unop_u2u64, 83 ir_unop_f2u64, 84 ir_unop_d2u64, 85 ir_unop_u642i64, 86 ir_unop_i642u64, 87 ir_unop_trunc, 88 ir_unop_ceil, 89 ir_unop_floor, 90 ir_unop_fract, 91 ir_unop_round_even, 92 ir_unop_sin, 93 ir_unop_cos, 94 ir_unop_atan, 95 ir_unop_dFdx, 96 ir_unop_dFdx_coarse, 97 ir_unop_dFdx_fine, 98 ir_unop_dFdy, 99 ir_unop_dFdy_coarse, 100 ir_unop_dFdy_fine, 101 ir_unop_pack_snorm_2x16, 102 ir_unop_pack_snorm_4x8, 103 ir_unop_pack_unorm_2x16, 104 ir_unop_pack_unorm_4x8, 105 ir_unop_pack_half_2x16, 106 ir_unop_unpack_snorm_2x16, 107 ir_unop_unpack_snorm_4x8, 108 ir_unop_unpack_unorm_2x16, 109 ir_unop_unpack_unorm_4x8, 110 ir_unop_unpack_half_2x16, 111 ir_unop_bitfield_reverse, 112 ir_unop_bit_count, 113 ir_unop_find_msb, 114 ir_unop_find_lsb, 115 ir_unop_clz, 116 ir_unop_saturate, 117 ir_unop_pack_double_2x32, 118 ir_unop_unpack_double_2x32, 119 ir_unop_pack_sampler_2x32, 120 ir_unop_pack_image_2x32, 121 ir_unop_unpack_sampler_2x32, 122 ir_unop_unpack_image_2x32, 123 ir_unop_frexp_sig, 124 ir_unop_frexp_exp, 125 ir_unop_subroutine_to_int, 126 ir_unop_interpolate_at_centroid, 127 ir_unop_get_buffer_size, 128 ir_unop_ssbo_unsized_array_length, 129 ir_unop_pack_int_2x32, 130 ir_unop_pack_uint_2x32, 131 ir_unop_unpack_int_2x32, 132 ir_unop_unpack_uint_2x32, 133 ir_binop_add, 134 ir_binop_sub, 135 ir_binop_add_sat, 136 ir_binop_sub_sat, 137 ir_binop_abs_sub, 138 ir_binop_avg, 139 ir_binop_avg_round, 140 ir_binop_mul, 141 ir_binop_mul_32x16, 142 ir_binop_imul_high, 143 ir_binop_div, 144 ir_binop_carry, 145 ir_binop_borrow, 146 ir_binop_mod, 147 ir_binop_less, 148 ir_binop_gequal, 149 ir_binop_equal, 150 ir_binop_nequal, 151 ir_binop_all_equal, 152 ir_binop_any_nequal, 153 ir_binop_lshift, 154 ir_binop_rshift, 155 ir_binop_bit_and, 156 ir_binop_bit_xor, 157 ir_binop_bit_or, 158 ir_binop_logic_and, 159 ir_binop_logic_xor, 160 ir_binop_logic_or, 161 ir_binop_dot, 162 ir_binop_min, 163 ir_binop_max, 164 ir_binop_pow, 165 ir_binop_ubo_load, 166 ir_binop_ldexp, 167 ir_binop_vector_extract, 168 ir_binop_interpolate_at_offset, 169 ir_binop_interpolate_at_sample, 170 ir_binop_atan2, 171 ir_triop_fma, 172 ir_triop_lrp, 173 ir_triop_csel, 174 ir_triop_bitfield_extract, 175 ir_triop_vector_insert, 176 ir_quadop_bitfield_insert, 177 ir_quadop_vector, 178 179 /* Sentinels marking the last of each kind of operation. */ 180 ir_last_unop = ir_unop_unpack_uint_2x32, 181 ir_last_binop = ir_binop_atan2, 182 ir_last_triop = ir_triop_vector_insert, 183 ir_last_quadop = ir_quadop_vector, 184 ir_last_opcode = ir_quadop_vector 185 }; 186