added rest of XMM registers, more progress on converting expressions front

This commit is contained in:
Nikita Smith
2025-03-26 12:19:16 -07:00
parent e7cee3b83c
commit c80661449c
3 changed files with 463 additions and 84 deletions
+64
View File
@@ -1,6 +1,70 @@
// Copyright (c) 2024 Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
internal U64
dw_reg_size_from_code_x86(U64 reg_code)
{
switch (reg_code) {
#define X(reg_name_dw, reg_code_dw, reg_name_rdi, reg_pos, reg_size) case DW_RegX86_##reg_name_dw: return reg_size;
DW_Regs_X86_XList(X)
#undef X
}
return 0;
}
internal U64
dw_reg_pos_from_code_x86(U64 reg_code)
{
switch (reg_code) {
#define X(reg_name_dw, reg_code_dw, reg_name_rdi, reg_pos, reg_size) case DW_RegX86_##reg_name_dw: return reg_pos;
DW_Regs_X86_XList(X)
#undef X
}
return max_U64;
}
internal U64
dw_reg_size_from_code_x64(U64 reg_code)
{
switch (reg_code) {
#define X(reg_name_dw, reg_code_dw, reg_name_rdi, reg_pos, reg_size) case DW_RegX64_##reg_name_dw: return reg_size;
DW_Regs_X64_XList(X)
#undef X
}
return 0;
}
internal U64
dw_reg_pos_from_code_x64(U64 reg_code)
{
switch (reg_code) {
#define X(reg_name_dw, reg_code_dw, reg_name_rdi, reg_pos, reg_size) case DW_RegX64_##reg_name_dw: return reg_pos;
DW_Regs_X64_XList(X)
#undef X
}
return max_U64;
}
internal U64
dw_reg_size_from_code(RDI_Arch arch, U64 reg_code)
{
switch (arch) {
case RDI_Arch_X86: return dw_reg_size_from_code_x86(reg_code);
case RDI_Arch_X64: return dw_reg_size_from_code_x64(reg_code);
}
return 0;
}
internal U64
dw_reg_pos_from_code(RDI_Arch arch, U64 reg_code)
{
switch (arch) {
case RDI_Arch_X86: return dw_reg_pos_from_code_x86(reg_code);
case RDI_Arch_X64: return dw_reg_pos_from_code_x64(reg_code);
}
return max_U64;
}
internal DW_AttribClass
dw_attrib_class_from_attrib_kind_v2(DW_AttribKind k)
{
+23
View File
@@ -1670,6 +1670,22 @@ typedef enum DW_ExprOpEnum
X(Xmm13, 30, zmm13, 0, 16) \
X(Xmm14, 31, zmm14, 0, 16) \
X(Xmm15, 32, zmm15, 0, 16) \
X(Xmm16, 67, zmm16, 0, 16) \
X(Xmm17, 68, zmm17, 0, 16) \
X(Xmm18, 69, zmm18, 0, 16) \
X(Xmm19, 70, zmm19, 0, 16) \
X(Xmm20, 71, zmm20, 0, 16) \
X(Xmm21, 72, zmm21, 0, 16) \
X(Xmm22, 73, zmm22, 0, 16) \
X(Xmm23, 74, zmm23, 0, 16) \
X(Xmm24, 75, zmm24, 0, 16) \
X(Xmm25, 76, zmm25, 0, 16) \
X(Xmm26, 77, zmm26, 0, 16) \
X(Xmm27, 78, zmm27, 0, 16) \
X(Xmm28, 79, zmm28, 0, 16) \
X(Xmm29, 80, zmm29, 0, 16) \
X(Xmm30, 81, zmm30, 0, 16) \
X(Xmm31, 82, zmm31, 0, 16) \
X(St0, 33, st0, 0, 10) \
X(St1, 34, st1, 0, 10) \
X(St2, 35, st2, 0, 10) \
@@ -1718,6 +1734,13 @@ typedef enum DW_RegX64Enum
////////////////////////////////
internal U64 dw_reg_size_from_code_x86(U64 reg_code);
internal U64 dw_reg_pos_from_code_x86(U64 reg_code);
internal U64 dw_reg_size_from_code_x64(U64 reg_code);
internal U64 dw_reg_pos_from_code_x64(U64 reg_code);
internal U64 dw_reg_size_from_code(Arch arch, U64 reg_code);
internal U64 dw_reg_pos_from_code(Arch arch, U64 reg_code);
//- Attrib Class Encodings
// Speced Encodings