mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
r600/sfn: add source and dest mod info to opcode table
Signed-off-by: Gert Wollny <gert.wollny@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23702>
This commit is contained in:
parent
2f6ded1098
commit
da92733d5a
2 changed files with 209 additions and 204 deletions
|
|
@ -34,210 +34,210 @@ namespace r600 {
|
|||
#define X AluOp::x
|
||||
|
||||
const std::map<EAluOp, AluOp> alu_ops = {
|
||||
{op0_nop, AluOp(0, 0, A, A, A, "NOP") },
|
||||
{op0_group_barrier, AluOp(0, 0, X, X, X, "GROUP_BARRIER") },
|
||||
{op0_group_seq_begin, AluOp(0, 0, A, A, A, "GROUP_SEQ_BEGIN") },
|
||||
{op0_group_seq_end, AluOp(0, 0, A, A, A, "GROUP_SEQ_END") },
|
||||
{op0_pred_set_clr, AluOp(0, 1, A, A, A, "PRED_SET_CLR") },
|
||||
{op0_store_flags, AluOp(0, 0, V, V, V, "STORE_FLAGS") },
|
||||
{op0_lds_1a, AluOp(0, 0, V, V, V, "LDS_1A") },
|
||||
{op0_lds_1a1d, AluOp(0, 0, V, V, V, "LDS_1A1D") },
|
||||
{op0_lds_2a, AluOp(0, 0, V, V, V, "LDS_2A") },
|
||||
{op0_nop, AluOp(0, 0, 0, 0, A, A, A, "NOP") },
|
||||
{op0_group_barrier, AluOp(0, 0, 0, 0, X, X, X, "GROUP_BARRIER") },
|
||||
{op0_group_seq_begin, AluOp(0, 0, 0, 0, A, A, A, "GROUP_SEQ_BEGIN") },
|
||||
{op0_group_seq_end, AluOp(0, 0, 0, 0, A, A, A, "GROUP_SEQ_END") },
|
||||
{op0_pred_set_clr, AluOp(0, 0, 0, 0, A, A, A, "PRED_SET_CLR") },
|
||||
{op0_store_flags, AluOp(0, 0, 0, 0, V, V, V, "STORE_FLAGS") },
|
||||
{op0_lds_1a, AluOp(0, 0, 0, 0, V, V, V, "LDS_1A") },
|
||||
{op0_lds_1a1d, AluOp(0, 0, 0, 0, V, V, V, "LDS_1A1D") },
|
||||
{op0_lds_2a, AluOp(0, 0, 0, 0, V, V, V, "LDS_2A") },
|
||||
|
||||
{op1_bcnt_int, AluOp(1, 0, V, V, V, "BCNT_INT") },
|
||||
{op1_bcnt_accum_prev_int, AluOp(1, 0, V, V, V, "BCNT_ACCUM_PREV_INT") },
|
||||
{op1_bfrev_int, AluOp(1, 0, A, A, A, "BFREV_INT") },
|
||||
{op1_ceil, AluOp(1, 1, A, A, A, "CEIL") },
|
||||
{op1_cos, AluOp(1, 1, T, T, T, "COS") },
|
||||
{op1_exp_ieee, AluOp(1, 1, T, T, T, "EXP_IEEE") },
|
||||
{op1_floor, AluOp(1, 1, A, A, A, "FLOOR") },
|
||||
{op1_flt_to_int, AluOp(1, 0, T, T, V, "FLT_TO_INT") },
|
||||
{op1_flt_to_uint, AluOp(1, 1, T, T, T, "FLT_TO_UINT") },
|
||||
{op1_flt_to_int_rpi, AluOp(1, 1, V, V, V, "FLT_TO_INT_RPI") },
|
||||
{op1_flt_to_int_floor, AluOp(1, 1, V, V, V, "FLT_TO_INT_FLOOR") },
|
||||
{op1_flt16_to_flt32, AluOp(1, 1, V, V, V, "FLT16_TO_FLT32") },
|
||||
{op1_flt32_to_flt16, AluOp(1, 1, V, V, V, "FLT32_TO_FLT16") },
|
||||
{op1_flt32_to_flt64, AluOp(1, 1, V, V, V, "FLT32_TO_FLT64") },
|
||||
{op1_flt64_to_flt32, AluOp(1, 1, A, A, A, "FLT64_TO_FLT32") },
|
||||
{op1_fract, AluOp(1, 1, A, A, A, "FRACT") },
|
||||
{op1_fract_64, AluOp(1, 1, V, V, V, "FRACT_64") },
|
||||
{op1_frexp_64, AluOp(1, 1, V, V, V, "FREXP_64") },
|
||||
{op1_int_to_flt, AluOp(1, 0, T, T, T, "INT_TO_FLT") },
|
||||
{op1_ldexp_64, AluOp(1, 1, V, V, V, "LDEXP_64") },
|
||||
{op1_interp_load_p0, AluOp(1, 1, V, V, V, "INTERP_LOAD_P0") },
|
||||
{op1_interp_load_p10, AluOp(1, 1, V, V, V, "INTERP_LOAD_P10") },
|
||||
{op1_interp_load_p20, AluOp(1, 1, V, V, V, "INTERP_LOAD_P20") },
|
||||
{op1_load_store_flags, AluOp(1, 0, V, V, V, "LOAD_STORE_FLAGS") },
|
||||
{op1_log_clamped, AluOp(1, 1, T, T, T, "LOG_CLAMPED") },
|
||||
{op1_log_ieee, AluOp(1, 1, T, T, T, "LOG_IEEE") },
|
||||
{op1_max4, AluOp(1, 1, V, V, V, "MAX4") },
|
||||
{op1_mbcnt_32hi_int, AluOp(1, 0, V, V, V, "MBCNT_32HI_INT") },
|
||||
{op1_mbcnt_32lo_accum_prev_int, AluOp(1, 0, V, V, V, "MBCNT_32LO_ACCUM_PREV_INT")},
|
||||
{op1_mov, AluOp(1, 0, A, A, A, "MOV") },
|
||||
{op1_mova_int, AluOp(1, 0, X, X, X, "MOVA_INT") },
|
||||
{op1_not_int, AluOp(1, 0, A, A, A, "NOT_INT") },
|
||||
{op1_offset_to_flt, AluOp(1, 0, V, V, V, "OFFSET_TO_FLT") },
|
||||
{op1_pred_set_inv, AluOp(1, 1, A, A, A, "PRED_SET_INV") },
|
||||
{op1_pred_set_restore, AluOp(1, 1, A, A, A, "PRED_SET_RESTORE") },
|
||||
{op1_set_cf_idx0, AluOp(1, 0, A, A, A, "SET_CF_IDX0") },
|
||||
{op1_set_cf_idx1, AluOp(1, 0, A, A, A, "SET_CF_IDX1") },
|
||||
{op1_recip_clamped, AluOp(1, 1, T, T, T, "RECIP_CLAMPED") },
|
||||
{op1_recip_ff, AluOp(1, 1, T, T, T, "RECIP_FF") },
|
||||
{op1_recip_ieee, AluOp(1, 1, T, T, T, "RECIP_IEEE") },
|
||||
{op1_recipsqrt_clamped, AluOp(1, 1, T, T, T, "RECIPSQRT_CLAMPED") },
|
||||
{op1_recipsqrt_ff, AluOp(1, 1, T, T, T, "RECIPSQRT_FF") },
|
||||
{op1_recipsqrt_ieee1, AluOp(1, 1, T, T, T, "RECIPSQRT_IEEE") },
|
||||
{op1_recip_int, AluOp(1, 0, T, T, T, "RECIP_INT") },
|
||||
{op1_recip_uint, AluOp(1, 0, T, T, T, "RECIP_UINT") },
|
||||
{op1_recip_64, AluOp(2, 1, T, T, T, "RECIP_64") },
|
||||
{op1_recip_clamped_64, AluOp(2, 1, T, T, T, "RECIP_CLAMPED_64") },
|
||||
{op1_recipsqrt_64, AluOp(2, 1, T, T, T, "RECIPSQRT_64") },
|
||||
{op1_recipsqrt_clamped_64, AluOp(2, 1, T, T, T, "RECIPSQRT_CLAMPED_64") },
|
||||
{op1_rndne, AluOp(1, 1, A, A, A, "RNDNE") },
|
||||
{op1_sqrt_ieee, AluOp(1, 1, T, T, T, "SQRT_IEEE") },
|
||||
{op1_sin, AluOp(1, 1, T, T, T, "SIN") },
|
||||
{op1_trunc, AluOp(1, 1, A, A, A, "TRUNC") },
|
||||
{op1_sqrt_64, AluOp(2, 1, T, T, T, "SQRT_64") },
|
||||
{op1_ubyte0_flt, AluOp(1, 1, V, V, V, "UBYTE0_FLT") },
|
||||
{op1_ubyte1_flt, AluOp(1, 1, V, V, V, "UBYTE1_FLT") },
|
||||
{op1_ubyte2_flt, AluOp(1, 1, V, V, V, "UBYTE2_FLT") },
|
||||
{op1_ubyte3_flt, AluOp(1, 1, V, V, V, "UBYTE3_FLT") },
|
||||
{op1_uint_to_flt, AluOp(1, 0, T, T, T, "UINT_TO_FLT") },
|
||||
{op1_ffbh_uint, AluOp(1, 0, V, V, V, "FFBH_UINT") },
|
||||
{op1_ffbl_int, AluOp(1, 0, V, V, V, "FFBL_INT") },
|
||||
{op1_ffbh_int, AluOp(1, 0, V, V, V, "FFBH_INT") },
|
||||
{op1_flt_to_uint4, AluOp(1, 1, V, V, V, "FLT_TO_UINT4") },
|
||||
{op1v_flt32_to_flt64, AluOp(1, 1, A, A, A, "FLT32_TO_FLT64") },
|
||||
{op1v_flt64_to_flt32, AluOp(1, 1, V, V, V, "FLT64_TO_FLT32") },
|
||||
{op1_bcnt_int, AluOp(1, 0, 0, 0, V, V, V, "BCNT_INT") },
|
||||
{op1_bcnt_accum_prev_int, AluOp(1, 0, 0, 0, V, V, V, "BCNT_ACCUM_PREV_INT") },
|
||||
{op1_bfrev_int, AluOp(1, 0, 0, 0, A, A, A, "BFREV_INT") },
|
||||
{op1_ceil, AluOp(1, 1, 1, 0, A, A, A, "CEIL") },
|
||||
{op1_cos, AluOp(1, 1, 1, 0, T, T, T, "COS") },
|
||||
{op1_exp_ieee, AluOp(1, 1, 1, 0, T, T, T, "EXP_IEEE") },
|
||||
{op1_floor, AluOp(1, 1, 1, 0, A, A, A, "FLOOR") },
|
||||
{op1_flt_to_int, AluOp(1, 1, 0, 0, T, T, V, "FLT_TO_INT") },
|
||||
{op1_flt_to_uint, AluOp(1, 1, 0, 0, T, T, T, "FLT_TO_UINT") },
|
||||
{op1_flt_to_int_rpi, AluOp(1, 1, 0, 0, V, V, V, "FLT_TO_INT_RPI") },
|
||||
{op1_flt_to_int_floor, AluOp(1, 1, 0, 0, V, V, V, "FLT_TO_INT_FLOOR") },
|
||||
{op1_flt16_to_flt32, AluOp(1, 0, 1, 0, V, V, V, "FLT16_TO_FLT32") },
|
||||
{op1_flt32_to_flt16, AluOp(1, 1, 0, 0, V, V, V, "FLT32_TO_FLT16") },
|
||||
{op1_flt32_to_flt64, AluOp(1, 1, 0, 0, V, V, V, "FLT32_TO_FLT64") },
|
||||
{op1_flt64_to_flt32, AluOp(1, 1, 1, 1, A, A, A, "FLT64_TO_FLT32") },
|
||||
{op1_fract, AluOp(1, 1, 0, 0, A, A, A, "FRACT") },
|
||||
{op1_fract_64, AluOp(1, 1, 0, 1, V, V, V, "FRACT_64") },
|
||||
{op1_frexp_64, AluOp(1, 1, 0, 1, V, V, V, "FREXP_64") },
|
||||
{op1_int_to_flt, AluOp(1, 0, 1, 0, T, T, T, "INT_TO_FLT") },
|
||||
{op1_ldexp_64, AluOp(1, 1, 0, 1, V, V, V, "LDEXP_64") },
|
||||
{op1_interp_load_p0, AluOp(1, 0, 0, 0, V, V, V, "INTERP_LOAD_P0") },
|
||||
{op1_interp_load_p10, AluOp(1, 0, 0, 0, V, V, V, "INTERP_LOAD_P10") },
|
||||
{op1_interp_load_p20, AluOp(1, 0, 0, 0, V, V, V, "INTERP_LOAD_P20") },
|
||||
{op1_load_store_flags, AluOp(1, 0, 0, 0, V, V, V, "LOAD_STORE_FLAGS") },
|
||||
{op1_log_clamped, AluOp(1, 1, 1, 0, T, T, T, "LOG_CLAMPED") },
|
||||
{op1_log_ieee, AluOp(1, 1, 1, 0, T, T, T, "LOG_IEEE") },
|
||||
{op1_max4, AluOp(1, 1, 1, 0, V, V, V, "MAX4") },
|
||||
{op1_mbcnt_32hi_int, AluOp(1, 0, 0, 0, V, V, V, "MBCNT_32HI_INT") },
|
||||
{op1_mbcnt_32lo_accum_prev_int, AluOp(1, 0, 0, 0, V, V, V, "MBCNT_32LO_ACCUM_PREV_INT")},
|
||||
{op1_mov, AluOp(1, 0, 0, 0, A, A, A, "MOV") },
|
||||
{op1_mova_int, AluOp(1, 0, 0, 0, X, X, X, "MOVA_INT") },
|
||||
{op1_not_int, AluOp(1, 0, 0, 0, A, A, A, "NOT_INT") },
|
||||
{op1_offset_to_flt, AluOp(1, 0, 0, 0, V, V, V, "OFFSET_TO_FLT") },
|
||||
{op1_pred_set_inv, AluOp(1, 0, 0, 0, A, A, A, "PRED_SET_INV") },
|
||||
{op1_pred_set_restore, AluOp(1, 0, 0, 0, A, A, A, "PRED_SET_RESTORE") },
|
||||
{op1_set_cf_idx0, AluOp(1, 0, 0, 0, A, A, A, "SET_CF_IDX0") },
|
||||
{op1_set_cf_idx1, AluOp(1, 0, 0, 0, A, A, A, "SET_CF_IDX1") },
|
||||
{op1_recip_clamped, AluOp(1, 1, 1, 0, T, T, T, "RECIP_CLAMPED") },
|
||||
{op1_recip_ff, AluOp(1, 1, 1, 0, T, T, T, "RECIP_FF") },
|
||||
{op1_recip_ieee, AluOp(1, 1, 1, 0, T, T, T, "RECIP_IEEE") },
|
||||
{op1_recipsqrt_clamped, AluOp(1, 1, 1, 0, T, T, T, "RECIPSQRT_CLAMPED") },
|
||||
{op1_recipsqrt_ff, AluOp(1, 1, 1, 0, T, T, T, "RECIPSQRT_FF") },
|
||||
{op1_recipsqrt_ieee1, AluOp(1, 1, 1, 0, T, T, T, "RECIPSQRT_IEEE") },
|
||||
{op1_recip_int, AluOp(1, 0, 0, 0, T, T, T, "RECIP_INT") },
|
||||
{op1_recip_uint, AluOp(1, 0, 0, 0, T, T, T, "RECIP_UINT") },
|
||||
{op1_recip_64, AluOp(2, 1, 0, 1, T, T, T, "RECIP_64") },
|
||||
{op1_recip_clamped_64, AluOp(2, 1, 0, 1, T, T, T, "RECIP_CLAMPED_64") },
|
||||
{op1_recipsqrt_64, AluOp(2, 1, 0, 1, T, T, T, "RECIPSQRT_64") },
|
||||
{op1_recipsqrt_clamped_64, AluOp(2, 1, 0, 1, T, T, T, "RECIPSQRT_CLAMPED_64") },
|
||||
{op1_rndne, AluOp(1, 1, 1, 0, A, A, A, "RNDNE") },
|
||||
{op1_sqrt_ieee, AluOp(1, 1, 1, 0, T, T, T, "SQRT_IEEE") },
|
||||
{op1_sin, AluOp(1, 1, 1, 0, T, T, T, "SIN") },
|
||||
{op1_trunc, AluOp(1, 1, 1, 0, A, A, A, "TRUNC") },
|
||||
{op1_sqrt_64, AluOp(2, 1, 0, 1, T, T, T, "SQRT_64") },
|
||||
{op1_ubyte0_flt, AluOp(1, 0, 0, 0, V, V, V, "UBYTE0_FLT") },
|
||||
{op1_ubyte1_flt, AluOp(1, 0, 0, 0, V, V, V, "UBYTE1_FLT") },
|
||||
{op1_ubyte2_flt, AluOp(1, 0, 0, 0, V, V, V, "UBYTE2_FLT") },
|
||||
{op1_ubyte3_flt, AluOp(1, 0, 0, 0, V, V, V, "UBYTE3_FLT") },
|
||||
{op1_uint_to_flt, AluOp(1, 0, 1, 0, T, T, T, "UINT_TO_FLT") },
|
||||
{op1_ffbh_uint, AluOp(1, 0, 0, 0, V, V, V, "FFBH_UINT") },
|
||||
{op1_ffbl_int, AluOp(1, 0, 0, 0, V, V, V, "FFBL_INT") },
|
||||
{op1_ffbh_int, AluOp(1, 0, 0, 0, V, V, V, "FFBH_INT") },
|
||||
{op1_flt_to_uint4, AluOp(1, 1, 0, 0, V, V, V, "FLT_TO_UINT4") },
|
||||
{op1v_flt32_to_flt64, AluOp(1, 1, 0, 1, A, A, A, "FLT32_TO_FLT64") },
|
||||
{op1v_flt64_to_flt32, AluOp(1, 1, 1, 1, V, V, V, "FLT64_TO_FLT32") },
|
||||
|
||||
{op2_add, AluOp(2, 1, A, A, A, "ADD") },
|
||||
{op2_bfm_int, AluOp(2, 0, V, V, V, "BFM_INT") },
|
||||
{op2_mul, AluOp(2, 1, A, A, A, "MUL") },
|
||||
{op2_mul_ieee, AluOp(2, 1, A, A, A, "MUL_IEEE") },
|
||||
{op2_max, AluOp(2, 1, A, A, A, "MAX") },
|
||||
{op2_min, AluOp(2, 1, A, A, A, "MIN") },
|
||||
{op2_max_dx10, AluOp(2, 1, A, A, A, "MAX_DX10") },
|
||||
{op2_min_dx10, AluOp(2, 1, A, A, A, "MIN_DX10") },
|
||||
{op2_sete, AluOp(2, 1, A, A, A, "SETE") },
|
||||
{op2_setgt, AluOp(2, 1, A, A, A, "SETGT") },
|
||||
{op2_setge, AluOp(2, 1, A, A, A, "SETGE") },
|
||||
{op2_setne, AluOp(2, 1, A, A, A, "SETNE") },
|
||||
{op2_sete_dx10, AluOp(2, 1, A, A, A, "SETE_DX10") },
|
||||
{op2_setgt_dx10, AluOp(2, 1, A, A, A, "SETGT_DX10") },
|
||||
{op2_setge_dx10, AluOp(2, 1, A, A, A, "SETGE_DX10") },
|
||||
{op2_setne_dx10, AluOp(2, 1, A, A, A, "SETNE_DX10") },
|
||||
{op2_ashr_int, AluOp(2, 0, T, A, A, "ASHR_INT") },
|
||||
{op2_lshr_int, AluOp(2, 0, T, A, A, "LSHR_INT") },
|
||||
{op2_lshl_int, AluOp(2, 0, T, A, A, "LSHL_INT") },
|
||||
{op2_mul_64, AluOp(2, 1, A, A, A, "MUL_64") },
|
||||
{op2_pred_setgt_uint, AluOp(2, 0, A, A, A, "PRED_SETGT_UINT") },
|
||||
{op2_pred_setge_uint, AluOp(2, 0, A, A, A, "PRED_SETGE_UINT") },
|
||||
{op2_pred_sete, AluOp(2, 1, A, A, A, "PRED_SETE") },
|
||||
{op2_pred_setgt, AluOp(2, 1, A, A, A, "PRED_SETGT") },
|
||||
{op2_pred_setge, AluOp(2, 1, A, A, A, "PRED_SETGE") },
|
||||
{op2_pred_setne, AluOp(2, 1, A, A, A, "PRED_SETNE") },
|
||||
{op2_pred_set_pop, AluOp(2, 1, A, A, A, "PRED_SET_POP") },
|
||||
{op2_pred_sete_push, AluOp(2, 1, A, A, A, "PRED_SETE_PUSH") },
|
||||
{op2_pred_setgt_push, AluOp(2, 1, A, A, A, "PRED_SETGT_PUSH") },
|
||||
{op2_pred_setge_push, AluOp(2, 1, A, A, A, "PRED_SETGE_PUSH") },
|
||||
{op2_pred_setne_push, AluOp(2, 1, A, A, A, "PRED_SETNE_PUSH") },
|
||||
{op2_kille, AluOp(2, 1, A, A, A, "KILLE") },
|
||||
{op2_killgt, AluOp(2, 1, A, A, A, "KILLGT") },
|
||||
{op2_killge, AluOp(2, 1, A, A, A, "KILLGE") },
|
||||
{op2_killne, AluOp(2, 1, A, A, A, "KILLNE") },
|
||||
{op2_and_int, AluOp(2, 0, A, A, A, "AND_INT") },
|
||||
{op2_or_int, AluOp(2, 0, A, A, A, "OR_INT") },
|
||||
{op2_xor_int, AluOp(2, 0, A, A, A, "XOR_INT") },
|
||||
{op2_add_int, AluOp(2, 0, A, A, A, "ADD_INT") },
|
||||
{op2_sub_int, AluOp(2, 0, A, A, A, "SUB_INT") },
|
||||
{op2_max_int, AluOp(2, 0, A, A, A, "MAX_INT") },
|
||||
{op2_min_int, AluOp(2, 0, A, A, A, "MIN_INT") },
|
||||
{op2_max_uint, AluOp(2, 0, A, A, A, "MAX_UINT") },
|
||||
{op2_min_uint, AluOp(2, 0, A, A, A, "MIN_UINT") },
|
||||
{op2_sete_int, AluOp(2, 0, A, A, A, "SETE_INT") },
|
||||
{op2_setgt_int, AluOp(2, 0, A, A, A, "SETGT_INT") },
|
||||
{op2_setge_int, AluOp(2, 0, A, A, A, "SETGE_INT") },
|
||||
{op2_setne_int, AluOp(2, 0, A, A, A, "SETNE_INT") },
|
||||
{op2_setgt_uint, AluOp(2, 0, A, A, A, "SETGT_UINT") },
|
||||
{op2_setge_uint, AluOp(2, 0, A, A, A, "SETGE_UINT") },
|
||||
{op2_killgt_uint, AluOp(2, 0, A, A, A, "KILLGT_UINT") },
|
||||
{op2_killge_uint, AluOp(2, 0, A, A, A, "KILLGE_UINT") },
|
||||
{op2_prede_int, AluOp(2, 0, A, A, A, "PREDE_INT") },
|
||||
{op2_pred_setgt_int, AluOp(2, 0, A, A, A, "PRED_SETGT_INT") },
|
||||
{op2_pred_setge_int, AluOp(2, 0, A, A, A, "PRED_SETGE_INT") },
|
||||
{op2_pred_setne_int, AluOp(2, 0, A, A, A, "PRED_SETNE_INT") },
|
||||
{op2_kille_int, AluOp(2, 0, A, A, A, "KILLE_INT") },
|
||||
{op2_killgt_int, AluOp(2, 0, A, A, A, "KILLGT_INT") },
|
||||
{op2_killge_int, AluOp(2, 0, A, A, A, "KILLGE_INT") },
|
||||
{op2_killne_int, AluOp(2, 0, A, A, A, "KILLNE_INT") },
|
||||
{op2_pred_sete_push_int, AluOp(2, 0, A, A, A, "PRED_SETE_PUSH_INT") },
|
||||
{op2_pred_setgt_push_int, AluOp(2, 0, A, A, A, "PRED_SETGT_PUSH_INT") },
|
||||
{op2_pred_setge_push_int, AluOp(2, 0, A, A, A, "PRED_SETGE_PUSH_INT") },
|
||||
{op2_pred_setne_push_int, AluOp(2, 0, A, A, A, "PRED_SETNE_PUSH_INT") },
|
||||
{op2_pred_setlt_push_int, AluOp(2, 0, A, A, A, "PRED_SETLT_PUSH_INT") },
|
||||
{op2_pred_setle_push_int, AluOp(2, 0, A, A, A, "PRED_SETLE_PUSH_INT") },
|
||||
{op2_addc_uint, AluOp(2, 0, A, A, A, "ADDC_UINT") },
|
||||
{op2_subb_uint, AluOp(2, 0, A, A, A, "SUBB_UINT") },
|
||||
{op2_set_mode, AluOp(2, 0, A, A, A, "SET_MODE") },
|
||||
{op2_set_lds_size, AluOp(2, 0, A, A, A, "SET_LDS_SIZE") },
|
||||
{op2_mullo_int, AluOp(2, 0, T, T, T, "MULLO_INT") },
|
||||
{op2_mulhi_int, AluOp(2, 0, T, T, T, "MULHI_INT") },
|
||||
{op2_mullo_uint, AluOp(2, 0, T, T, T, "MULLO_UINT") },
|
||||
{op2_mulhi_uint, AluOp(2, 0, T, T, T, "MULHI_UINT") },
|
||||
{op2_dot_ieee, AluOp(2, 1, V, V, V, "DOT_IEEE") },
|
||||
{op2_mulhi_uint24, AluOp(2, 0, V, V, V, "MULHI_UINT24") },
|
||||
{op2_mul_uint24, AluOp(2, 0, V, V, V, "MUL_UINT24") },
|
||||
{op2_sete_64, AluOp(2, 1, V, V, V, "SETE_64") },
|
||||
{op2_setne_64, AluOp(2, 1, V, V, V, "SETNE_64") },
|
||||
{op2_setgt_64, AluOp(2, 1, V, V, V, "SETGT_64") },
|
||||
{op2_setge_64, AluOp(2, 1, V, V, V, "SETGE_64") },
|
||||
{op2_min_64, AluOp(2, 1, V, V, V, "MIN_64") },
|
||||
{op2_max_64, AluOp(2, 1, V, V, V, "MAX_64") },
|
||||
{op2_dot4, AluOp(2, 1, V, V, V, "DOT4") },
|
||||
{op2_dot4_ieee, AluOp(2, 1, V, V, V, "DOT4_IEEE") },
|
||||
{op2_cube, AluOp(2, 1, V, V, V, "CUBE") },
|
||||
{op2_pred_setgt_64, AluOp(2, 1, V, V, V, "PRED_SETGT_64") },
|
||||
{op2_pred_sete_64, AluOp(2, 1, V, V, V, "PRED_SETE_64") },
|
||||
{op2_pred_setge_64, AluOp(2, 1, V, V, V, "PRED_SETGE_64") },
|
||||
{OP2V_MUL_64, AluOp(2, 1, V, V, V, "MUL_64") },
|
||||
{op2_add_64, AluOp(2, 1, V, V, V, "ADD_64") },
|
||||
{op2_sad_accum_prev_uint, AluOp(2, 0, V, V, V, "SAD_ACCUM_PREV_UINT") },
|
||||
{op2_dot, AluOp(2, 1, V, V, V, "DOT") },
|
||||
{op1_mul_prev, AluOp(2, 1, V, V, V, "MUL_PREV") },
|
||||
{op1_mul_ieee_prev, AluOp(2, 1, V, V, V, "MUL_IEEE_PREV") },
|
||||
{op1_add_prev, AluOp(2, 1, V, V, V, "ADD_PREV") },
|
||||
{op2_muladd_prev, AluOp(2, 1, V, V, V, "MULADD_PREV") },
|
||||
{op2_muladd_ieee_prev, AluOp(2, 1, V, V, V, "MULADD_IEEE_PREV") },
|
||||
{op2_interp_xy, AluOp(2, 1, V, V, V, "INTERP_XY") },
|
||||
{op2_interp_zw, AluOp(2, 1, V, V, V, "INTERP_ZW") },
|
||||
{op2_interp_x, AluOp(2, 1, V, V, V, "INTERP_X") },
|
||||
{op2_interp_z, AluOp(2, 1, V, V, V, "INTERP_Z") },
|
||||
{op2_add, AluOp(2, 1, 1, 0, A, A, A, "ADD") },
|
||||
{op2_bfm_int, AluOp(2, 0, 0, 0, V, V, V, "BFM_INT") },
|
||||
{op2_mul, AluOp(2, 1, 1, 0, A, A, A, "MUL") },
|
||||
{op2_mul_ieee, AluOp(2, 1, 1, 0, A, A, A, "MUL_IEEE") },
|
||||
{op2_max, AluOp(2, 1, 1, 0, A, A, A, "MAX") },
|
||||
{op2_min, AluOp(2, 1, 1, 0, A, A, A, "MIN") },
|
||||
{op2_max_dx10, AluOp(2, 1, 1, 0, A, A, A, "MAX_DX10") },
|
||||
{op2_min_dx10, AluOp(2, 1, 1, 0, A, A, A, "MIN_DX10") },
|
||||
{op2_sete, AluOp(2, 1, 0, 0, A, A, A, "SETE") },
|
||||
{op2_setgt, AluOp(2, 1, 0, 0, A, A, A, "SETGT") },
|
||||
{op2_setge, AluOp(2, 1, 0, 0, A, A, A, "SETGE") },
|
||||
{op2_setne, AluOp(2, 1, 0, 0, A, A, A, "SETNE") },
|
||||
{op2_sete_dx10, AluOp(2, 1, 0, 0, A, A, A, "SETE_DX10") },
|
||||
{op2_setgt_dx10, AluOp(2, 1, 0, 0, A, A, A, "SETGT_DX10") },
|
||||
{op2_setge_dx10, AluOp(2, 1, 0, 0, A, A, A, "SETGE_DX10") },
|
||||
{op2_setne_dx10, AluOp(2, 1, 0, 0, A, A, A, "SETNE_DX10") },
|
||||
{op2_ashr_int, AluOp(2, 0, 0, 0, T, A, A, "ASHR_INT") },
|
||||
{op2_lshr_int, AluOp(2, 0, 0, 0, T, A, A, "LSHR_INT") },
|
||||
{op2_lshl_int, AluOp(2, 0, 0, 0, T, A, A, "LSHL_INT") },
|
||||
{op2_mul_64, AluOp(2, 1, 0, 1, A, A, A, "MUL_64") },
|
||||
{op2_pred_setgt_uint, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETGT_UINT") },
|
||||
{op2_pred_setge_uint, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETGE_UINT") },
|
||||
{op2_pred_sete, AluOp(2, 1, 0, 0, A, A, A, "PRED_SETE") },
|
||||
{op2_pred_setgt, AluOp(2, 1, 0, 0, A, A, A, "PRED_SETGT") },
|
||||
{op2_pred_setge, AluOp(2, 1, 0, 0, A, A, A, "PRED_SETGE") },
|
||||
{op2_pred_setne, AluOp(2, 1, 0, 0, A, A, A, "PRED_SETNE") },
|
||||
{op2_pred_set_pop, AluOp(2, 1, 0, 0, A, A, A, "PRED_SET_POP") },
|
||||
{op2_pred_sete_push, AluOp(2, 1, 0, 0, A, A, A, "PRED_SETE_PUSH") },
|
||||
{op2_pred_setgt_push, AluOp(2, 1, 0, 0, A, A, A, "PRED_SETGT_PUSH") },
|
||||
{op2_pred_setge_push, AluOp(2, 1, 0, 0, A, A, A, "PRED_SETGE_PUSH") },
|
||||
{op2_pred_setne_push, AluOp(2, 1, 0, 0, A, A, A, "PRED_SETNE_PUSH") },
|
||||
{op2_kille, AluOp(2, 1, 0, 0, A, A, A, "KILLE") },
|
||||
{op2_killgt, AluOp(2, 1, 0, 0, A, A, A, "KILLGT") },
|
||||
{op2_killge, AluOp(2, 1, 0, 0, A, A, A, "KILLGE") },
|
||||
{op2_killne, AluOp(2, 1, 0, 0, A, A, A, "KILLNE") },
|
||||
{op2_and_int, AluOp(2, 0, 0, 0, A, A, A, "AND_INT") },
|
||||
{op2_or_int, AluOp(2, 0, 0, 0, A, A, A, "OR_INT") },
|
||||
{op2_xor_int, AluOp(2, 0, 0, 0, A, A, A, "XOR_INT") },
|
||||
{op2_add_int, AluOp(2, 0, 0, 0, A, A, A, "ADD_INT") },
|
||||
{op2_sub_int, AluOp(2, 0, 0, 0, A, A, A, "SUB_INT") },
|
||||
{op2_max_int, AluOp(2, 0, 0, 0, A, A, A, "MAX_INT") },
|
||||
{op2_min_int, AluOp(2, 0, 0, 0, A, A, A, "MIN_INT") },
|
||||
{op2_max_uint, AluOp(2, 0, 0, 0, A, A, A, "MAX_UINT") },
|
||||
{op2_min_uint, AluOp(2, 0, 0, 0, A, A, A, "MIN_UINT") },
|
||||
{op2_sete_int, AluOp(2, 0, 0, 0, A, A, A, "SETE_INT") },
|
||||
{op2_setgt_int, AluOp(2, 0, 0, 0, A, A, A, "SETGT_INT") },
|
||||
{op2_setge_int, AluOp(2, 0, 0, 0, A, A, A, "SETGE_INT") },
|
||||
{op2_setne_int, AluOp(2, 0, 0, 0, A, A, A, "SETNE_INT") },
|
||||
{op2_setgt_uint, AluOp(2, 0, 0, 0, A, A, A, "SETGT_UINT") },
|
||||
{op2_setge_uint, AluOp(2, 0, 0, 0, A, A, A, "SETGE_UINT") },
|
||||
{op2_killgt_uint, AluOp(2, 0, 0, 0, A, A, A, "KILLGT_UINT") },
|
||||
{op2_killge_uint, AluOp(2, 0, 0, 0, A, A, A, "KILLGE_UINT") },
|
||||
{op2_prede_int, AluOp(2, 0, 0, 0, A, A, A, "PREDE_INT") },
|
||||
{op2_pred_setgt_int, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETGT_INT") },
|
||||
{op2_pred_setge_int, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETGE_INT") },
|
||||
{op2_pred_setne_int, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETNE_INT") },
|
||||
{op2_kille_int, AluOp(2, 0, 0, 0, A, A, A, "KILLE_INT") },
|
||||
{op2_killgt_int, AluOp(2, 0, 0, 0, A, A, A, "KILLGT_INT") },
|
||||
{op2_killge_int, AluOp(2, 0, 0, 0, A, A, A, "KILLGE_INT") },
|
||||
{op2_killne_int, AluOp(2, 0, 0, 0, A, A, A, "KILLNE_INT") },
|
||||
{op2_pred_sete_push_int, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETE_PUSH_INT") },
|
||||
{op2_pred_setgt_push_int, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETGT_PUSH_INT") },
|
||||
{op2_pred_setge_push_int, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETGE_PUSH_INT") },
|
||||
{op2_pred_setne_push_int, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETNE_PUSH_INT") },
|
||||
{op2_pred_setlt_push_int, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETLT_PUSH_INT") },
|
||||
{op2_pred_setle_push_int, AluOp(2, 0, 0, 0, A, A, A, "PRED_SETLE_PUSH_INT") },
|
||||
{op2_addc_uint, AluOp(2, 0, 0, 0, A, A, A, "ADDC_UINT") },
|
||||
{op2_subb_uint, AluOp(2, 0, 0, 0, A, A, A, "SUBB_UINT") },
|
||||
{op2_set_mode, AluOp(2, 0, 0, 0, A, A, A, "SET_MODE") },
|
||||
{op2_set_lds_size, AluOp(2, 0, 0, 0, A, A, A, "SET_LDS_SIZE") },
|
||||
{op2_mullo_int, AluOp(2, 0, 0, 0, T, T, T, "MULLO_INT") },
|
||||
{op2_mulhi_int, AluOp(2, 0, 0, 0, T, T, T, "MULHI_INT") },
|
||||
{op2_mullo_uint, AluOp(2, 0, 0, 0, T, T, T, "MULLO_UINT") },
|
||||
{op2_mulhi_uint, AluOp(2, 0, 0, 0, T, T, T, "MULHI_UINT") },
|
||||
{op2_dot_ieee, AluOp(2, 1, 1, 0, V, V, V, "DOT_IEEE") },
|
||||
{op2_mulhi_uint24, AluOp(2, 0, 0, 0, V, V, V, "MULHI_UINT24") },
|
||||
{op2_mul_uint24, AluOp(2, 0, 0, 0, V, V, V, "MUL_UINT24") },
|
||||
{op2_sete_64, AluOp(2, 1, 0, 1, V, V, V, "SETE_64") },
|
||||
{op2_setne_64, AluOp(2, 1, 0, 1, V, V, V, "SETNE_64") },
|
||||
{op2_setgt_64, AluOp(2, 1, 0, 1, V, V, V, "SETGT_64") },
|
||||
{op2_setge_64, AluOp(2, 1, 0, 1, V, V, V, "SETGE_64") },
|
||||
{op2_min_64, AluOp(2, 1, 0, 1, V, V, V, "MIN_64") },
|
||||
{op2_max_64, AluOp(2, 1, 0, 1, V, V, V, "MAX_64") },
|
||||
{op2_dot4, AluOp(2, 1, 1, 0, V, V, V, "DOT4") },
|
||||
{op2_dot4_ieee, AluOp(2, 1, 1, 0, V, V, V, "DOT4_IEEE") },
|
||||
{op2_cube, AluOp(2, 1, 0, 0, V, V, V, "CUBE") },
|
||||
{op2_pred_setgt_64, AluOp(2, 1, 0, 1, V, V, V, "PRED_SETGT_64") },
|
||||
{op2_pred_sete_64, AluOp(2, 1, 0, 1, V, V, V, "PRED_SETE_64") },
|
||||
{op2_pred_setge_64, AluOp(2, 1, 0, 1, V, V, V, "PRED_SETGE_64") },
|
||||
{OP2V_MUL_64, AluOp(2, 1, 0, 1, V, V, V, "MUL_64") },
|
||||
{op2_add_64, AluOp(2, 1, 0, 1, V, V, V, "ADD_64") },
|
||||
{op2_sad_accum_prev_uint, AluOp(2, 0, 0, 0, V, V, V, "SAD_ACCUM_PREV_UINT") },
|
||||
{op2_dot, AluOp(2, 1, 0, 0, V, V, V, "DOT") },
|
||||
{op1_mul_prev, AluOp(2, 1, 0, 0, V, V, V, "MUL_PREV") },
|
||||
{op1_mul_ieee_prev, AluOp(2, 1, 0, 0, V, V, V, "MUL_IEEE_PREV") },
|
||||
{op1_add_prev, AluOp(2, 1, 0, 0, V, V, V, "ADD_PREV") },
|
||||
{op2_muladd_prev, AluOp(2, 1, 0, 0, V, V, V, "MULADD_PREV") },
|
||||
{op2_muladd_ieee_prev, AluOp(2, 1, 0, 0, V, V, V, "MULADD_IEEE_PREV") },
|
||||
{op2_interp_xy, AluOp(2, 0, 0, 0, V, V, V, "INTERP_XY") },
|
||||
{op2_interp_zw, AluOp(2, 0, 0, 0, V, V, V, "INTERP_ZW") },
|
||||
{op2_interp_x, AluOp(2, 0, 0, 0, V, V, V, "INTERP_X") },
|
||||
{op2_interp_z, AluOp(2, 0, 0, 0, V, V, V, "INTERP_Z") },
|
||||
|
||||
{op3_bfe_uint, AluOp(3, 0, V, V, V, "BFE_UINT") },
|
||||
{op3_bfe_int, AluOp(3, 0, V, V, V, "BFE_INT") },
|
||||
{op3_bfi_int, AluOp(3, 0, V, V, V, "BFI_INT") },
|
||||
{op3_fma, AluOp(3, 1, V, V, V, "FMA") },
|
||||
{op3_cndne_64, AluOp(3, 1, V, V, V, "CNDNE_64") },
|
||||
{op3_fma_64, AluOp(3, 1, V, V, V, "FMA_64") },
|
||||
{op3_lerp_uint, AluOp(3, 0, V, V, V, "LERP_UINT") },
|
||||
{op3_bit_align_int, AluOp(3, 0, V, V, V, "BIT_ALIGN_INT") },
|
||||
{op3_byte_align_int, AluOp(3, 0, V, V, V, "BYTE_ALIGN_INT") },
|
||||
{op3_sad_accum_uint, AluOp(3, 0, V, V, V, "SAD_ACCUM_UINT") },
|
||||
{op3_sad_accum_hi_uint, AluOp(3, 0, V, V, V, "SAD_ACCUM_HI_UINT") },
|
||||
{op3_muladd_uint24, AluOp(3, 0, V, V, V, "MULADD_UINT24") },
|
||||
{op3_lds_idx_op, AluOp(3, 0, X, X, X, "LDS_IDX_OP") },
|
||||
{op3_muladd, AluOp(3, 1, A, A, A, "MULADD") },
|
||||
{op3_muladd_m2, AluOp(3, 1, A, A, A, "MULADD_M2") },
|
||||
{op3_muladd_m4, AluOp(3, 1, A, A, A, "MULADD_M4") },
|
||||
{op3_muladd_d2, AluOp(3, 1, A, A, A, "MULADD_D2") },
|
||||
{op3_muladd_ieee, AluOp(3, 1, A, A, A, "MULADD_IEEE") },
|
||||
{op3_cnde, AluOp(3, 1, A, A, A, "CNDE") },
|
||||
{op3_cndgt, AluOp(3, 1, A, A, A, "CNDGT") },
|
||||
{op3_cndge, AluOp(3, 1, A, A, A, "CNDGE") },
|
||||
{op3_cnde_int, AluOp(3, 0, A, A, A, "CNDE_INT") },
|
||||
{op3_cndgt_int, AluOp(3, 0, A, A, A, "CNDGT_INT") },
|
||||
{op3_cndge_int, AluOp(3, 0, A, A, A, "CNDGE_INT") },
|
||||
{op3_mul_lit, AluOp(3, 1, T, T, T, "MUL_LIT") }
|
||||
{op3_bfe_uint, AluOp(3, 0, 0, 0, V, V, V, "BFE_UINT") },
|
||||
{op3_bfe_int, AluOp(3, 0, 0, 0, V, V, V, "BFE_INT") },
|
||||
{op3_bfi_int, AluOp(3, 0, 0, 0, V, V, V, "BFI_INT") },
|
||||
{op3_fma, AluOp(3, 1, 1, 0, V, V, V, "FMA") },
|
||||
{op3_cndne_64, AluOp(3, 1, 0, 1, V, V, V, "CNDNE_64") },
|
||||
{op3_fma_64, AluOp(3, 1, 0, 1, V, V, V, "FMA_64") },
|
||||
{op3_lerp_uint, AluOp(3, 0, 0, 0, V, V, V, "LERP_UINT") },
|
||||
{op3_bit_align_int, AluOp(3, 0, 0, 0, V, V, V, "BIT_ALIGN_INT") },
|
||||
{op3_byte_align_int, AluOp(3, 0, 0, 0, V, V, V, "BYTE_ALIGN_INT") },
|
||||
{op3_sad_accum_uint, AluOp(3, 0, 0, 0, V, V, V, "SAD_ACCUM_UINT") },
|
||||
{op3_sad_accum_hi_uint, AluOp(3, 0, 0, 0, V, V, V, "SAD_ACCUM_HI_UINT") },
|
||||
{op3_muladd_uint24, AluOp(3, 0, 0, 0, V, V, V, "MULADD_UINT24") },
|
||||
{op3_lds_idx_op, AluOp(3, 0, 0, 0, X, X, X, "LDS_IDX_OP") },
|
||||
{op3_muladd, AluOp(3, 1, 1, 0, A, A, A, "MULADD") },
|
||||
{op3_muladd_m2, AluOp(3, 1, 1, 0, A, A, A, "MULADD_M2") },
|
||||
{op3_muladd_m4, AluOp(3, 1, 1, 0, A, A, A, "MULADD_M4") },
|
||||
{op3_muladd_d2, AluOp(3, 1, 1, 0, A, A, A, "MULADD_D2") },
|
||||
{op3_muladd_ieee, AluOp(3, 1, 1, 0, A, A, A, "MULADD_IEEE") },
|
||||
{op3_cnde, AluOp(3, 0, 0, 0, A, A, A, "CNDE") },
|
||||
{op3_cndgt, AluOp(3, 0, 0, 0, A, A, A, "CNDGT") },
|
||||
{op3_cndge, AluOp(3, 0, 0, 0, A, A, A, "CNDGE") },
|
||||
{op3_cnde_int, AluOp(3, 0, 0, 0, A, A, A, "CNDE_INT") },
|
||||
{op3_cndgt_int, AluOp(3, 0, 0, 0, A, A, A, "CNDGT_INT") },
|
||||
{op3_cndge_int, AluOp(3, 0, 0, 0,A, A, A, "CNDGE_INT") },
|
||||
{op3_mul_lit, AluOp(3, 1, 0, 0,T, T, T, "MUL_LIT") }
|
||||
};
|
||||
|
||||
#undef A
|
||||
|
|
|
|||
|
|
@ -310,9 +310,12 @@ struct AluOp {
|
|||
static constexpr int t = 16;
|
||||
static constexpr int a = 31;
|
||||
|
||||
AluOp(int ns, int f, uint8_t um_r600, uint8_t um_r700, uint8_t um_eg, const char *n):
|
||||
AluOp(int ns, bool src_mod, bool clamp, bool fp64, uint8_t um_r600,
|
||||
uint8_t um_r700, uint8_t um_eg, const char *n):
|
||||
nsrc(ns),
|
||||
is_float(f),
|
||||
can_srcmod(src_mod),
|
||||
can_clamp(clamp),
|
||||
is_fp64(fp64),
|
||||
name(n)
|
||||
{
|
||||
unit_mask[0] = um_r600;
|
||||
|
|
@ -327,7 +330,9 @@ struct AluOp {
|
|||
}
|
||||
|
||||
int nsrc : 4;
|
||||
int is_float : 1;
|
||||
int can_srcmod : 1;
|
||||
int can_clamp : 1;
|
||||
int is_fp64 : 1;
|
||||
uint8_t unit_mask[3];
|
||||
const char *name;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue