rpcsx/rpcsx-gpu/lib/gcn-shader/include/shader/dialect/ds.hpp

295 lines
8.2 KiB
C++
Raw Normal View History

2024-09-25 15:00:55 +02:00
#pragma once
namespace shader::ir::ds {
enum Op {
ADD_U32,
SUB_U32,
RSUB_U32,
INC_U32,
DEC_U32,
MIN_I32,
MAX_I32,
MIN_U32,
MAX_U32,
AND_B32,
OR_B32,
XOR_B32,
MSKOR_B32,
WRITE_B32,
WRITE2_B32,
WRITE2ST64_B32,
CMPST_B32,
CMPST_F32,
MIN_F32,
MAX_F32,
NOP,
GWS_SEMA_RELEASE_ALL = 24,
GWS_INIT,
GWS_SEMA_V,
GWS_SEMA_BR,
GWS_SEMA_P,
GWS_BARRIER,
WRITE_B8,
WRITE_B16,
ADD_RTN_U32,
SUB_RTN_U32,
RSUB_RTN_U32,
INC_RTN_U32,
DEC_RTN_U32,
MIN_RTN_I32,
MAX_RTN_I32,
MIN_RTN_U32,
MAX_RTN_U32,
AND_RTN_B32,
OR_RTN_B32,
XOR_RTN_B32,
MSKOR_RTN_B32,
WRXCHG_RTN_B32,
WRXCHG2_RTN_B32,
WRXCHG2ST64_RTN_B32,
CMPST_RTN_B32,
CMPST_RTN_F32,
MIN_RTN_F32,
MAX_RTN_F32,
WRAP_RTN_B32,
SWIZZLE_B32,
READ_B32,
READ2_B32,
READ2ST64_B32,
READ_I8,
READ_U8,
READ_I16,
READ_U16,
CONSUME,
APPEND,
ORDERED_COUNT,
ADD_U64,
SUB_U64,
RSUB_U64,
INC_U64,
DEC_U64,
MIN_I64,
MAX_I64,
MIN_U64,
MAX_U64,
AND_B64,
OR_B64,
XOR_B64,
MSKOR_B64,
WRITE_B64,
WRITE2_B64,
WRITE2ST64_B64,
CMPST_B64,
CMPST_F64,
MIN_F64,
MAX_F64,
ADD_RTN_U64 = 96,
SUB_RTN_U64,
RSUB_RTN_U64,
INC_RTN_U64,
DEC_RTN_U64,
MIN_RTN_I64,
MAX_RTN_I64,
MIN_RTN_U64,
MAX_RTN_U64,
AND_RTN_B64,
OR_RTN_B64,
XOR_RTN_B64,
MSKOR_RTN_B64,
WRXCHG_RTN_B64,
WRXCHG2_RTN_B64,
WRXCHG2ST64_RTN_B64,
CMPST_RTN_B64,
CMPST_RTN_F64,
MIN_RTN_F64,
MAX_RTN_F64,
READ_B64 = 118,
READ2_B64,
READ2ST64_B64,
CONDXCHG32_RTN_B64 = 126,
ADD_SRC2_U32 = 128,
SUB_SRC2_U32,
RSUB_SRC2_U32,
INC_SRC2_U32,
DEC_SRC2_U32,
MIN_SRC2_I32,
MAX_SRC2_I32,
MIN_SRC2_U32,
MAX_SRC2_U32,
AND_SRC2_B32,
OR_SRC2_B32,
XOR_SRC2_B32,
WRITE_SRC2_B32,
MIN_SRC2_F32 = 146,
MAX_SRC2_F32,
ADD_SRC2_U64 = 192,
SUB_SRC2_U64,
RSUB_SRC2_U64,
INC_SRC2_U64,
DEC_SRC2_U64,
MIN_SRC2_I64,
MAX_SRC2_I64,
MIN_SRC2_U64,
MAX_SRC2_U64,
AND_SRC2_B64,
OR_SRC2_B64,
XOR_SRC2_B64,
WRITE_SRC2_B64,
MIN_SRC2_F64 = 210,
MAX_SRC2_F64,
WRITE_B96 = 222,
WRITE_B128,
CONDXCHG32_RTN_B128 = 253,
READ_B96,
READ_B128,
OpCount
};
inline const char *getInstructionName(unsigned id) {
switch (id) {
case ADD_U32: return "ds_add_u32";
case SUB_U32: return "ds_sub_u32";
case RSUB_U32: return "ds_rsub_u32";
case INC_U32: return "ds_inc_u32";
case DEC_U32: return "ds_dec_u32";
case MIN_I32: return "ds_min_i32";
case MAX_I32: return "ds_max_i32";
case MIN_U32: return "ds_min_u32";
case MAX_U32: return "ds_max_u32";
case AND_B32: return "ds_and_b32";
case OR_B32: return "ds_or_b32";
case XOR_B32: return "ds_xor_b32";
case MSKOR_B32: return "ds_mskor_b32";
case WRITE_B32: return "ds_write_b32";
case WRITE2_B32: return "ds_write2_b32";
case WRITE2ST64_B32: return "ds_write2st64_b32";
case CMPST_B32: return "ds_cmpst_b32";
case CMPST_F32: return "ds_cmpst_f32";
case MIN_F32: return "ds_min_f32";
case MAX_F32: return "ds_max_f32";
case NOP: return "ds_nop";
case GWS_SEMA_RELEASE_ALL: return "ds_gws_sema_release_all";
case GWS_INIT: return "ds_gws_init";
case GWS_SEMA_V: return "ds_gws_sema_v";
case GWS_SEMA_BR: return "ds_gws_sema_br";
case GWS_SEMA_P: return "ds_gws_sema_p";
case GWS_BARRIER: return "ds_gws_barrier";
case WRITE_B8: return "ds_write_b8";
case WRITE_B16: return "ds_write_b16";
case ADD_RTN_U32: return "ds_add_rtn_u32";
case SUB_RTN_U32: return "ds_sub_rtn_u32";
case RSUB_RTN_U32: return "ds_rsub_rtn_u32";
case INC_RTN_U32: return "ds_inc_rtn_u32";
case DEC_RTN_U32: return "ds_dec_rtn_u32";
case MIN_RTN_I32: return "ds_min_rtn_i32";
case MAX_RTN_I32: return "ds_max_rtn_i32";
case MIN_RTN_U32: return "ds_min_rtn_u32";
case MAX_RTN_U32: return "ds_max_rtn_u32";
case AND_RTN_B32: return "ds_and_rtn_b32";
case OR_RTN_B32: return "ds_or_rtn_b32";
case XOR_RTN_B32: return "ds_xor_rtn_b32";
case MSKOR_RTN_B32: return "ds_mskor_rtn_b32";
case WRXCHG_RTN_B32: return "ds_wrxchg_rtn_b32";
case WRXCHG2_RTN_B32: return "ds_wrxchg2_rtn_b32";
case WRXCHG2ST64_RTN_B32: return "ds_wrxchg2st64_rtn_b32";
case CMPST_RTN_B32: return "ds_cmpst_rtn_b32";
case CMPST_RTN_F32: return "ds_cmpst_rtn_f32";
case MIN_RTN_F32: return "ds_min_rtn_f32";
case MAX_RTN_F32: return "ds_max_rtn_f32";
case WRAP_RTN_B32: return "ds_wrap_rtn_b32";
case SWIZZLE_B32: return "ds_swizzle_b32";
case READ_B32: return "ds_read_b32";
case READ2_B32: return "ds_read2_b32";
case READ2ST64_B32: return "ds_read2st64_b32";
case READ_I8: return "ds_read_i8";
case READ_U8: return "ds_read_u8";
case READ_I16: return "ds_read_i16";
case READ_U16: return "ds_read_u16";
case CONSUME: return "ds_consume";
case APPEND: return "ds_append";
case ORDERED_COUNT: return "ds_ordered_count";
case ADD_U64: return "ds_add_u64";
case SUB_U64: return "ds_sub_u64";
case RSUB_U64: return "ds_rsub_u64";
case INC_U64: return "ds_inc_u64";
case DEC_U64: return "ds_dec_u64";
case MIN_I64: return "ds_min_i64";
case MAX_I64: return "ds_max_i64";
case MIN_U64: return "ds_min_u64";
case MAX_U64: return "ds_max_u64";
case AND_B64: return "ds_and_b64";
case OR_B64: return "ds_or_b64";
case XOR_B64: return "ds_xor_b64";
case MSKOR_B64: return "ds_mskor_b64";
case WRITE_B64: return "ds_write_b64";
case WRITE2_B64: return "ds_write2_b64";
case WRITE2ST64_B64: return "ds_write2st64_b64";
case CMPST_B64: return "ds_cmpst_b64";
case CMPST_F64: return "ds_cmpst_f64";
case MIN_F64: return "ds_min_f64";
case MAX_F64: return "ds_max_f64";
case ADD_RTN_U64: return "ds_add_rtn_u64";
case SUB_RTN_U64: return "ds_sub_rtn_u64";
case RSUB_RTN_U64: return "ds_rsub_rtn_u64";
case INC_RTN_U64: return "ds_inc_rtn_u64";
case DEC_RTN_U64: return "ds_dec_rtn_u64";
case MIN_RTN_I64: return "ds_min_rtn_i64";
case MAX_RTN_I64: return "ds_max_rtn_i64";
case MIN_RTN_U64: return "ds_min_rtn_u64";
case MAX_RTN_U64: return "ds_max_rtn_u64";
case AND_RTN_B64: return "ds_and_rtn_b64";
case OR_RTN_B64: return "ds_or_rtn_b64";
case XOR_RTN_B64: return "ds_xor_rtn_b64";
case MSKOR_RTN_B64: return "ds_mskor_rtn_b64";
case WRXCHG_RTN_B64: return "ds_wrxchg_rtn_b64";
case WRXCHG2_RTN_B64: return "ds_wrxchg2_rtn_b64";
case WRXCHG2ST64_RTN_B64: return "ds_wrxchg2st64_rtn_b64";
case CMPST_RTN_B64: return "ds_cmpst_rtn_b64";
case CMPST_RTN_F64: return "ds_cmpst_rtn_f64";
case MIN_RTN_F64: return "ds_min_rtn_f64";
case MAX_RTN_F64: return "ds_max_rtn_f64";
case READ_B64: return "ds_read_b64";
case READ2_B64: return "ds_read2_b64";
case READ2ST64_B64: return "ds_read2st64_b64";
case CONDXCHG32_RTN_B64: return "ds_condxchg32_rtn_b64";
case ADD_SRC2_U32: return "ds_add_src2_u32";
case SUB_SRC2_U32: return "ds_sub_src2_u32";
case RSUB_SRC2_U32: return "ds_rsub_src2_u32";
case INC_SRC2_U32: return "ds_inc_src2_u32";
case DEC_SRC2_U32: return "ds_dec_src2_u32";
case MIN_SRC2_I32: return "ds_min_src2_i32";
case MAX_SRC2_I32: return "ds_max_src2_i32";
case MIN_SRC2_U32: return "ds_min_src2_u32";
case MAX_SRC2_U32: return "ds_max_src2_u32";
case AND_SRC2_B32: return "ds_and_src2_b32";
case OR_SRC2_B32: return "ds_or_src2_b32";
case XOR_SRC2_B32: return "ds_xor_src2_b32";
case WRITE_SRC2_B32: return "ds_write_src2_b32";
case MIN_SRC2_F32: return "ds_min_src2_f32";
case MAX_SRC2_F32: return "ds_max_src2_f32";
case ADD_SRC2_U64: return "ds_add_src2_u64";
case SUB_SRC2_U64: return "ds_sub_src2_u64";
case RSUB_SRC2_U64: return "ds_rsub_src2_u64";
case INC_SRC2_U64: return "ds_inc_src2_u64";
case DEC_SRC2_U64: return "ds_dec_src2_u64";
case MIN_SRC2_I64: return "ds_min_src2_i64";
case MAX_SRC2_I64: return "ds_max_src2_i64";
case MIN_SRC2_U64: return "ds_min_src2_u64";
case MAX_SRC2_U64: return "ds_max_src2_u64";
case AND_SRC2_B64: return "ds_and_src2_b64";
case OR_SRC2_B64: return "ds_or_src2_b64";
case XOR_SRC2_B64: return "ds_xor_src2_b64";
case WRITE_SRC2_B64: return "ds_write_src2_b64";
case MIN_SRC2_F64: return "ds_min_src2_f64";
case MAX_SRC2_F64: return "ds_max_src2_f64";
case WRITE_B96: return "ds_write_b96";
case WRITE_B128: return "ds_write_b128";
case CONDXCHG32_RTN_B128: return "ds_condxchg32_rtn_b128";
case READ_B96: return "ds_read_b96";
case READ_B128: return "ds_read_b128";
}
return nullptr;
}
} // namespace shader::ir::ds