pan/mdg: fix/change ALU opcodes descriptions and add some missing ops
Signed-off-by: Italo Nicola <italonicola@collabora.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9461>
This commit is contained in:
+139
-113
@@ -77,133 +77,159 @@ enum {
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
midgard_alu_op_fadd = 0x10,
|
||||
midgard_alu_op_fmul = 0x14,
|
||||
midgard_alu_op_fadd = 0x10, /* round to even */
|
||||
midgard_alu_op_fadd_rtz = 0x11,
|
||||
midgard_alu_op_fadd_rtn = 0x12,
|
||||
midgard_alu_op_fadd_rtp = 0x13,
|
||||
midgard_alu_op_fmul = 0x14, /* round to even */
|
||||
midgard_alu_op_fmul_rtz = 0x15,
|
||||
midgard_alu_op_fmul_rtn = 0x16,
|
||||
midgard_alu_op_fmul_rtp = 0x17,
|
||||
|
||||
midgard_alu_op_fmin = 0x28,
|
||||
midgard_alu_op_fmax = 0x2C,
|
||||
midgard_alu_op_fmin = 0x28, /* if an operand is NaN, propagate the other */
|
||||
midgard_alu_op_fmin_nan = 0x29, /* if an operand is NaN, propagate it */
|
||||
midgard_alu_op_fabsmin = 0x2A, /* min(abs(a,b)) */
|
||||
midgard_alu_op_fabsmin_nan = 0x2B, /* min_nan(abs(a,b)) */
|
||||
midgard_alu_op_fmax = 0x2C, /* if an operand is NaN, propagate the other */
|
||||
midgard_alu_op_fmax_nan = 0x2D, /* if an operand is NaN, propagate it */
|
||||
midgard_alu_op_fabsmax = 0x2E, /* max(abs(a,b)) */
|
||||
midgard_alu_op_fabsmax_nan = 0x2F, /* max_nan(abs(a,b)) */
|
||||
|
||||
midgard_alu_op_fmov = 0x30, /* fmov_rte */
|
||||
midgard_alu_op_fmov_rtz = 0x31,
|
||||
midgard_alu_op_fmov_rtn = 0x32,
|
||||
midgard_alu_op_fmov_rtp = 0x33,
|
||||
midgard_alu_op_froundeven = 0x34,
|
||||
midgard_alu_op_ftrunc = 0x35,
|
||||
midgard_alu_op_ffloor = 0x36,
|
||||
midgard_alu_op_fceil = 0x37,
|
||||
midgard_alu_op_ffma = 0x38,
|
||||
midgard_alu_op_fdot3 = 0x3C,
|
||||
midgard_alu_op_fdot3r = 0x3D,
|
||||
midgard_alu_op_fdot4 = 0x3E,
|
||||
midgard_alu_op_freduce = 0x3F,
|
||||
midgard_alu_op_fmov = 0x30, /* fmov_rte */
|
||||
midgard_alu_op_fmov_rtz = 0x31,
|
||||
midgard_alu_op_fmov_rtn = 0x32,
|
||||
midgard_alu_op_fmov_rtp = 0x33,
|
||||
midgard_alu_op_froundeven = 0x34,
|
||||
midgard_alu_op_ftrunc = 0x35,
|
||||
midgard_alu_op_ffloor = 0x36,
|
||||
midgard_alu_op_fceil = 0x37,
|
||||
midgard_alu_op_ffma = 0x38, /* rte */
|
||||
midgard_alu_op_ffma_rtz = 0x39,
|
||||
midgard_alu_op_ffma_rtn = 0x3A,
|
||||
midgard_alu_op_ffma_rtp = 0x3B,
|
||||
midgard_alu_op_fdot3 = 0x3C,
|
||||
midgard_alu_op_fdot3r = 0x3D,
|
||||
midgard_alu_op_fdot4 = 0x3E,
|
||||
midgard_alu_op_freduce = 0x3F,
|
||||
|
||||
midgard_alu_op_iadd = 0x40,
|
||||
midgard_alu_op_ishladd = 0x41, /* a + (b<<1) */
|
||||
midgard_alu_op_isub = 0x46,
|
||||
midgard_alu_op_iaddsat = 0x48,
|
||||
midgard_alu_op_uaddsat = 0x49,
|
||||
midgard_alu_op_isubsat = 0x4E,
|
||||
midgard_alu_op_usubsat = 0x4F,
|
||||
midgard_alu_op_iadd = 0x40,
|
||||
midgard_alu_op_ishladd = 0x41, /* (a<<1) + b */
|
||||
midgard_alu_op_isub = 0x46,
|
||||
midgard_alu_op_ishlsub = 0x47, /* (a<<1) - b */
|
||||
midgard_alu_op_iaddsat = 0x48,
|
||||
midgard_alu_op_uaddsat = 0x49,
|
||||
midgard_alu_op_isubsat = 0x4E,
|
||||
midgard_alu_op_usubsat = 0x4F,
|
||||
|
||||
midgard_alu_op_imul = 0x58,
|
||||
midgard_alu_op_imul = 0x58,
|
||||
/* Multiplies two ints and stores the result in the next larger datasize. */
|
||||
midgard_alu_op_iwmul = 0x59, /* sint * sint = sint */
|
||||
midgard_alu_op_uwmul = 0x5A, /* uint * uint = uint */
|
||||
midgard_alu_op_iuwmul = 0x5B, /* sint * uint = sint */
|
||||
|
||||
midgard_alu_op_imin = 0x60,
|
||||
midgard_alu_op_umin = 0x61,
|
||||
midgard_alu_op_imax = 0x62,
|
||||
midgard_alu_op_umax = 0x63,
|
||||
midgard_alu_op_ihadd = 0x64,
|
||||
midgard_alu_op_uhadd = 0x65,
|
||||
midgard_alu_op_irhadd = 0x66,
|
||||
midgard_alu_op_urhadd = 0x67,
|
||||
midgard_alu_op_iasr = 0x68,
|
||||
midgard_alu_op_ilsr = 0x69,
|
||||
midgard_alu_op_ishl = 0x6E,
|
||||
midgard_alu_op_imin = 0x60,
|
||||
midgard_alu_op_umin = 0x61,
|
||||
midgard_alu_op_imax = 0x62,
|
||||
midgard_alu_op_umax = 0x63,
|
||||
midgard_alu_op_iavg = 0x64,
|
||||
midgard_alu_op_uavg = 0x65,
|
||||
midgard_alu_op_iravg = 0x66,
|
||||
midgard_alu_op_uravg = 0x67,
|
||||
midgard_alu_op_iasr = 0x68,
|
||||
midgard_alu_op_ilsr = 0x69,
|
||||
midgard_alu_op_ishlsat = 0x6C,
|
||||
midgard_alu_op_ushlsat = 0x6D,
|
||||
midgard_alu_op_ishl = 0x6E,
|
||||
|
||||
midgard_alu_op_iand = 0x70,
|
||||
midgard_alu_op_ior = 0x71,
|
||||
midgard_alu_op_inand = 0x72, /* ~(a & b), for inot let a = b */
|
||||
midgard_alu_op_inor = 0x73, /* ~(a | b) */
|
||||
midgard_alu_op_iandnot = 0x74, /* (a & ~b), used for not/b2f */
|
||||
midgard_alu_op_iornot = 0x75, /* (a | ~b) */
|
||||
midgard_alu_op_ixor = 0x76,
|
||||
midgard_alu_op_inxor = 0x77, /* ~(a & b) */
|
||||
midgard_alu_op_iclz = 0x78, /* Number of zeroes on left */
|
||||
midgard_alu_op_ipopcnt = 0x7A, /* Population count */
|
||||
midgard_alu_op_imov = 0x7B,
|
||||
midgard_alu_op_iabsdiff = 0x7C,
|
||||
midgard_alu_op_uabsdiff = 0x7D,
|
||||
midgard_alu_op_ichoose = 0x7E, /* vector, component number - dupe for shuffle() */
|
||||
midgard_alu_op_iand = 0x70,
|
||||
midgard_alu_op_ior = 0x71,
|
||||
midgard_alu_op_inand = 0x72, /* ~(a & b), for inot let a = b */
|
||||
midgard_alu_op_inor = 0x73, /* ~(a | b) */
|
||||
midgard_alu_op_iandnot = 0x74, /* (a & ~b), used for not/b2f */
|
||||
midgard_alu_op_iornot = 0x75, /* (a | ~b) */
|
||||
midgard_alu_op_ixor = 0x76,
|
||||
midgard_alu_op_inxor = 0x77, /* ~(a ^ b) */
|
||||
midgard_alu_op_iclz = 0x78, /* Number of zeroes on left */
|
||||
midgard_alu_op_ipopcnt = 0x7A, /* Population count */
|
||||
midgard_alu_op_imov = 0x7B,
|
||||
midgard_alu_op_iabsdiff = 0x7C,
|
||||
midgard_alu_op_uabsdiff = 0x7D,
|
||||
midgard_alu_op_ichoose = 0x7E, /* vector, component number - dupe for shuffle() */
|
||||
|
||||
midgard_alu_op_feq = 0x80,
|
||||
midgard_alu_op_fne = 0x81,
|
||||
midgard_alu_op_flt = 0x82,
|
||||
midgard_alu_op_fle = 0x83,
|
||||
midgard_alu_op_fball_eq = 0x88,
|
||||
midgard_alu_op_fball_neq = 0x89,
|
||||
midgard_alu_op_fball_lt = 0x8A, /* all(lessThan(.., ..)) */
|
||||
midgard_alu_op_fball_lte = 0x8B, /* all(lessThanEqual(.., ..)) */
|
||||
midgard_alu_op_feq = 0x80,
|
||||
midgard_alu_op_fne = 0x81,
|
||||
midgard_alu_op_flt = 0x82,
|
||||
midgard_alu_op_fle = 0x83,
|
||||
midgard_alu_op_fball_eq = 0x88,
|
||||
midgard_alu_op_fball_neq = 0x89,
|
||||
midgard_alu_op_fball_lt = 0x8A, /* all(lessThan(.., ..)) */
|
||||
midgard_alu_op_fball_lte = 0x8B, /* all(lessThanEqual(.., ..)) */
|
||||
|
||||
midgard_alu_op_fbany_eq = 0x90,
|
||||
midgard_alu_op_fbany_neq = 0x91,
|
||||
midgard_alu_op_fbany_lt = 0x92, /* any(lessThan(.., ..)) */
|
||||
midgard_alu_op_fbany_lte = 0x93, /* any(lessThanEqual(.., ..)) */
|
||||
midgard_alu_op_fbany_eq = 0x90,
|
||||
midgard_alu_op_fbany_neq = 0x91,
|
||||
midgard_alu_op_fbany_lt = 0x92, /* any(lessThan(.., ..)) */
|
||||
midgard_alu_op_fbany_lte = 0x93, /* any(lessThanEqual(.., ..)) */
|
||||
|
||||
midgard_alu_op_f2i_rte = 0x98,
|
||||
midgard_alu_op_f2i_rtz = 0x99,
|
||||
midgard_alu_op_f2i_rtn = 0x9A,
|
||||
midgard_alu_op_f2i_rtp = 0x9B,
|
||||
midgard_alu_op_f2u_rte = 0x9C,
|
||||
midgard_alu_op_f2u_rtz = 0x9D,
|
||||
midgard_alu_op_f2u_rtn = 0x9E,
|
||||
midgard_alu_op_f2u_rtp = 0x9F,
|
||||
midgard_alu_op_f2i_rte = 0x98,
|
||||
midgard_alu_op_f2i_rtz = 0x99,
|
||||
midgard_alu_op_f2i_rtn = 0x9A,
|
||||
midgard_alu_op_f2i_rtp = 0x9B,
|
||||
midgard_alu_op_f2u_rte = 0x9C,
|
||||
midgard_alu_op_f2u_rtz = 0x9D,
|
||||
midgard_alu_op_f2u_rtn = 0x9E,
|
||||
midgard_alu_op_f2u_rtp = 0x9F,
|
||||
|
||||
midgard_alu_op_ieq = 0xA0,
|
||||
midgard_alu_op_ine = 0xA1,
|
||||
midgard_alu_op_ult = 0xA2,
|
||||
midgard_alu_op_ule = 0xA3,
|
||||
midgard_alu_op_ilt = 0xA4,
|
||||
midgard_alu_op_ile = 0xA5,
|
||||
midgard_alu_op_iball_eq = 0xA8,
|
||||
midgard_alu_op_iball_neq = 0xA9,
|
||||
midgard_alu_op_uball_lt = 0xAA,
|
||||
midgard_alu_op_uball_lte = 0xAB,
|
||||
midgard_alu_op_iball_lt = 0xAC,
|
||||
midgard_alu_op_iball_lte = 0xAD,
|
||||
midgard_alu_op_ieq = 0xA0,
|
||||
midgard_alu_op_ine = 0xA1,
|
||||
midgard_alu_op_ult = 0xA2,
|
||||
midgard_alu_op_ule = 0xA3,
|
||||
midgard_alu_op_ilt = 0xA4,
|
||||
midgard_alu_op_ile = 0xA5,
|
||||
midgard_alu_op_iball_eq = 0xA8,
|
||||
midgard_alu_op_iball_neq = 0xA9,
|
||||
midgard_alu_op_uball_lt = 0xAA,
|
||||
midgard_alu_op_uball_lte = 0xAB,
|
||||
midgard_alu_op_iball_lt = 0xAC,
|
||||
midgard_alu_op_iball_lte = 0xAD,
|
||||
|
||||
midgard_alu_op_ibany_eq = 0xB0,
|
||||
midgard_alu_op_ibany_neq = 0xB1,
|
||||
midgard_alu_op_ubany_lt = 0xB2,
|
||||
midgard_alu_op_ubany_lte = 0xB3,
|
||||
midgard_alu_op_ibany_lt = 0xB4, /* any(lessThan(.., ..)) */
|
||||
midgard_alu_op_ibany_lte = 0xB5, /* any(lessThanEqual(.., ..)) */
|
||||
midgard_alu_op_i2f_rte = 0xB8,
|
||||
midgard_alu_op_i2f_rtz = 0xB9,
|
||||
midgard_alu_op_i2f_rtn = 0xBA,
|
||||
midgard_alu_op_i2f_rtp = 0xBB,
|
||||
midgard_alu_op_u2f_rte = 0xBC,
|
||||
midgard_alu_op_u2f_rtz = 0xBD,
|
||||
midgard_alu_op_u2f_rtn = 0xBE,
|
||||
midgard_alu_op_u2f_rtp = 0xBF,
|
||||
midgard_alu_op_ibany_eq = 0xB0,
|
||||
midgard_alu_op_ibany_neq = 0xB1,
|
||||
midgard_alu_op_ubany_lt = 0xB2,
|
||||
midgard_alu_op_ubany_lte = 0xB3,
|
||||
midgard_alu_op_ibany_lt = 0xB4, /* any(lessThan(.., ..)) */
|
||||
midgard_alu_op_ibany_lte = 0xB5, /* any(lessThanEqual(.., ..)) */
|
||||
midgard_alu_op_i2f_rte = 0xB8,
|
||||
midgard_alu_op_i2f_rtz = 0xB9,
|
||||
midgard_alu_op_i2f_rtn = 0xBA,
|
||||
midgard_alu_op_i2f_rtp = 0xBB,
|
||||
midgard_alu_op_u2f_rte = 0xBC,
|
||||
midgard_alu_op_u2f_rtz = 0xBD,
|
||||
midgard_alu_op_u2f_rtn = 0xBE,
|
||||
midgard_alu_op_u2f_rtp = 0xBF,
|
||||
|
||||
midgard_alu_op_icsel_v = 0xC0, /* condition code r31 */
|
||||
midgard_alu_op_icsel = 0xC1, /* condition code r31.w */
|
||||
midgard_alu_op_fcsel_v = 0xC4,
|
||||
midgard_alu_op_fcsel = 0xC5,
|
||||
midgard_alu_op_fround = 0xC6,
|
||||
/* All csel* instructions use as a condition the output of the previous
|
||||
* vector or scalar unit, thus it must run on the second pipeline stage
|
||||
* and be scheduled to the same bundle as the opcode that it uses as a
|
||||
* condition. */
|
||||
midgard_alu_op_icsel_v = 0xC0,
|
||||
midgard_alu_op_icsel = 0xC1,
|
||||
midgard_alu_op_fcsel_v = 0xC4,
|
||||
midgard_alu_op_fcsel = 0xC5,
|
||||
midgard_alu_op_froundaway = 0xC6, /* round to nearest away */
|
||||
|
||||
midgard_alu_op_fatan_pt2 = 0xE8,
|
||||
midgard_alu_op_fpow_pt1 = 0xEC,
|
||||
midgard_alu_op_fpown_pt1 = 0xED,
|
||||
midgard_alu_op_fpowr_pt1 = 0xEE,
|
||||
midgard_alu_op_fatan2_pt2 = 0xE8,
|
||||
midgard_alu_op_fpow_pt1 = 0xEC,
|
||||
midgard_alu_op_fpown_pt1 = 0xED,
|
||||
midgard_alu_op_fpowr_pt1 = 0xEE,
|
||||
|
||||
midgard_alu_op_frcp = 0xF0,
|
||||
midgard_alu_op_frsqrt = 0xF2,
|
||||
midgard_alu_op_fsqrt = 0xF3,
|
||||
midgard_alu_op_fexp2 = 0xF4,
|
||||
midgard_alu_op_flog2 = 0xF5,
|
||||
midgard_alu_op_fsin = 0xF6,
|
||||
midgard_alu_op_fcos = 0xF7,
|
||||
midgard_alu_op_fatan2_pt1 = 0xF9,
|
||||
midgard_alu_op_frcp = 0xF0,
|
||||
midgard_alu_op_frsqrt = 0xF2,
|
||||
midgard_alu_op_fsqrt = 0xF3,
|
||||
midgard_alu_op_fexp2 = 0xF4,
|
||||
midgard_alu_op_flog2 = 0xF5,
|
||||
midgard_alu_op_fsinpi = 0xF6, /* sin(pi * x) */
|
||||
midgard_alu_op_fcospi = 0xF7, /* cos(pi * x) */
|
||||
midgard_alu_op_fatan2_pt1 = 0xF9,
|
||||
} midgard_alu_op;
|
||||
|
||||
typedef enum {
|
||||
|
||||
@@ -807,8 +807,8 @@ emit_alu(compiler_context *ctx, nir_alu_instr *instr)
|
||||
ALU_CASE_RTZ(i2f16, i2f_rte);
|
||||
ALU_CASE_RTZ(u2f16, u2f_rte);
|
||||
|
||||
ALU_CASE(fsin, fsin);
|
||||
ALU_CASE(fcos, fcos);
|
||||
ALU_CASE(fsin, fsinpi);
|
||||
ALU_CASE(fcos, fcospi);
|
||||
|
||||
/* We'll get 0 in the second arg, so:
|
||||
* ~a = ~(a | 0) = nor(a, 0) */
|
||||
@@ -2545,8 +2545,8 @@ max_bitsize_for_alu(midgard_instruction *ins)
|
||||
case midgard_alu_op_fsqrt:
|
||||
case midgard_alu_op_frcp:
|
||||
case midgard_alu_op_frsqrt:
|
||||
case midgard_alu_op_fsin:
|
||||
case midgard_alu_op_fcos:
|
||||
case midgard_alu_op_fsinpi:
|
||||
case midgard_alu_op_fcospi:
|
||||
case midgard_alu_op_fexp2:
|
||||
case midgard_alu_op_flog2:
|
||||
max_bitsize = MAX2(max_bitsize, 32);
|
||||
|
||||
+135
-114
@@ -33,144 +33,165 @@
|
||||
* avoid duplications in the binary */
|
||||
|
||||
struct mir_op_props alu_opcode_props[256] = {
|
||||
[midgard_alu_op_fadd] = {"fadd", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_fmul] = {"fmul", UNITS_MUL | UNIT_VLUT | OP_COMMUTES},
|
||||
[midgard_alu_op_fmin] = {"fmin", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_fmax] = {"fmax", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_imin] = {"imin", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_imax] = {"imax", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_umin] = {"umin", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_umax] = {"umax", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_ihadd] = {"ihadd", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_uhadd] = {"uhadd", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_irhadd] = {"irhadd", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_urhadd] = {"urhadd", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_fadd] = {"FADD.rte", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_fadd_rtz] = {"FADD.rtz", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_fadd_rtn] = {"FADD.rtn", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_fadd_rtp] = {"FADD.rtp", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_fmul] = {"FMUL.rte", UNITS_MUL | UNIT_VLUT | OP_COMMUTES},
|
||||
[midgard_alu_op_fmul_rtz] = {"FMUL.rtz", UNITS_MUL | UNIT_VLUT | OP_COMMUTES},
|
||||
[midgard_alu_op_fmul_rtn] = {"FMUL.rtn", UNITS_MUL | UNIT_VLUT | OP_COMMUTES},
|
||||
[midgard_alu_op_fmul_rtp] = {"FMUL.rtp", UNITS_MUL | UNIT_VLUT | OP_COMMUTES},
|
||||
[midgard_alu_op_fmin] = {"FMIN", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_fmin_nan] = {"FMIN.nan", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_fabsmin] = {"FABSMIN", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_fabsmin_nan] = {"FABSMIN.nan", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_fmax] = {"FMAX", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_fmax_nan] = {"FMAX.nan", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_fabsmax] = {"FABSMAX", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_fabsmax_nan] = {"FABSMAX.nan", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_imin] = {"MIN", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_imax] = {"MAX", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_umin] = {"MIN", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_umax] = {"MAX", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_iavg] = {"AVG.rtz", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_uavg] = {"AVG.rtz", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_iravg] = {"AVG.round", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_uravg] = {"AVG.round", UNITS_ADD | OP_COMMUTES},
|
||||
|
||||
[midgard_alu_op_fmov] = {"fmov", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
[midgard_alu_op_fmov_rtz] = {"fmov_rtz", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
[midgard_alu_op_fmov_rtn] = {"fmov_rtn", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
[midgard_alu_op_fmov_rtp] = {"fmov_rtp", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
[midgard_alu_op_fround] = {"fround", UNITS_ADD},
|
||||
[midgard_alu_op_froundeven] = {"froundeven", UNITS_ADD},
|
||||
[midgard_alu_op_ftrunc] = {"ftrunc", UNITS_ADD},
|
||||
[midgard_alu_op_ffloor] = {"ffloor", UNITS_ADD},
|
||||
[midgard_alu_op_fceil] = {"fceil", UNITS_ADD},
|
||||
[midgard_alu_op_fmov] = {"FMOV.rte", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
[midgard_alu_op_fmov_rtz] = {"FMOV.rtz", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
[midgard_alu_op_fmov_rtn] = {"FMOV.rtn", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
[midgard_alu_op_fmov_rtp] = {"FMOV.rtp", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
[midgard_alu_op_froundaway] = {"FROUNDAWAY", UNITS_ADD},
|
||||
[midgard_alu_op_froundeven] = {"FROUNDEVEN", UNITS_ADD},
|
||||
[midgard_alu_op_ftrunc] = {"FTRUNC", UNITS_ADD},
|
||||
[midgard_alu_op_ffloor] = {"FFLOOR", UNITS_ADD},
|
||||
[midgard_alu_op_fceil] = {"FCEIL", UNITS_ADD},
|
||||
|
||||
/* Multiplies the X/Y components of the first arg and adds the second
|
||||
* arg. Like other LUTs, it must be scalarized. */
|
||||
[midgard_alu_op_ffma] = {"ffma", UNIT_VLUT},
|
||||
[midgard_alu_op_ffma] = {"FMA.rte", UNIT_VLUT},
|
||||
[midgard_alu_op_ffma_rtz] = {"FMA.rtz", UNIT_VLUT},
|
||||
[midgard_alu_op_ffma_rtn] = {"FMA.rtn", UNIT_VLUT},
|
||||
[midgard_alu_op_ffma_rtp] = {"FMA.rtp", UNIT_VLUT},
|
||||
|
||||
/* Though they output a scalar, they need to run on a vector unit
|
||||
* since they process vectors */
|
||||
[midgard_alu_op_fdot3] = {"fdot3", UNIT_VMUL | OP_CHANNEL_COUNT(3) | OP_COMMUTES},
|
||||
[midgard_alu_op_fdot3r] = {"fdot3r", UNIT_VMUL | OP_CHANNEL_COUNT(3) | OP_COMMUTES},
|
||||
[midgard_alu_op_fdot4] = {"fdot4", UNIT_VMUL | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_fdot3] = {"FDOT3", UNIT_VMUL | OP_CHANNEL_COUNT(3) | OP_COMMUTES},
|
||||
[midgard_alu_op_fdot3r] = {"FDOT3R", UNIT_VMUL | OP_CHANNEL_COUNT(3) | OP_COMMUTES},
|
||||
[midgard_alu_op_fdot4] = {"FDOT4", UNIT_VMUL | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
|
||||
/* Incredibly, iadd can run on vmul, etc */
|
||||
[midgard_alu_op_iadd] = {"iadd", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_ishladd] = {"ishladd", UNITS_MUL},
|
||||
[midgard_alu_op_iaddsat] = {"iaddsat", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_uaddsat] = {"uaddsat", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_iabsdiff] = {"iabsdiff", UNITS_ADD},
|
||||
[midgard_alu_op_uabsdiff] = {"uabsdiff", UNITS_ADD},
|
||||
[midgard_alu_op_ichoose] = {"ichoose", UNITS_ADD},
|
||||
[midgard_alu_op_isub] = {"isub", UNITS_MOST},
|
||||
[midgard_alu_op_isubsat] = {"isubsat", UNITS_MOST},
|
||||
[midgard_alu_op_usubsat] = {"usubsat", UNITS_MOST},
|
||||
[midgard_alu_op_imul] = {"imul", UNITS_MUL | OP_COMMUTES},
|
||||
[midgard_alu_op_imov] = {"imov", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
[midgard_alu_op_iadd] = {"ADD", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_ishladd] = {"ADD", UNITS_MUL},
|
||||
[midgard_alu_op_iaddsat] = {"ADDSAT", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_uaddsat] = {"ADDSAT", UNITS_ADD | OP_COMMUTES},
|
||||
[midgard_alu_op_uabsdiff] = {"ABSDIFF", UNITS_ADD},
|
||||
[midgard_alu_op_iabsdiff] = {"ABSDIFF", UNITS_ADD},
|
||||
[midgard_alu_op_ichoose] = {"CHOOSE", UNITS_ADD},
|
||||
[midgard_alu_op_isub] = {"SUB", UNITS_MOST},
|
||||
[midgard_alu_op_ishlsub] = {"SUB", UNITS_MUL},
|
||||
[midgard_alu_op_isubsat] = {"SUBSAT", UNITS_MOST},
|
||||
[midgard_alu_op_usubsat] = {"SUBSAT", UNITS_MOST},
|
||||
[midgard_alu_op_imul] = {"MUL", UNITS_MUL | OP_COMMUTES},
|
||||
[midgard_alu_op_iwmul] = {"WMUL.s", UNIT_VMUL | OP_COMMUTES},
|
||||
[midgard_alu_op_uwmul] = {"WMUL.u", UNIT_VMUL | OP_COMMUTES},
|
||||
[midgard_alu_op_iuwmul] = {"WMUL.su", UNIT_VMUL | OP_COMMUTES},
|
||||
[midgard_alu_op_imov] = {"MOV", UNITS_ALL | QUIRK_FLIPPED_R24},
|
||||
|
||||
/* For vector comparisons, use ball etc */
|
||||
[midgard_alu_op_feq] = {"feq", UNITS_MOST | OP_TYPE_CONVERT | OP_COMMUTES},
|
||||
[midgard_alu_op_fne] = {"fne", UNITS_MOST | OP_TYPE_CONVERT | OP_COMMUTES},
|
||||
[midgard_alu_op_fle] = {"fle", UNITS_MOST | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_flt] = {"flt", UNITS_MOST | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_ieq] = {"ieq", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_ine] = {"ine", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_ilt] = {"ilt", UNITS_MOST},
|
||||
[midgard_alu_op_ile] = {"ile", UNITS_MOST},
|
||||
[midgard_alu_op_ult] = {"ult", UNITS_MOST},
|
||||
[midgard_alu_op_ule] = {"ule", UNITS_MOST},
|
||||
[midgard_alu_op_feq] = {"FCMP.eq", UNITS_MOST | OP_TYPE_CONVERT | OP_COMMUTES},
|
||||
[midgard_alu_op_fne] = {"FCMP.ne", UNITS_MOST | OP_TYPE_CONVERT | OP_COMMUTES},
|
||||
[midgard_alu_op_fle] = {"FCMP.le", UNITS_MOST | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_flt] = {"FCMP.lt", UNITS_MOST | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_ieq] = {"CMP.eq", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_ine] = {"CMP.ne", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_ilt] = {"CMP.lt", UNITS_MOST},
|
||||
[midgard_alu_op_ile] = {"CMP.le", UNITS_MOST},
|
||||
[midgard_alu_op_ult] = {"CMP.lt", UNITS_MOST},
|
||||
[midgard_alu_op_ule] = {"CMP.le", UNITS_MOST},
|
||||
|
||||
/* csel must run in the second pipeline stage (r31 written in first) */
|
||||
[midgard_alu_op_icsel] = {"icsel", UNIT_VADD | UNIT_SMUL},
|
||||
[midgard_alu_op_icsel_v] = {"icsel_v", UNIT_VADD | UNIT_SMUL}, /* Acts as bitselect() */
|
||||
[midgard_alu_op_fcsel_v] = {"fcsel_v", UNIT_VADD | UNIT_SMUL},
|
||||
[midgard_alu_op_fcsel] = {"fcsel", UNIT_VADD | UNIT_SMUL},
|
||||
/* csel must run in the second pipeline stage (condition written in first) */
|
||||
[midgard_alu_op_icsel] = {"CSEL.scalar", UNIT_VADD | UNIT_SMUL},
|
||||
[midgard_alu_op_icsel_v] = {"CSEL.vector", UNIT_VADD | UNIT_SMUL}, /* Acts as bitselect() */
|
||||
[midgard_alu_op_fcsel_v] = {"FCSEL.vector", UNIT_VADD | UNIT_SMUL},
|
||||
[midgard_alu_op_fcsel] = {"FCSEL.scalar", UNIT_VADD | UNIT_SMUL},
|
||||
|
||||
[midgard_alu_op_frcp] = {"frcp", UNIT_VLUT},
|
||||
[midgard_alu_op_frsqrt] = {"frsqrt", UNIT_VLUT},
|
||||
[midgard_alu_op_fsqrt] = {"fsqrt", UNIT_VLUT},
|
||||
[midgard_alu_op_fpow_pt1] = {"fpow_pt1", UNIT_VLUT},
|
||||
[midgard_alu_op_fpown_pt1] = {"fpown_pt1", UNIT_VLUT},
|
||||
[midgard_alu_op_fpowr_pt1] = {"fpowr_pt1", UNIT_VLUT},
|
||||
[midgard_alu_op_fexp2] = {"fexp2", UNIT_VLUT},
|
||||
[midgard_alu_op_flog2] = {"flog2", UNIT_VLUT},
|
||||
[midgard_alu_op_frcp] = {"FRCP", UNIT_VLUT},
|
||||
[midgard_alu_op_frsqrt] = {"FRSQRT", UNIT_VLUT},
|
||||
[midgard_alu_op_fsqrt] = {"FSQRT", UNIT_VLUT},
|
||||
[midgard_alu_op_fpow_pt1] = {"FPOW_PT1", UNIT_VLUT},
|
||||
[midgard_alu_op_fpown_pt1] = {"FPOWN_PT1", UNIT_VLUT},
|
||||
[midgard_alu_op_fpowr_pt1] = {"FPOWR_PT1", UNIT_VLUT},
|
||||
[midgard_alu_op_fexp2] = {"FEXP2", UNIT_VLUT},
|
||||
[midgard_alu_op_flog2] = {"FLOG2", UNIT_VLUT},
|
||||
|
||||
[midgard_alu_op_f2i_rte] = {"f2i_rte", UNITS_ADD | OP_TYPE_CONVERT | MIDGARD_ROUNDS},
|
||||
[midgard_alu_op_f2i_rtz] = {"f2i_rtz", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2i_rtn] = {"f2i_rtn", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2i_rtp] = {"f2i_rtp", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2u_rte] = {"f2u_rte", UNITS_ADD | OP_TYPE_CONVERT | MIDGARD_ROUNDS},
|
||||
[midgard_alu_op_f2u_rtz] = {"f2u_rtz", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2u_rtn] = {"f2u_rtn", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2u_rtp] = {"f2u_rtp", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_i2f_rte] = {"i2f_rte", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_i2f_rtz] = {"i2f_rtz", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_i2f_rtn] = {"i2f_rtn", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_i2f_rtp] = {"i2f_rtp", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_u2f_rte] = {"u2f_rte", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_u2f_rtz] = {"u2f_rtz", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_u2f_rtn] = {"u2f_rtn", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_u2f_rtp] = {"u2f_rtp", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2i_rte] = {"F2I.rte", UNITS_ADD | OP_TYPE_CONVERT | MIDGARD_ROUNDS},
|
||||
[midgard_alu_op_f2i_rtz] = {"F2I.rtz", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2i_rtn] = {"F2I.rtn", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2i_rtp] = {"F2I.rtp", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2u_rte] = {"F2U.rte", UNITS_ADD | OP_TYPE_CONVERT | MIDGARD_ROUNDS},
|
||||
[midgard_alu_op_f2u_rtz] = {"F2U.rtz", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2u_rtn] = {"F2U.rtn", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_f2u_rtp] = {"F2U.rtp", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_i2f_rte] = {"I2F.rte", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_i2f_rtz] = {"I2F.rtz", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_i2f_rtn] = {"I2F.rtn", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_i2f_rtp] = {"I2F.rtp", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_u2f_rte] = {"U2F.rte", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_u2f_rtz] = {"U2F.rtz", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_u2f_rtn] = {"U2F.rtn", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_u2f_rtp] = {"U2F.rtp", UNITS_ADD | OP_TYPE_CONVERT},
|
||||
|
||||
[midgard_alu_op_fsin] = {"fsin", UNIT_VLUT},
|
||||
[midgard_alu_op_fcos] = {"fcos", UNIT_VLUT},
|
||||
[midgard_alu_op_fsinpi] = {"FSINPI", UNIT_VLUT},
|
||||
[midgard_alu_op_fcospi] = {"FCOSPI", UNIT_VLUT},
|
||||
|
||||
[midgard_alu_op_iand] = {"iand", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_iandnot] = {"iandnot", UNITS_MOST},
|
||||
[midgard_alu_op_iand] = {"AND", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_iandnot] = {"ANDNOT", UNITS_MOST},
|
||||
|
||||
[midgard_alu_op_ior] = {"ior", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_iornot] = {"iornot", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_inor] = {"inor", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_ixor] = {"ixor", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_inxor] = {"inxor", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_iclz] = {"iclz", UNITS_ADD},
|
||||
[midgard_alu_op_ipopcnt] = {"ipopcnt", UNIT_VADD},
|
||||
[midgard_alu_op_inand] = {"inand", UNITS_MOST},
|
||||
[midgard_alu_op_ishl] = {"ishl", UNITS_ADD},
|
||||
[midgard_alu_op_iasr] = {"iasr", UNITS_ADD},
|
||||
[midgard_alu_op_ilsr] = {"ilsr", UNITS_ADD},
|
||||
[midgard_alu_op_ior] = {"OR", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_iornot] = {"ORNOT", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_inor] = {"NOR", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_ixor] = {"XOR", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_inxor] = {"NXOR", UNITS_MOST | OP_COMMUTES},
|
||||
[midgard_alu_op_iclz] = {"CLZ", UNITS_ADD},
|
||||
[midgard_alu_op_ipopcnt] = {"POPCNT", UNIT_VADD},
|
||||
[midgard_alu_op_inand] = {"NAND", UNITS_MOST},
|
||||
[midgard_alu_op_ishl] = {"SHL", UNITS_ADD},
|
||||
[midgard_alu_op_ishlsat] = {"SHL.sat", UNITS_ADD},
|
||||
[midgard_alu_op_ushlsat] = {"SHL.sat", UNITS_ADD},
|
||||
[midgard_alu_op_iasr] = {"ASR", UNITS_ADD},
|
||||
[midgard_alu_op_ilsr] = {"LSR", UNITS_ADD},
|
||||
|
||||
[midgard_alu_op_fball_eq] = {"fball_eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fball_neq] = {"fball_neq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fball_lt] = {"fball_lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fball_lte] = {"fball_lte", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fball_eq] = {"FCMP.all.eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fball_neq] = {"FCMP.all.ne", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fball_lt] = {"FCMP.all.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fball_lte] = {"FCMP.all.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
|
||||
[midgard_alu_op_fbany_eq] = {"fbany_eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fbany_neq] = {"fbany_neq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fbany_lt] = {"fbany_lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fbany_lte] = {"fbany_lte", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fbany_eq] = {"FCMP.any.eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fbany_neq] = {"FCMP.any.ne", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fbany_lt] = {"FCMP.any.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
[midgard_alu_op_fbany_lte] = {"FCMP.any.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES | OP_TYPE_CONVERT},
|
||||
|
||||
[midgard_alu_op_iball_eq] = {"iball_eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_iball_neq] = {"iball_neq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_iball_lt] = {"iball_lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_iball_lte] = {"iball_lte", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_uball_lt] = {"uball_lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_uball_lte] = {"uball_lte", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_iball_eq] = {"CMP.all.eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_iball_neq] = {"CMP.all.ne", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_iball_lt] = {"CMP.all.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_iball_lte] = {"CMP.all.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_uball_lt] = {"CMP.all.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_uball_lte] = {"CMP.all.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
|
||||
[midgard_alu_op_ibany_eq] = {"ibany_eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ibany_neq] = {"ibany_neq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ibany_lt] = {"ibany_lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ibany_lte] = {"ibany_lte", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ubany_lt] = {"ubany_lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ubany_lte] = {"ubany_lte", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ibany_eq] = {"CMP.any.eq", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ibany_neq] = {"CMP.any.ne", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ibany_lt] = {"CMP.any.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ibany_lte] = {"CMP.any.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ubany_lt] = {"CMP.any.lt", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
[midgard_alu_op_ubany_lte] = {"CMP.any.le", UNITS_VECTOR | OP_CHANNEL_COUNT(4) | OP_COMMUTES},
|
||||
|
||||
[midgard_alu_op_fatan2_pt1] = {"fatan2_pt1", UNIT_VLUT},
|
||||
[midgard_alu_op_fatan_pt2] = {"fatan_pt2", UNIT_VLUT},
|
||||
[midgard_alu_op_fatan2_pt1] = {"FATAN2_PT1", UNIT_VLUT},
|
||||
[midgard_alu_op_fatan2_pt2] = {"FATAN2_PT2", UNIT_VLUT},
|
||||
|
||||
/* Haven't seen in a while */
|
||||
[midgard_alu_op_freduce] = {"freduce", 0},
|
||||
[midgard_alu_op_freduce] = {"FREDUCE", 0},
|
||||
};
|
||||
|
||||
/* Define shorthands */
|
||||
|
||||
Reference in New Issue
Block a user