summaryrefslogtreecommitdiffstats
path: root/src/libs/dxvk-native-1.9.2a/src/dxso/dxso_tables.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/dxvk-native-1.9.2a/src/dxso/dxso_tables.cpp')
-rw-r--r--src/libs/dxvk-native-1.9.2a/src/dxso/dxso_tables.cpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/libs/dxvk-native-1.9.2a/src/dxso/dxso_tables.cpp b/src/libs/dxvk-native-1.9.2a/src/dxso/dxso_tables.cpp
new file mode 100644
index 00000000..5b8ab91f
--- /dev/null
+++ b/src/libs/dxvk-native-1.9.2a/src/dxso/dxso_tables.cpp
@@ -0,0 +1,93 @@
+#include "dxso_tables.h"
+
+namespace dxvk {
+
+ uint32_t DxsoGetDefaultOpcodeLength(DxsoOpcode opcode) {
+
+ switch (opcode) {
+ case DxsoOpcode::Nop: return 0;
+ case DxsoOpcode::Mov: return 2;
+ case DxsoOpcode::Add: return 3;
+ case DxsoOpcode::Sub: return 3;
+ case DxsoOpcode::Mad: return 4;
+ case DxsoOpcode::Mul: return 3;
+ case DxsoOpcode::Rcp: return 2;
+ case DxsoOpcode::Rsq: return 2;
+ case DxsoOpcode::Dp3: return 3;
+ case DxsoOpcode::Dp4: return 3;
+ case DxsoOpcode::Min: return 3;
+ case DxsoOpcode::Max: return 3;
+ case DxsoOpcode::Slt: return 3;
+ case DxsoOpcode::Sge: return 3;
+ case DxsoOpcode::Exp: return 2;
+ case DxsoOpcode::Log: return 2;
+ case DxsoOpcode::Lit: return 2;
+ case DxsoOpcode::Dst: return 3;
+ case DxsoOpcode::Lrp: return 4;
+ case DxsoOpcode::Frc: return 2;
+ case DxsoOpcode::M4x4: return 3;
+ case DxsoOpcode::M4x3: return 3;
+ case DxsoOpcode::M3x4: return 3;
+ case DxsoOpcode::M3x3: return 3;
+ case DxsoOpcode::M3x2: return 3;
+ case DxsoOpcode::Call: return 1;
+ case DxsoOpcode::CallNz: return 2;
+ case DxsoOpcode::Loop: return 2;
+ case DxsoOpcode::Ret: return 0;
+ case DxsoOpcode::EndLoop: return 0;
+ case DxsoOpcode::Label: return 1;
+ case DxsoOpcode::Dcl: return 2;
+ case DxsoOpcode::Pow: return 3;
+ case DxsoOpcode::Crs: return 3;
+ case DxsoOpcode::Sgn: return 4;
+ case DxsoOpcode::Abs: return 2;
+ case DxsoOpcode::Nrm: return 2;
+ case DxsoOpcode::SinCos: return 4;
+ case DxsoOpcode::Rep: return 1;
+ case DxsoOpcode::EndRep: return 0;
+ case DxsoOpcode::If: return 1;
+ case DxsoOpcode::Ifc: return 2;
+ case DxsoOpcode::Else: return 0;
+ case DxsoOpcode::EndIf: return 0;
+ case DxsoOpcode::Break: return 0;
+ case DxsoOpcode::BreakC: return 2;
+ case DxsoOpcode::Mova: return 2;
+ case DxsoOpcode::DefB: return 2;
+ case DxsoOpcode::DefI: return 5;
+ case DxsoOpcode::TexCoord: return 1;
+ case DxsoOpcode::TexKill: return 1;
+ case DxsoOpcode::Tex: return 1;
+ case DxsoOpcode::TexBem: return 2;
+ case DxsoOpcode::TexBemL: return 2;
+ case DxsoOpcode::TexReg2Ar: return 2;
+ case DxsoOpcode::TexReg2Gb: return 2;
+ case DxsoOpcode::TexM3x2Pad: return 2;
+ case DxsoOpcode::TexM3x2Tex: return 2;
+ case DxsoOpcode::TexM3x3Pad: return 2;
+ case DxsoOpcode::TexM3x3Tex: return 2;
+ case DxsoOpcode::TexM3x3Spec: return 3;
+ case DxsoOpcode::TexM3x3VSpec: return 2;
+ case DxsoOpcode::ExpP: return 2;
+ case DxsoOpcode::LogP: return 2;
+ case DxsoOpcode::Cnd: return 4;
+ case DxsoOpcode::Def: return 5;
+ case DxsoOpcode::TexReg2Rgb: return 2;
+ case DxsoOpcode::TexDp3Tex: return 2;
+ case DxsoOpcode::TexM3x2Depth: return 2;
+ case DxsoOpcode::TexDp3: return 2;
+ case DxsoOpcode::TexM3x3: return 2;
+ case DxsoOpcode::TexDepth: return 1;
+ case DxsoOpcode::Cmp: return 4;
+ case DxsoOpcode::Bem: return 3;
+ case DxsoOpcode::Dp2Add: return 4;
+ case DxsoOpcode::DsX: return 2;
+ case DxsoOpcode::DsY: return 2;
+ case DxsoOpcode::TexLdd: return 5;
+ case DxsoOpcode::SetP: return 3;
+ case DxsoOpcode::TexLdl: return 3;
+ case DxsoOpcode::BreakP: return 2;
+ default: Logger::warn("DxsoGetDefaultOpcodeLength: unknown opcode to get default length for."); return UINT32_MAX;
+ }
+ }
+
+} \ No newline at end of file