2017-12-13 15:32:54 +01:00
|
|
|
#include "dxbc_defs.h"
|
|
|
|
|
|
|
|
namespace dxvk {
|
|
|
|
|
|
|
|
const std::array<DxbcInstFormat, 207> g_instructionFormats = {{
|
|
|
|
/* Add */
|
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* And */
|
2017-12-19 00:45:31 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Break */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 0, DxbcInstClass::ControlFlow },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Breakc */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 1, DxbcInstClass::ControlFlow, {
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Call */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 1, DxbcInstClass::ControlFlow, {
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Callc */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 2, DxbcInstClass::ControlFlow, {
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
2018-01-08 22:26:45 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
2017-12-18 11:53:28 +01:00
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Case */
|
2017-12-29 22:54:25 +01:00
|
|
|
{ 1, DxbcInstClass::ControlFlow, {
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Continue */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 0, DxbcInstClass::ControlFlow },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Continuec */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 1, DxbcInstClass::ControlFlow, {
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Cut */
|
2017-12-18 16:41:05 +01:00
|
|
|
{ 0, DxbcInstClass::GeometryEmit },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Default */
|
2017-12-30 17:22:36 +01:00
|
|
|
{ 0, DxbcInstClass::ControlFlow },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DerivRtx */
|
2017-12-19 20:26:05 +01:00
|
|
|
{ 2, DxbcInstClass::VectorDeriv, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DerivRty */
|
2017-12-19 20:26:05 +01:00
|
|
|
{ 2, DxbcInstClass::VectorDeriv, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Discard */
|
2017-12-18 16:41:05 +01:00
|
|
|
{ 1, DxbcInstClass::ControlFlow, {
|
2018-01-08 22:26:45 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
2017-12-18 16:41:05 +01:00
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Div */
|
2017-12-17 01:36:41 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Dp2 */
|
|
|
|
{ 3, DxbcInstClass::VectorDot, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* Dp3 */
|
|
|
|
{ 3, DxbcInstClass::VectorDot, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* Dp4 */
|
|
|
|
{ 3, DxbcInstClass::VectorDot, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* Else */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 0, DxbcInstClass::ControlFlow },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Emit */
|
2017-12-18 16:41:05 +01:00
|
|
|
{ 0, DxbcInstClass::GeometryEmit },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* EmitThenCut */
|
|
|
|
{ },
|
|
|
|
/* EndIf */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 0, DxbcInstClass::ControlFlow },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* EndLoop */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 0, DxbcInstClass::ControlFlow },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* EndSwitch */
|
2017-12-29 22:54:25 +01:00
|
|
|
{ 0, DxbcInstClass::ControlFlow },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Eq */
|
2017-12-17 01:36:41 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Exp */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Frc */
|
2017-12-29 19:26:59 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* FtoI */
|
2017-12-19 18:12:18 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* FtoU */
|
2017-12-19 18:12:18 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Ge */
|
2017-12-17 01:36:41 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IAdd */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* If */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 1, DxbcInstClass::ControlFlow, {
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IEq */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IGe */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ILt */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IMad */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 4, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IMax */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IMin */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IMul */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 4, DxbcInstClass::VectorImul, {
|
2017-12-20 00:16:49 +01:00
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
2017-12-18 00:28:54 +01:00
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* INe */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* INeg */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IShl */
|
2017-12-20 23:50:39 +01:00
|
|
|
{ 3, DxbcInstClass::VectorShift, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IShr */
|
2017-12-20 23:50:39 +01:00
|
|
|
{ 3, DxbcInstClass::VectorShift, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ItoF */
|
2017-12-19 18:12:18 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Label */
|
|
|
|
{ },
|
|
|
|
/* Ld */
|
2017-12-27 01:37:15 +01:00
|
|
|
{ 3, DxbcInstClass::TextureFetch, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
2018-01-03 12:26:27 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
2017-12-27 01:37:15 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* LdMs */
|
2018-01-16 22:39:30 +01:00
|
|
|
{ 4, DxbcInstClass::TextureFetch, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Log */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Loop */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 0, DxbcInstClass::ControlFlow },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Lt */
|
2017-12-17 01:36:41 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Mad */
|
|
|
|
{ 4, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* Min */
|
2017-12-13 16:35:01 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Max */
|
2017-12-13 16:35:01 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* CustomData */
|
2017-12-19 17:41:23 +01:00
|
|
|
{ 0, DxbcInstClass::CustomData },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Mov */
|
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* Movc */
|
2017-12-17 01:36:41 +01:00
|
|
|
{ 4, DxbcInstClass::VectorCmov, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Mul */
|
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* Ne */
|
2017-12-17 01:36:41 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Nop */
|
2018-04-11 01:49:39 +02:00
|
|
|
{ 0, DxbcInstClass::NoOperation },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Not */
|
2017-12-19 00:45:31 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Or */
|
2017-12-19 00:45:31 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ResInfo */
|
2017-12-27 01:37:15 +01:00
|
|
|
{ 3, DxbcInstClass::TextureQuery, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Ret */
|
|
|
|
{ 0, DxbcInstClass::ControlFlow },
|
|
|
|
/* Retc */
|
2017-12-18 11:53:28 +01:00
|
|
|
{ 1, DxbcInstClass::ControlFlow, {
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* RoundNe */
|
2017-12-29 19:26:59 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* RoundNi */
|
2017-12-29 19:26:59 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* RoundPi */
|
2017-12-29 19:26:59 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* RoundZ */
|
2017-12-29 19:26:59 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Rsq */
|
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* Sample */
|
|
|
|
{ 4, DxbcInstClass::TextureSample, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* SampleC */
|
2017-12-20 00:16:49 +01:00
|
|
|
{ 5, DxbcInstClass::TextureSample, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* SampleClz */
|
2017-12-20 00:16:49 +01:00
|
|
|
{ 5, DxbcInstClass::TextureSample, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* SampleL */
|
2017-12-21 17:14:11 +01:00
|
|
|
{ 5, DxbcInstClass::TextureSample, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* SampleD */
|
2017-12-20 23:50:39 +01:00
|
|
|
{ 6, DxbcInstClass::TextureSample, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* SampleB */
|
2018-01-20 10:21:27 +01:00
|
|
|
{ 5, DxbcInstClass::TextureSample, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Sqrt */
|
2017-12-18 00:28:54 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Switch */
|
2017-12-29 22:54:25 +01:00
|
|
|
{ 1, DxbcInstClass::ControlFlow, {
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* SinCos */
|
2017-12-13 16:35:01 +01:00
|
|
|
{ 3, DxbcInstClass::VectorSinCos, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UDiv */
|
2017-12-18 16:41:05 +01:00
|
|
|
{ 4, DxbcInstClass::VectorIdiv, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ULt */
|
2017-12-20 23:50:39 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UGe */
|
2017-12-20 23:50:39 +01:00
|
|
|
{ 3, DxbcInstClass::VectorCmp, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UMul */
|
2017-12-18 16:41:05 +01:00
|
|
|
{ 4, DxbcInstClass::VectorImul, {
|
2017-12-20 00:16:49 +01:00
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
2017-12-18 16:41:05 +01:00
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UMad */
|
2017-12-20 23:50:39 +01:00
|
|
|
{ 4, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UMax */
|
2017-12-20 23:50:39 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UMin */
|
2017-12-20 23:50:39 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UShr */
|
2017-12-20 23:50:39 +01:00
|
|
|
{ 3, DxbcInstClass::VectorShift, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UtoF */
|
2017-12-19 18:12:18 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Xor */
|
2017-12-19 00:45:31 +01:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclResource */
|
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
|
|
|
/* DclConstantBuffer */
|
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* DclSampler */
|
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* DclIndexRange */
|
2018-02-08 10:17:59 +01:00
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclGsOutputPrimitiveTopology */
|
2017-12-18 16:41:05 +01:00
|
|
|
{ 0, DxbcInstClass::Declaration },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclGsInputPrimitive */
|
2017-12-18 16:41:05 +01:00
|
|
|
{ 0, DxbcInstClass::Declaration },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclMaxOutputVertexCount */
|
2017-12-18 16:41:05 +01:00
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclInput */
|
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* DclInputSgv */
|
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
|
|
|
/* DclInputSiv */
|
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
|
|
|
/* DclInputPs */
|
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* DclInputPsSgv */
|
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
|
|
|
/* DclInputPsSiv */
|
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
|
|
|
/* DclOutput */
|
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
|
|
|
/* DclOutputSgv */
|
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
|
|
|
/* DclOutputSiv */
|
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
|
|
|
/* DclTemps */
|
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
|
|
|
/* DclIndexableTemp */
|
2017-12-20 22:50:05 +01:00
|
|
|
{ 3, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclGlobalFlags */
|
|
|
|
{ 0, DxbcInstClass::Declaration },
|
|
|
|
/* Reserved0 */
|
|
|
|
{ 0, DxbcInstClass::Undefined },
|
|
|
|
/* Lod */
|
2018-02-04 22:41:23 +01:00
|
|
|
{ 4, DxbcInstClass::TextureQueryLod, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Gather4 */
|
2018-01-17 02:12:29 +01:00
|
|
|
{ 4, DxbcInstClass::TextureGather, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* SamplePos */
|
2018-03-12 12:25:10 +01:00
|
|
|
{ 3, DxbcInstClass::TextureQueryMsPos, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* SampleInfo */
|
2018-02-04 19:30:39 +01:00
|
|
|
{ 2, DxbcInstClass::TextureQueryMs, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Reserved1 */
|
|
|
|
{ },
|
|
|
|
/* HsDecls */
|
2018-03-01 09:26:17 +01:00
|
|
|
{ 0, DxbcInstClass::HullShaderPhase },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* HsControlPointPhase */
|
2018-03-01 09:26:17 +01:00
|
|
|
{ 0, DxbcInstClass::HullShaderPhase },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* HsForkPhase */
|
2018-03-01 09:26:17 +01:00
|
|
|
{ 0, DxbcInstClass::HullShaderPhase },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* HsJoinPhase */
|
2018-03-01 09:26:17 +01:00
|
|
|
{ 0, DxbcInstClass::HullShaderPhase },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* EmitStream */
|
2018-02-04 22:59:15 +01:00
|
|
|
{ 1, DxbcInstClass::GeometryEmit, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* CutStream */
|
2018-02-04 22:59:15 +01:00
|
|
|
{ 1, DxbcInstClass::GeometryEmit, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* EmitThenCutStream */
|
|
|
|
{ },
|
|
|
|
/* InterfaceCall */
|
|
|
|
{ },
|
|
|
|
/* BufInfo */
|
2017-12-30 01:26:37 +01:00
|
|
|
{ 2, DxbcInstClass::BufferQuery, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DerivRtxCoarse */
|
2017-12-19 20:26:05 +01:00
|
|
|
{ 2, DxbcInstClass::VectorDeriv, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DerivRtxFine */
|
2017-12-19 20:26:05 +01:00
|
|
|
{ 2, DxbcInstClass::VectorDeriv, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DerivRtyCoarse */
|
2017-12-19 20:26:05 +01:00
|
|
|
{ 2, DxbcInstClass::VectorDeriv, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DerivRtyFine */
|
2017-12-19 20:26:05 +01:00
|
|
|
{ 2, DxbcInstClass::VectorDeriv, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Gather4C */
|
2018-01-17 02:12:29 +01:00
|
|
|
{ 5, DxbcInstClass::TextureGather, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Gather4Po */
|
2018-02-04 17:40:02 +01:00
|
|
|
{ 5, DxbcInstClass::TextureGather, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Gather4PoC */
|
2018-02-04 17:40:02 +01:00
|
|
|
{ 6, DxbcInstClass::TextureGather, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Rcp */
|
2017-12-30 03:44:19 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* F32toF16 */
|
2017-12-30 13:18:31 +01:00
|
|
|
{ 2, DxbcInstClass::ConvertFloat16, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* F16toF32 */
|
2017-12-30 13:18:31 +01:00
|
|
|
{ 2, DxbcInstClass::ConvertFloat16, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UAddc */
|
|
|
|
{ },
|
|
|
|
/* USubb */
|
|
|
|
{ },
|
|
|
|
/* CountBits */
|
2018-02-04 13:14:23 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* FirstBitHi */
|
2018-05-12 01:39:23 +02:00
|
|
|
{ 2, DxbcInstClass::BitScan, {
|
2018-02-04 13:14:23 +01:00
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* FirstBitLo */
|
2018-05-12 01:39:23 +02:00
|
|
|
{ 2, DxbcInstClass::BitScan, {
|
2018-02-04 13:14:23 +01:00
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* FirstBitShi */
|
2018-05-12 01:39:23 +02:00
|
|
|
{ 2, DxbcInstClass::BitScan, {
|
2018-02-04 13:14:23 +01:00
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* UBfe */
|
2017-12-30 03:44:19 +01:00
|
|
|
{ 4, DxbcInstClass::BitExtract, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
2018-02-28 06:44:27 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
2017-12-30 03:44:19 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* IBfe */
|
2017-12-30 03:44:19 +01:00
|
|
|
{ 4, DxbcInstClass::BitExtract, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
2018-02-28 06:44:27 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
2017-12-30 03:44:19 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Bfi */
|
2017-12-30 03:44:19 +01:00
|
|
|
{ 5, DxbcInstClass::BitInsert, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
2018-02-28 06:44:27 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
2017-12-30 03:44:19 +01:00
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* BfRev */
|
2018-02-15 09:41:48 +01:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Swapc */
|
2018-01-17 21:47:18 +01:00
|
|
|
{ 5, DxbcInstClass::VectorCmov, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclStream */
|
2018-02-04 22:59:15 +01:00
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclFunctionBody */
|
|
|
|
{ },
|
|
|
|
/* DclFunctionTable */
|
|
|
|
{ },
|
|
|
|
/* DclInterface */
|
|
|
|
{ },
|
|
|
|
/* DclInputControlPointCount */
|
2018-03-01 12:47:24 +01:00
|
|
|
{ 0, DxbcInstClass::Declaration },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclOutputControlPointCount */
|
2018-03-01 12:47:24 +01:00
|
|
|
{ 0, DxbcInstClass::Declaration },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclTessDomain */
|
2018-03-01 14:36:17 +01:00
|
|
|
{ 0, DxbcInstClass::Declaration },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclTessPartitioning */
|
2018-03-01 14:36:17 +01:00
|
|
|
{ 0, DxbcInstClass::Declaration },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclTessOutputPrimitive */
|
2018-03-01 14:36:17 +01:00
|
|
|
{ 0, DxbcInstClass::Declaration },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclHsMaxTessFactor */
|
2018-03-10 15:02:27 +01:00
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclHsForkPhaseInstanceCount */
|
2018-03-01 12:08:06 +01:00
|
|
|
{ 1, DxbcInstClass::HullShaderInstCnt, {
|
2018-03-10 15:02:27 +01:00
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
2018-03-01 12:08:06 +01:00
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclHsJoinPhaseInstanceCount */
|
2018-03-01 12:08:06 +01:00
|
|
|
{ 1, DxbcInstClass::HullShaderInstCnt, {
|
2018-03-10 15:02:27 +01:00
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
2018-03-01 12:08:06 +01:00
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclThreadGroup */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclUavTyped */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclUavRaw */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclUavStructured */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclThreadGroupSharedMemoryRaw */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclThreadGroupSharedMemoryStructured */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclResourceRaw */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclResourceStructured */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 2, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* LdUavTyped */
|
2018-01-01 17:14:06 +01:00
|
|
|
{ 3, DxbcInstClass::TypedUavLoad, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* StoreUavTyped */
|
2018-01-01 17:14:06 +01:00
|
|
|
{ 3, DxbcInstClass::TypedUavStore, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* LdRaw */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::BufferLoad, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* StoreRaw */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::BufferStore, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* LdStructured */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::BufferLoad, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* StoreStructured */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::BufferStore, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* AtomicAnd */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* AtomicOr */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* AtomicXor */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* AtomicCmpStore */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* AtomicIAdd */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* AtomicIMax */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* AtomicIMin */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* AtomicUMax */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* AtomicUMin */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 3, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ImmAtomicAlloc */
|
2018-01-11 17:11:51 +01:00
|
|
|
{ 2, DxbcInstClass::AtomicCounter, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ImmAtomicConsume */
|
2018-01-11 17:11:51 +01:00
|
|
|
{ 2, DxbcInstClass::AtomicCounter, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ImmAtomicIAdd */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ImmAtomicAnd */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ImmAtomicOr */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ImmAtomicXor */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ImmAtomicExch */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* ImmAtomicCmpExch */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 5, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2018-04-02 10:58:26 +02:00
|
|
|
/* ImmAtomicIMax */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2018-04-02 10:58:26 +02:00
|
|
|
/* ImmAtomicIMin */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2018-04-02 10:58:26 +02:00
|
|
|
/* ImmAtomicUMax */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2018-04-02 10:58:26 +02:00
|
|
|
/* ImmAtomicUMin */
|
2017-12-28 16:03:17 +01:00
|
|
|
{ 4, DxbcInstClass::Atomic, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* Sync */
|
2017-12-29 00:51:31 +01:00
|
|
|
{ 0, DxbcInstClass::Barrier },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DAdd */
|
2018-06-07 15:05:06 +02:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DMax */
|
2018-06-07 15:05:06 +02:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DMin */
|
2018-06-07 15:05:06 +02:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DMul */
|
2018-06-07 15:05:06 +02:00
|
|
|
{ 3, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DEq */
|
|
|
|
{ },
|
|
|
|
/* DGe */
|
|
|
|
{ },
|
|
|
|
/* DLt */
|
|
|
|
{ },
|
|
|
|
/* DNe */
|
|
|
|
{ },
|
|
|
|
/* DMov */
|
2018-06-07 15:05:06 +02:00
|
|
|
{ 2, DxbcInstClass::VectorAlu, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DMovc */
|
|
|
|
{ },
|
|
|
|
/* DtoF */
|
2018-06-07 14:32:56 +02:00
|
|
|
{ 2, DxbcInstClass::ConvertFloat64, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float64 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* FtoD */
|
2018-06-07 14:32:56 +02:00
|
|
|
{ 2, DxbcInstClass::ConvertFloat64, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float64 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* EvalSnapped */
|
2018-02-26 16:46:34 +01:00
|
|
|
{ 3, DxbcInstClass::Interpolate, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* EvalSampleIndex */
|
2018-02-26 16:46:34 +01:00
|
|
|
{ 3, DxbcInstClass::Interpolate, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* EvalCentroid */
|
2018-02-26 16:46:34 +01:00
|
|
|
{ 2, DxbcInstClass::Interpolate, {
|
|
|
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Float32 },
|
|
|
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
/* DclGsInstanceCount */
|
2018-05-22 19:36:53 +02:00
|
|
|
{ 1, DxbcInstClass::Declaration, {
|
|
|
|
{ DxbcOperandKind::Imm32, DxbcScalarType::Uint32 },
|
|
|
|
} },
|
2017-12-13 15:32:54 +01:00
|
|
|
}};
|
|
|
|
|
|
|
|
|
|
|
|
DxbcInstFormat dxbcInstructionFormat(DxbcOpcode opcode) {
|
|
|
|
const uint32_t idx = static_cast<uint32_t>(opcode);
|
|
|
|
|
|
|
|
return (idx < g_instructionFormats.size())
|
|
|
|
? g_instructionFormats.at(idx)
|
|
|
|
: DxbcInstFormat();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|