From da92733d5a9d39c02d08a0c97ea29a0fdc96b74c Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Fri, 16 Jun 2023 17:51:39 +0200 Subject: [PATCH] r600/sfn: add source and dest mod info to opcode table Signed-off-by: Gert Wollny Part-of: --- .../drivers/r600/sfn/sfn_alu_defines.cpp | 402 +++++++++--------- .../drivers/r600/sfn/sfn_alu_defines.h | 11 +- 2 files changed, 209 insertions(+), 204 deletions(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_alu_defines.cpp b/src/gallium/drivers/r600/sfn/sfn_alu_defines.cpp index 17818b07c32..bbb27f00603 100644 --- a/src/gallium/drivers/r600/sfn/sfn_alu_defines.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_alu_defines.cpp @@ -34,210 +34,210 @@ namespace r600 { #define X AluOp::x const std::map 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 diff --git a/src/gallium/drivers/r600/sfn/sfn_alu_defines.h b/src/gallium/drivers/r600/sfn/sfn_alu_defines.h index a0038f77d44..aa11846b8ca 100644 --- a/src/gallium/drivers/r600/sfn/sfn_alu_defines.h +++ b/src/gallium/drivers/r600/sfn/sfn_alu_defines.h @@ -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; };