rpcsx/rpcsx-gpu/lib/gcn-shader/include/shader/dialect/mubuf.hpp
2024-10-01 22:04:40 +03:00

130 lines
4 KiB
C++

#pragma once
namespace shader::ir::mubuf {
enum Op {
LOAD_FORMAT_X,
LOAD_FORMAT_XY,
LOAD_FORMAT_XYZ,
LOAD_FORMAT_XYZW,
STORE_FORMAT_X,
STORE_FORMAT_XY,
STORE_FORMAT_XYZ,
STORE_FORMAT_XYZW,
LOAD_UBYTE,
LOAD_SBYTE,
LOAD_USHORT,
LOAD_SSHORT,
LOAD_DWORD,
LOAD_DWORDX2,
LOAD_DWORDX4,
LOAD_DWORDX3,
STORE_BYTE = 24,
STORE_SHORT = 26,
STORE_DWORD = 28,
STORE_DWORDX2,
STORE_DWORDX4,
STORE_DWORDX3,
ATOMIC_SWAP = 48,
ATOMIC_CMPSWAP,
ATOMIC_ADD,
ATOMIC_SUB,
ATOMIC_RSUB,
ATOMIC_SMIN,
ATOMIC_UMIN,
ATOMIC_SMAX,
ATOMIC_UMAX,
ATOMIC_AND,
ATOMIC_OR,
ATOMIC_XOR,
ATOMIC_INC,
ATOMIC_DEC,
ATOMIC_FCMPSWAP,
ATOMIC_FMIN,
ATOMIC_FMAX,
ATOMIC_SWAP_X2 = 80,
ATOMIC_CMPSWAP_X2,
ATOMIC_ADD_X2,
ATOMIC_SUB_X2,
ATOMIC_RSUB_X2,
ATOMIC_SMIN_X2,
ATOMIC_UMIN_X2,
ATOMIC_SMAX_X2,
ATOMIC_UMAX_X2,
ATOMIC_AND_X2,
ATOMIC_OR_X2,
ATOMIC_XOR_X2,
ATOMIC_INC_X2,
ATOMIC_DEC_X2,
ATOMIC_FCMPSWAP_X2,
ATOMIC_FMIN_X2,
ATOMIC_FMAX_X2,
WBINVL1_SC_VOL = 112,
WBINVL1,
OpCount
};
inline const char *getInstructionName(unsigned id) {
switch (id) {
case LOAD_FORMAT_X:return "buffer_load_format_x";
case LOAD_FORMAT_XY:return "buffer_load_format_xy";
case LOAD_FORMAT_XYZ:return "buffer_load_format_xyz";
case LOAD_FORMAT_XYZW:return "buffer_load_format_xyzw";
case STORE_FORMAT_X:return "buffer_store_format_x";
case STORE_FORMAT_XY:return "buffer_store_format_xy";
case STORE_FORMAT_XYZ:return "buffer_store_format_xyz";
case STORE_FORMAT_XYZW:return "buffer_store_format_xyzw";
case LOAD_UBYTE:return "buffer_load_ubyte";
case LOAD_SBYTE:return "buffer_load_sbyte";
case LOAD_USHORT:return "buffer_load_ushort";
case LOAD_SSHORT:return "buffer_load_sshort";
case LOAD_DWORD:return "buffer_load_dword";
case LOAD_DWORDX2:return "buffer_load_dwordx2";
case LOAD_DWORDX4:return "buffer_load_dwordx4";
case LOAD_DWORDX3:return "buffer_load_dwordx3";
case STORE_BYTE:return "buffer_store_byte";
case STORE_SHORT:return "buffer_store_short";
case STORE_DWORD:return "buffer_store_dword";
case STORE_DWORDX2:return "buffer_store_dwordx2";
case STORE_DWORDX4:return "buffer_store_dwordx4";
case STORE_DWORDX3:return "buffer_store_dwordx3";
case ATOMIC_SWAP:return "buffer_atomic_swap";
case ATOMIC_CMPSWAP:return "buffer_atomic_cmpswap";
case ATOMIC_ADD:return "buffer_atomic_add";
case ATOMIC_SUB:return "buffer_atomic_sub";
case ATOMIC_RSUB:return "buffer_atomic_rsub";
case ATOMIC_SMIN:return "buffer_atomic_smin";
case ATOMIC_UMIN:return "buffer_atomic_umin";
case ATOMIC_SMAX:return "buffer_atomic_smax";
case ATOMIC_UMAX:return "buffer_atomic_umax";
case ATOMIC_AND:return "buffer_atomic_and";
case ATOMIC_OR:return "buffer_atomic_or";
case ATOMIC_XOR:return "buffer_atomic_xor";
case ATOMIC_INC:return "buffer_atomic_inc";
case ATOMIC_DEC:return "buffer_atomic_dec";
case ATOMIC_FCMPSWAP:return "buffer_atomic_fcmpswap";
case ATOMIC_FMIN:return "buffer_atomic_fmin";
case ATOMIC_FMAX:return "buffer_atomic_fmax";
case ATOMIC_SWAP_X2:return "buffer_atomic_swap_x2";
case ATOMIC_CMPSWAP_X2:return "buffer_atomic_cmpswap_x2";
case ATOMIC_ADD_X2:return "buffer_atomic_add_x2";
case ATOMIC_SUB_X2:return "buffer_atomic_sub_x2";
case ATOMIC_RSUB_X2:return "buffer_atomic_rsub_x2";
case ATOMIC_SMIN_X2:return "buffer_atomic_smin_x2";
case ATOMIC_UMIN_X2:return "buffer_atomic_umin_x2";
case ATOMIC_SMAX_X2:return "buffer_atomic_smax_x2";
case ATOMIC_UMAX_X2:return "buffer_atomic_umax_x2";
case ATOMIC_AND_X2:return "buffer_atomic_and_x2";
case ATOMIC_OR_X2:return "buffer_atomic_or_x2";
case ATOMIC_XOR_X2:return "buffer_atomic_xor_x2";
case ATOMIC_INC_X2:return "buffer_atomic_inc_x2";
case ATOMIC_DEC_X2:return "buffer_atomic_dec_x2";
case ATOMIC_FCMPSWAP_X2:return "buffer_atomic_fcmpswap_x2";
case ATOMIC_FMIN_X2:return "buffer_atomic_fmin_x2";
case ATOMIC_FMAX_X2:return "buffer_atomic_fmax_x2";
case WBINVL1_SC_VOL:return "buffer_wbinvl1_sc_vol";
case WBINVL1:return "buffer_wbinvl1";
}
return nullptr;
}
} // namespace shader::ir::mubuf