#include "nir.h"
nir_op
nir_type_conversion_op(nir_alu_type src, nir_alu_type dst, nir_rounding_mode rnd)
{
nir_alu_type src_base = (nir_alu_type) nir_alu_type_get_base_type(src);
nir_alu_type dst_base = (nir_alu_type) nir_alu_type_get_base_type(dst);
unsigned src_bit_size = nir_alu_type_get_type_size(src);
unsigned dst_bit_size = nir_alu_type_get_type_size(dst);
if (src == dst && src_base == nir_type_float) {
return nir_op_fmov;
} else if ((src_base == nir_type_int || src_base == nir_type_uint) &&
(dst_base == nir_type_int || dst_base == nir_type_uint) &&
src_bit_size == dst_bit_size) {
/* Integer <-> integer conversions with the same bit-size on both
* ends are just no-op moves.
*/
return nir_op_imov;
}
switch (src_base) {
case nir_type_int:
switch (dst_base) {
case nir_type_int:
case nir_type_uint:
switch (dst_bit_size) {
case 16:
assert(rnd == nir_rounding_mode_undef);
return nir_op_i2i16;
case 32:
assert(rnd == nir_rounding_mode_undef);
return nir_op_i2i32;
case 64:
assert(rnd == nir_rounding_mode_undef);
return nir_op_i2i64;
default:
unreachable("Invalid nir alu bit size");
}
case nir_type_float:
switch (dst_bit_size) {
case 16:
assert(rnd == nir_rounding_mode_undef);
return nir_op_i2f16;
case 32:
assert(rnd == nir_rounding_mode_undef);
return nir_op_i2f32;
case 64:
assert(rnd == nir_rounding_mode_undef);
return nir_op_i2f64;
default:
unreachable("Invalid nir alu bit size");
}
case nir_type_bool:
return nir_op_i2b;
default:
unreachable("Invalid nir alu base type");
}
case nir_type_uint:
switch (dst_base) {
case nir_type_int:
case nir_type_uint:
switch (dst_bit_size) {
case 16:
assert(rnd == nir_rounding_mode_undef);
return nir_op_u2u16;
case 32:
assert(rnd == nir_rounding_mode_undef);
return nir_op_u2u32;
case 64:
assert(rnd == nir_rounding_mode_undef);
return nir_op_u2u64;
default:
unreachable("Invalid nir alu bit size");
}
case nir_type_float:
switch (dst_bit_size) {
case 16:
assert(rnd == nir_rounding_mode_undef);
return nir_op_u2f16;
case 32:
assert(rnd == nir_rounding_mode_undef);
return nir_op_u2f32;
case 64:
assert(rnd == nir_rounding_mode_undef);
return nir_op_u2f64;
default:
unreachable("Invalid nir alu bit size");
}
case nir_type_bool:
return nir_op_i2b;
default:
unreachable("Invalid nir alu base type");
}
case nir_type_float:
switch (dst_base) {
case nir_type_int:
switch (dst_bit_size) {
case 16:
assert(rnd == nir_rounding_mode_undef);
return nir_op_f2i16;
case 32:
assert(rnd == nir_rounding_mode_undef);
return nir_op_f2i32;
case 64:
assert(rnd == nir_rounding_mode_undef);
return nir_op_f2i64;
default:
unreachable("Invalid nir alu bit size");
}
case nir_type_uint:
switch (dst_bit_size) {
case 16:
assert(rnd == nir_rounding_mode_undef);
return nir_op_f2u16;
case 32:
assert(rnd == nir_rounding_mode_undef);
return nir_op_f2u32;
case 64:
assert(rnd == nir_rounding_mode_undef);
return nir_op_f2u64;
default:
unreachable("Invalid nir alu bit size");
}
case nir_type_float:
switch (dst_bit_size) {
case 16:
switch(rnd) {
case nir_rounding_mode_rtne:
return nir_op_f2f16_rtne;
case nir_rounding_mode_rtz:
return nir_op_f2f16_rtz;
case nir_rounding_mode_undef:
return nir_op_f2f16_undef;
default:
unreachable("Invalid 16-bit nir rounding mode");
}
case 32:
assert(rnd == nir_rounding_mode_undef);
return nir_op_f2f32;
case 64:
assert(rnd == nir_rounding_mode_undef);
return nir_op_f2f64;
default:
unreachable("Invalid nir alu bit size");
}
case nir_type_bool:
return nir_op_f2b;
default:
unreachable("Invalid nir alu base type");
}
case nir_type_bool:
switch (dst_base) {
case nir_type_int:
case nir_type_uint:
return nir_op_b2i;
case nir_type_float:
return nir_op_b2f;
default:
unreachable("Invalid nir alu base type");
}
default:
unreachable("Invalid nir alu base type");
}
}
const nir_op_info nir_op_infos[nir_num_opcodes] = {
{
.name = "b2f",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_bool32
},
.algebraic_properties =
0
},
{
.name = "b2i",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0
},
.input_types = {
nir_type_bool32
},
.algebraic_properties =
0
},
{
.name = "ball_fequal2",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
2, 2
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "ball_fequal3",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
3, 3
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "ball_fequal4",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
4, 4
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "ball_iequal2",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
2, 2
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "ball_iequal3",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
3, 3
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "ball_iequal4",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
4, 4
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "bany_fnequal2",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
2, 2
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "bany_fnequal3",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
3, 3
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "bany_fnequal4",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
4, 4
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "bany_inequal2",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
2, 2
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "bany_inequal3",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
3, 3
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "bany_inequal4",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_bool32,
.input_sizes = {
4, 4
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "bcsel",
.num_inputs = 3,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0, 0
},
.input_types = {
nir_type_bool32, nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "bfi",
.num_inputs = 3,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0, 0, 0
},
.input_types = {
nir_type_uint32, nir_type_uint32, nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "bfm",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int32, nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "bit_count",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "bitfield_insert",
.num_inputs = 4,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0, 0, 0, 0
},
.input_types = {
nir_type_uint32, nir_type_uint32, nir_type_int32, nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "bitfield_reverse",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "extract_i16",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
0
},
{
.name = "extract_i8",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
0
},
{
.name = "extract_u16",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "extract_u8",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "f2b",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2f16_rtne",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float16,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2f16_rtz",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float16,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2f16_undef",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float16,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2f32",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2f64",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float64,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2i16",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int16,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2i32",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2i64",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int64,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2i8",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int8,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2u16",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint16,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2u32",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2u64",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint64,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "f2u8",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint8,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fabs",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fadd",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "fall_equal2",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float32,
.input_sizes = {
2, 2
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fall_equal3",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float32,
.input_sizes = {
3, 3
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fall_equal4",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float32,
.input_sizes = {
4, 4
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fand",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fany_nequal2",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float32,
.input_sizes = {
2, 2
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fany_nequal3",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float32,
.input_sizes = {
3, 3
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fany_nequal4",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float32,
.input_sizes = {
4, 4
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fceil",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fcos",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fcsel",
.num_inputs = 3,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0, 0, 0
},
.input_types = {
nir_type_float32, nir_type_float32, nir_type_float32
},
.algebraic_properties =
0
},
{
.name = "fddx",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fddx_coarse",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fddx_fine",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fddy",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fddy_coarse",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fddy_fine",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fdiv",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fdot2",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float,
.input_sizes = {
2, 2
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fdot3",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float,
.input_sizes = {
3, 3
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fdot4",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float,
.input_sizes = {
4, 4
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fdot_replicated2",
.num_inputs = 2,
.output_size = 4,
.output_type = nir_type_float,
.input_sizes = {
2, 2
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fdot_replicated3",
.num_inputs = 2,
.output_size = 4,
.output_type = nir_type_float,
.input_sizes = {
3, 3
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fdot_replicated4",
.num_inputs = 2,
.output_size = 4,
.output_type = nir_type_float,
.input_sizes = {
4, 4
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fdph",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_float,
.input_sizes = {
3, 4
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fdph_replicated",
.num_inputs = 2,
.output_size = 4,
.output_type = nir_type_float,
.input_sizes = {
3, 4
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "feq",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fexp2",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "ffloor",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "ffma",
.num_inputs = 3,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0, 0
},
.input_types = {
nir_type_float, nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "ffract",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fge",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "find_lsb",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0
},
.input_types = {
nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "flog2",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "flrp",
.num_inputs = 3,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0, 0
},
.input_types = {
nir_type_float, nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "flt",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fmax",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fmin",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fmod",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fmov",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fmul",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "fne",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fneg",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise1_1",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_float,
.input_sizes = {
1
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise1_2",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_float,
.input_sizes = {
2
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise1_3",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_float,
.input_sizes = {
3
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise1_4",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_float,
.input_sizes = {
4
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise2_1",
.num_inputs = 1,
.output_size = 2,
.output_type = nir_type_float,
.input_sizes = {
1
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise2_2",
.num_inputs = 1,
.output_size = 2,
.output_type = nir_type_float,
.input_sizes = {
2
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise2_3",
.num_inputs = 1,
.output_size = 2,
.output_type = nir_type_float,
.input_sizes = {
3
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise2_4",
.num_inputs = 1,
.output_size = 2,
.output_type = nir_type_float,
.input_sizes = {
4
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise3_1",
.num_inputs = 1,
.output_size = 3,
.output_type = nir_type_float,
.input_sizes = {
1
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise3_2",
.num_inputs = 1,
.output_size = 3,
.output_type = nir_type_float,
.input_sizes = {
2
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise3_3",
.num_inputs = 1,
.output_size = 3,
.output_type = nir_type_float,
.input_sizes = {
3
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise3_4",
.num_inputs = 1,
.output_size = 3,
.output_type = nir_type_float,
.input_sizes = {
4
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise4_1",
.num_inputs = 1,
.output_size = 4,
.output_type = nir_type_float,
.input_sizes = {
1
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise4_2",
.num_inputs = 1,
.output_size = 4,
.output_type = nir_type_float,
.input_sizes = {
2
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise4_3",
.num_inputs = 1,
.output_size = 4,
.output_type = nir_type_float,
.input_sizes = {
3
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnoise4_4",
.num_inputs = 1,
.output_size = 4,
.output_type = nir_type_float,
.input_sizes = {
4
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fnot",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "for",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "fpow",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fquantize2f16",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "frcp",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "frem",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fround_even",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "frsq",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fsat",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fsign",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fsin",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fsqrt",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fsub",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "ftrunc",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0
},
.input_types = {
nir_type_float
},
.algebraic_properties =
0
},
{
.name = "fxor",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "i2b",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "i2f16",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float16,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "i2f32",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "i2f64",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float64,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "i2i16",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int16,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "i2i32",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "i2i64",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int64,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "i2i8",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int8,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "iabs",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "iadd",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "iand",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "ibfe",
.num_inputs = 3,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0, 0, 0
},
.input_types = {
nir_type_int32, nir_type_int32, nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "ibitfield_extract",
.num_inputs = 3,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0, 0, 0
},
.input_types = {
nir_type_int32, nir_type_int32, nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "idiv",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
0
},
{
.name = "ieq",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "ifind_msb",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0
},
.input_types = {
nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "ige",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
0
},
{
.name = "ilt",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
0
},
{
.name = "imax",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "imin",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "imod",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
0
},
{
.name = "imov",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "imul",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "imul_high",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int32, nir_type_int32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "ine",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "ineg",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "inot",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "ior",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "irem",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
0
},
{
.name = "ishl",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "ishr",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "isign",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0
},
.input_types = {
nir_type_int
},
.algebraic_properties =
0
},
{
.name = "isub",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int, nir_type_int
},
.algebraic_properties =
0
},
{
.name = "ixor",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "ldexp",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "pack_64_2x32",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_uint64,
.input_sizes = {
2
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "pack_64_2x32_split",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint64,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint32, nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "pack_half_2x16",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_uint32,
.input_sizes = {
2
},
.input_types = {
nir_type_float32
},
.algebraic_properties =
0
},
{
.name = "pack_half_2x16_split",
.num_inputs = 2,
.output_size = 1,
.output_type = nir_type_uint32,
.input_sizes = {
1, 1
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
0
},
{
.name = "pack_snorm_2x16",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_uint32,
.input_sizes = {
2
},
.input_types = {
nir_type_float32
},
.algebraic_properties =
0
},
{
.name = "pack_snorm_4x8",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_uint32,
.input_sizes = {
4
},
.input_types = {
nir_type_float32
},
.algebraic_properties =
0
},
{
.name = "pack_unorm_2x16",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_uint32,
.input_sizes = {
2
},
.input_types = {
nir_type_float32
},
.algebraic_properties =
0
},
{
.name = "pack_unorm_4x8",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_uint32,
.input_sizes = {
4
},
.input_types = {
nir_type_float32
},
.algebraic_properties =
0
},
{
.name = "pack_uvec2_to_uint",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_uint32,
.input_sizes = {
2
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "pack_uvec4_to_uint",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_uint32,
.input_sizes = {
4
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "seq",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "sge",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float, nir_type_float
},
.algebraic_properties =
0
},
{
.name = "slt",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
0
},
{
.name = "sne",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_float32, nir_type_float32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "u2f16",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float16,
.input_sizes = {
0
},
.input_types = {
nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "u2f32",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float32,
.input_sizes = {
0
},
.input_types = {
nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "u2f64",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_float64,
.input_sizes = {
0
},
.input_types = {
nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "u2u16",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint16,
.input_sizes = {
0
},
.input_types = {
nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "u2u32",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0
},
.input_types = {
nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "u2u64",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint64,
.input_sizes = {
0
},
.input_types = {
nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "u2u8",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint8,
.input_sizes = {
0
},
.input_types = {
nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "uadd_carry",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "ubfe",
.num_inputs = 3,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0, 0, 0
},
.input_types = {
nir_type_uint32, nir_type_int32, nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "ubitfield_extract",
.num_inputs = 3,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0, 0, 0
},
.input_types = {
nir_type_uint32, nir_type_int32, nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "udiv",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "ufind_msb",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "uge",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "ult",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_bool32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "umax",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "umax_4x8",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int32, nir_type_int32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "umin",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "umin_4x8",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int32, nir_type_int32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "umod",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "umul_high",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint32, nir_type_uint32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE
},
{
.name = "umul_unorm_4x8",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int32, nir_type_int32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "unpack_64_2x32",
.num_inputs = 1,
.output_size = 2,
.output_type = nir_type_uint32,
.input_sizes = {
1
},
.input_types = {
nir_type_uint64
},
.algebraic_properties =
0
},
{
.name = "unpack_64_2x32_split_x",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0
},
.input_types = {
nir_type_uint64
},
.algebraic_properties =
0
},
{
.name = "unpack_64_2x32_split_y",
.num_inputs = 1,
.output_size = 0,
.output_type = nir_type_uint32,
.input_sizes = {
0
},
.input_types = {
nir_type_uint64
},
.algebraic_properties =
0
},
{
.name = "unpack_half_2x16",
.num_inputs = 1,
.output_size = 2,
.output_type = nir_type_float32,
.input_sizes = {
1
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "unpack_half_2x16_split_x",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_float32,
.input_sizes = {
1
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "unpack_half_2x16_split_y",
.num_inputs = 1,
.output_size = 1,
.output_type = nir_type_float32,
.input_sizes = {
1
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "unpack_snorm_2x16",
.num_inputs = 1,
.output_size = 2,
.output_type = nir_type_float32,
.input_sizes = {
1
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "unpack_snorm_4x8",
.num_inputs = 1,
.output_size = 4,
.output_type = nir_type_float32,
.input_sizes = {
1
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "unpack_unorm_2x16",
.num_inputs = 1,
.output_size = 2,
.output_type = nir_type_float32,
.input_sizes = {
1
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "unpack_unorm_4x8",
.num_inputs = 1,
.output_size = 4,
.output_type = nir_type_float32,
.input_sizes = {
1
},
.input_types = {
nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "usadd_4x8",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int32, nir_type_int32
},
.algebraic_properties =
NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
},
{
.name = "ushr",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint32
},
.algebraic_properties =
0
},
{
.name = "ussub_4x8",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_int32,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_int32, nir_type_int32
},
.algebraic_properties =
0
},
{
.name = "usub_borrow",
.num_inputs = 2,
.output_size = 0,
.output_type = nir_type_uint,
.input_sizes = {
0, 0
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "vec2",
.num_inputs = 2,
.output_size = 2,
.output_type = nir_type_uint,
.input_sizes = {
1, 1
},
.input_types = {
nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "vec3",
.num_inputs = 3,
.output_size = 3,
.output_type = nir_type_uint,
.input_sizes = {
1, 1, 1
},
.input_types = {
nir_type_uint, nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
{
.name = "vec4",
.num_inputs = 4,
.output_size = 4,
.output_type = nir_type_uint,
.input_sizes = {
1, 1, 1, 1
},
.input_types = {
nir_type_uint, nir_type_uint, nir_type_uint, nir_type_uint
},
.algebraic_properties =
0
},
};