mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-14 17:28:07 +00:00
added _Decimal* and __bf16 types to RDI and DWARF converter
This commit is contained in:
@@ -187,6 +187,7 @@ case RDI_TypeKind_S128: {result = (RDI_U8*)"S128"; *size_out = sizeof("S128")-1;
|
|||||||
case RDI_TypeKind_S256: {result = (RDI_U8*)"S256"; *size_out = sizeof("S256")-1;}break;
|
case RDI_TypeKind_S256: {result = (RDI_U8*)"S256"; *size_out = sizeof("S256")-1;}break;
|
||||||
case RDI_TypeKind_S512: {result = (RDI_U8*)"S512"; *size_out = sizeof("S512")-1;}break;
|
case RDI_TypeKind_S512: {result = (RDI_U8*)"S512"; *size_out = sizeof("S512")-1;}break;
|
||||||
case RDI_TypeKind_Bool: {result = (RDI_U8*)"Bool"; *size_out = sizeof("Bool")-1;}break;
|
case RDI_TypeKind_Bool: {result = (RDI_U8*)"Bool"; *size_out = sizeof("Bool")-1;}break;
|
||||||
|
case RDI_TypeKind_BF16: {result = (RDI_U8*)"BF16"; *size_out = sizeof("BF16")-1;}break;
|
||||||
case RDI_TypeKind_F16: {result = (RDI_U8*)"F16"; *size_out = sizeof("F16")-1;}break;
|
case RDI_TypeKind_F16: {result = (RDI_U8*)"F16"; *size_out = sizeof("F16")-1;}break;
|
||||||
case RDI_TypeKind_F32: {result = (RDI_U8*)"F32"; *size_out = sizeof("F32")-1;}break;
|
case RDI_TypeKind_F32: {result = (RDI_U8*)"F32"; *size_out = sizeof("F32")-1;}break;
|
||||||
case RDI_TypeKind_F32PP: {result = (RDI_U8*)"F32PP"; *size_out = sizeof("F32PP")-1;}break;
|
case RDI_TypeKind_F32PP: {result = (RDI_U8*)"F32PP"; *size_out = sizeof("F32PP")-1;}break;
|
||||||
@@ -199,6 +200,9 @@ case RDI_TypeKind_ComplexF32: {result = (RDI_U8*)"ComplexF32"; *size_out = sizeo
|
|||||||
case RDI_TypeKind_ComplexF64: {result = (RDI_U8*)"ComplexF64"; *size_out = sizeof("ComplexF64")-1;}break;
|
case RDI_TypeKind_ComplexF64: {result = (RDI_U8*)"ComplexF64"; *size_out = sizeof("ComplexF64")-1;}break;
|
||||||
case RDI_TypeKind_ComplexF80: {result = (RDI_U8*)"ComplexF80"; *size_out = sizeof("ComplexF80")-1;}break;
|
case RDI_TypeKind_ComplexF80: {result = (RDI_U8*)"ComplexF80"; *size_out = sizeof("ComplexF80")-1;}break;
|
||||||
case RDI_TypeKind_ComplexF128: {result = (RDI_U8*)"ComplexF128"; *size_out = sizeof("ComplexF128")-1;}break;
|
case RDI_TypeKind_ComplexF128: {result = (RDI_U8*)"ComplexF128"; *size_out = sizeof("ComplexF128")-1;}break;
|
||||||
|
case RDI_TypeKind_Decimal32: {result = (RDI_U8*)"Decimal32"; *size_out = sizeof("Decimal32")-1;}break;
|
||||||
|
case RDI_TypeKind_Decimal64: {result = (RDI_U8*)"Decimal64"; *size_out = sizeof("Decimal64")-1;}break;
|
||||||
|
case RDI_TypeKind_Decimal128: {result = (RDI_U8*)"Decimal128"; *size_out = sizeof("Decimal128")-1;}break;
|
||||||
case RDI_TypeKind_Modifier: {result = (RDI_U8*)"Modifier"; *size_out = sizeof("Modifier")-1;}break;
|
case RDI_TypeKind_Modifier: {result = (RDI_U8*)"Modifier"; *size_out = sizeof("Modifier")-1;}break;
|
||||||
case RDI_TypeKind_Ptr: {result = (RDI_U8*)"Ptr"; *size_out = sizeof("Ptr")-1;}break;
|
case RDI_TypeKind_Ptr: {result = (RDI_U8*)"Ptr"; *size_out = sizeof("Ptr")-1;}break;
|
||||||
case RDI_TypeKind_LRef: {result = (RDI_U8*)"LRef"; *size_out = sizeof("LRef")-1;}break;
|
case RDI_TypeKind_LRef: {result = (RDI_U8*)"LRef"; *size_out = sizeof("LRef")-1;}break;
|
||||||
@@ -253,6 +257,7 @@ case RDI_TypeKind_S128:{result = 16;}break;
|
|||||||
case RDI_TypeKind_S256:{result = 32;}break;
|
case RDI_TypeKind_S256:{result = 32;}break;
|
||||||
case RDI_TypeKind_S512:{result = 64;}break;
|
case RDI_TypeKind_S512:{result = 64;}break;
|
||||||
case RDI_TypeKind_Bool:{result = 1;}break;
|
case RDI_TypeKind_Bool:{result = 1;}break;
|
||||||
|
case RDI_TypeKind_BF16:{result = 2;}break;
|
||||||
case RDI_TypeKind_F16:{result = 2;}break;
|
case RDI_TypeKind_F16:{result = 2;}break;
|
||||||
case RDI_TypeKind_F32:{result = 4;}break;
|
case RDI_TypeKind_F32:{result = 4;}break;
|
||||||
case RDI_TypeKind_F32PP:{result = 4;}break;
|
case RDI_TypeKind_F32PP:{result = 4;}break;
|
||||||
@@ -265,6 +270,9 @@ case RDI_TypeKind_ComplexF32:{result = 8;}break;
|
|||||||
case RDI_TypeKind_ComplexF64:{result = 16;}break;
|
case RDI_TypeKind_ComplexF64:{result = 16;}break;
|
||||||
case RDI_TypeKind_ComplexF80:{result = 20;}break;
|
case RDI_TypeKind_ComplexF80:{result = 20;}break;
|
||||||
case RDI_TypeKind_ComplexF128:{result = 32;}break;
|
case RDI_TypeKind_ComplexF128:{result = 32;}break;
|
||||||
|
case RDI_TypeKind_Decimal32:{result = 4;}break;
|
||||||
|
case RDI_TypeKind_Decimal64:{result = 8;}break;
|
||||||
|
case RDI_TypeKind_Decimal128:{result = 16;}break;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-13
@@ -298,18 +298,22 @@ RDI_TypeKind_S128 = 0x0015,
|
|||||||
RDI_TypeKind_S256 = 0x0016,
|
RDI_TypeKind_S256 = 0x0016,
|
||||||
RDI_TypeKind_S512 = 0x0017,
|
RDI_TypeKind_S512 = 0x0017,
|
||||||
RDI_TypeKind_Bool = 0x0018,
|
RDI_TypeKind_Bool = 0x0018,
|
||||||
RDI_TypeKind_F16 = 0x0019,
|
RDI_TypeKind_BF16 = 0x0019,
|
||||||
RDI_TypeKind_F32 = 0x001A,
|
RDI_TypeKind_F16 = 0x001A,
|
||||||
RDI_TypeKind_F32PP = 0x001B,
|
RDI_TypeKind_F32 = 0x001B,
|
||||||
RDI_TypeKind_F48 = 0x001C,
|
RDI_TypeKind_F32PP = 0x001C,
|
||||||
RDI_TypeKind_F64 = 0x001D,
|
RDI_TypeKind_F48 = 0x001D,
|
||||||
RDI_TypeKind_F80 = 0x001E,
|
RDI_TypeKind_F64 = 0x001E,
|
||||||
RDI_TypeKind_F96 = 0x001F,
|
RDI_TypeKind_F80 = 0x001F,
|
||||||
RDI_TypeKind_F128 = 0x0020,
|
RDI_TypeKind_F96 = 0x0020,
|
||||||
RDI_TypeKind_ComplexF32 = 0x0021,
|
RDI_TypeKind_F128 = 0x0021,
|
||||||
RDI_TypeKind_ComplexF64 = 0x0022,
|
RDI_TypeKind_ComplexF32 = 0x0022,
|
||||||
RDI_TypeKind_ComplexF80 = 0x0023,
|
RDI_TypeKind_ComplexF64 = 0x0023,
|
||||||
RDI_TypeKind_ComplexF128 = 0x0024,
|
RDI_TypeKind_ComplexF80 = 0x0024,
|
||||||
|
RDI_TypeKind_ComplexF128 = 0x0025,
|
||||||
|
RDI_TypeKind_Decimal32 = 0x0026,
|
||||||
|
RDI_TypeKind_Decimal64 = 0x0027,
|
||||||
|
RDI_TypeKind_Decimal128 = 0x0028,
|
||||||
RDI_TypeKind_Modifier = 0x1000,
|
RDI_TypeKind_Modifier = 0x1000,
|
||||||
RDI_TypeKind_Ptr = 0x1001,
|
RDI_TypeKind_Ptr = 0x1001,
|
||||||
RDI_TypeKind_LRef = 0x1002,
|
RDI_TypeKind_LRef = 0x1002,
|
||||||
@@ -331,7 +335,7 @@ RDI_TypeKind_Bitfield = 0xF000,
|
|||||||
RDI_TypeKind_Variadic = 0xF001,
|
RDI_TypeKind_Variadic = 0xF001,
|
||||||
RDI_TypeKind_Count = 0xF002,
|
RDI_TypeKind_Count = 0xF002,
|
||||||
RDI_TypeKind_FirstBuiltIn = RDI_TypeKind_Void,
|
RDI_TypeKind_FirstBuiltIn = RDI_TypeKind_Void,
|
||||||
RDI_TypeKind_LastBuiltIn = RDI_TypeKind_ComplexF128,
|
RDI_TypeKind_LastBuiltIn = RDI_TypeKind_Decimal128,
|
||||||
RDI_TypeKind_FirstConstructed = RDI_TypeKind_Modifier,
|
RDI_TypeKind_FirstConstructed = RDI_TypeKind_Modifier,
|
||||||
RDI_TypeKind_LastConstructed = RDI_TypeKind_MemberPtr,
|
RDI_TypeKind_LastConstructed = RDI_TypeKind_MemberPtr,
|
||||||
RDI_TypeKind_FirstUserDefined = RDI_TypeKind_Struct,
|
RDI_TypeKind_FirstUserDefined = RDI_TypeKind_Struct,
|
||||||
@@ -770,6 +774,7 @@ X(S128)\
|
|||||||
X(S256)\
|
X(S256)\
|
||||||
X(S512)\
|
X(S512)\
|
||||||
X(Bool)\
|
X(Bool)\
|
||||||
|
X(BF16)\
|
||||||
X(F16)\
|
X(F16)\
|
||||||
X(F32)\
|
X(F32)\
|
||||||
X(F32PP)\
|
X(F32PP)\
|
||||||
@@ -782,6 +787,9 @@ X(ComplexF32)\
|
|||||||
X(ComplexF64)\
|
X(ComplexF64)\
|
||||||
X(ComplexF80)\
|
X(ComplexF80)\
|
||||||
X(ComplexF128)\
|
X(ComplexF128)\
|
||||||
|
X(Decimal32)\
|
||||||
|
X(Decimal64)\
|
||||||
|
X(Decimal128)\
|
||||||
X(Modifier)\
|
X(Modifier)\
|
||||||
X(Ptr)\
|
X(Ptr)\
|
||||||
X(LRef)\
|
X(LRef)\
|
||||||
|
|||||||
+16
-12
@@ -705,18 +705,22 @@ RDI_TypeKindTable:
|
|||||||
{S256 0x0016 32 }
|
{S256 0x0016 32 }
|
||||||
{S512 0x0017 64 }
|
{S512 0x0017 64 }
|
||||||
{Bool 0x0018 1 }
|
{Bool 0x0018 1 }
|
||||||
{F16 0x0019 2 }
|
{BF16 0x0019 2 }
|
||||||
{F32 0x001A 4 }
|
{F16 0x001A 2 }
|
||||||
{F32PP 0x001B 4 }
|
{F32 0x001B 4 }
|
||||||
{F48 0x001C 6 }
|
{F32PP 0x001C 4 }
|
||||||
{F64 0x001D 8 }
|
{F48 0x001D 6 }
|
||||||
{F80 0x001E 10 }
|
{F64 0x001E 8 }
|
||||||
{F96 0x001F 12 }
|
{F80 0x001F 10 }
|
||||||
{F128 0x0020 16 }
|
{F96 0x0020 12 }
|
||||||
{ComplexF32 0x0021 8 }
|
{F128 0x0021 16 }
|
||||||
{ComplexF64 0x0022 16 }
|
{ComplexF32 0x0022 8 }
|
||||||
{ComplexF80 0x0023 20 }
|
{ComplexF64 0x0023 16 }
|
||||||
{ComplexF128 0x0024 32 LastBuiltIn }
|
{ComplexF80 0x0024 20 }
|
||||||
|
{ComplexF128 0x0025 32 }
|
||||||
|
{Decimal32 0x0026 4 }
|
||||||
|
{Decimal64 0x0027 8 }
|
||||||
|
{Decimal128 0x0028 16 LastBuiltIn }
|
||||||
//-
|
//-
|
||||||
{Modifier 0x1000 0 FirstConstructed }
|
{Modifier 0x1000 0 FirstConstructed }
|
||||||
{Ptr 0x1001 0 }
|
{Ptr 0x1001 0 }
|
||||||
|
|||||||
@@ -1775,7 +1775,7 @@ d2r_convert_types(Arena *arena,
|
|||||||
} else if (str8_match(name, str8_lit("_Float16"), 0)) {
|
} else if (str8_match(name, str8_lit("_Float16"), 0)) {
|
||||||
kind = RDI_TypeKind_F16;
|
kind = RDI_TypeKind_F16;
|
||||||
} else if (str8_match(name, str8_lit("__bf16"), 0)) {
|
} else if (str8_match(name, str8_lit("__bf16"), 0)) {
|
||||||
NotImplemented;
|
kind = RDI_TypeKind_BF16;
|
||||||
}
|
}
|
||||||
if (kind != RDI_TypeKind_NULL) { break; }
|
if (kind != RDI_TypeKind_NULL) { break; }
|
||||||
}
|
}
|
||||||
@@ -1818,6 +1818,14 @@ d2r_convert_types(Arena *arena,
|
|||||||
default: log_user_errorf("unexpected size"); break;
|
default: log_user_errorf("unexpected size"); break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
case DW_ATE_DecimalFloat: {
|
||||||
|
switch (byte_size) {
|
||||||
|
case 4: kind = RDI_TypeKind_Decimal32; break;
|
||||||
|
case 8: kind = RDI_TypeKind_Decimal64; break;
|
||||||
|
case 16: kind = RDI_TypeKind_Decimal128; break;
|
||||||
|
default: log_user_errorf("unexpected size"); break;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
case DW_ATE_ImaginaryFloat: {
|
case DW_ATE_ImaginaryFloat: {
|
||||||
NotImplemented;
|
NotImplemented;
|
||||||
} break;
|
} break;
|
||||||
@@ -1836,9 +1844,6 @@ d2r_convert_types(Arena *arena,
|
|||||||
case DW_ATE_UnsignedFixed: {
|
case DW_ATE_UnsignedFixed: {
|
||||||
NotImplemented;
|
NotImplemented;
|
||||||
} break;
|
} break;
|
||||||
case DW_ATE_DecimalFloat: {
|
|
||||||
NotImplemented;
|
|
||||||
} break;
|
|
||||||
case DW_ATE_Ucs: {
|
case DW_ATE_Ucs: {
|
||||||
NotImplemented;
|
NotImplemented;
|
||||||
} break;
|
} break;
|
||||||
|
|||||||
+35
-30
@@ -70,33 +70,36 @@ T_BeginTest(d2r_types)
|
|||||||
dw_writer_push_attrib_enum(writer, DW_AttribKind_Encoding, DW_ATE_##e); \
|
dw_writer_push_attrib_enum(writer, DW_AttribKind_Encoding, DW_ATE_##e); \
|
||||||
dw_writer_push_attrib_stringf(writer, DW_AttribKind_Name, n); \
|
dw_writer_push_attrib_stringf(writer, DW_AttribKind_Name, n); \
|
||||||
dw_writer_tag_end(writer);
|
dw_writer_tag_end(writer);
|
||||||
DeclBaseType(char_type, "char", SignedChar, 1);
|
DeclBaseType(char_type, "char", SignedChar, 1);
|
||||||
DeclBaseType(unsigned_char_type, "unsigned char", UnsignedChar, 1);
|
DeclBaseType(unsigned_char_type, "unsigned char", UnsignedChar, 1);
|
||||||
DeclBaseType(char8_type, "char8_t", Utf, 1);
|
DeclBaseType(char8_type, "char8_t", Utf, 1);
|
||||||
DeclBaseType(char16_type, "char16_t", Utf, 2);
|
DeclBaseType(char16_type, "char16_t", Utf, 2);
|
||||||
DeclBaseType(char32_type, "char32_t", Utf, 4);
|
DeclBaseType(char32_type, "char32_t", Utf, 4);
|
||||||
DeclBaseType(wchar_type, "wchar_t", Signed, 4);
|
DeclBaseType(wchar_type, "wchar_t", Signed, 4);
|
||||||
DeclBaseType(bool_type, "_Bool", Boolean, 1);
|
DeclBaseType(bool_type, "_Bool", Boolean, 1);
|
||||||
DeclBaseType(short_type, "short", Signed, 2);
|
DeclBaseType(short_type, "short", Signed, 2);
|
||||||
DeclBaseType(unsigned_short_type, "unsigned short", Unsigned, 2);
|
DeclBaseType(unsigned_short_type, "unsigned short", Unsigned, 2);
|
||||||
DeclBaseType(short_unsigned_int_type, "short unsigned int", Unsigned, 2);
|
DeclBaseType(short_unsigned_int_type, "short unsigned int", Unsigned, 2);
|
||||||
DeclBaseType(short_int_type, "short int", Signed, 2);
|
DeclBaseType(short_int_type, "short int", Signed, 2);
|
||||||
DeclBaseType(unsigned_int_type, "unsigned int", Unsigned, 4);
|
DeclBaseType(unsigned_int_type, "unsigned int", Unsigned, 4);
|
||||||
DeclBaseType(int_type, "int", Signed, 4);
|
DeclBaseType(int_type, "int", Signed, 4);
|
||||||
DeclBaseType(long_int_type, "long int", Signed, 8);
|
DeclBaseType(long_int_type, "long int", Signed, 8);
|
||||||
DeclBaseType(long_unsigned_int_type, "long unsigned int", Unsigned, 8);
|
DeclBaseType(long_unsigned_int_type, "long unsigned int", Unsigned, 8);
|
||||||
DeclBaseType(long_long_int_type, "long long int", Signed, 8);
|
DeclBaseType(long_long_int_type, "long long int", Signed, 8);
|
||||||
DeclBaseType(long_long_unsigned_int, "long long unsigned int", Unsigned, 8);
|
DeclBaseType(long_long_unsigned_int, "long long unsigned int", Unsigned, 8);
|
||||||
DeclBaseType(float_type, "float", Float, 4);
|
DeclBaseType(float_type, "float", Float, 4);
|
||||||
DeclBaseType(double_type, "double", Float, 8);
|
DeclBaseType(double_type, "double", Float, 8);
|
||||||
DeclBaseType(long_double_type, "long double", Float, 16);
|
DeclBaseType(long_double_type, "long double", Float, 16);
|
||||||
DeclBaseType(float16_type, "_Float16", Float, 2);
|
DeclBaseType(float16_type, "_Float16", Float, 2);
|
||||||
DeclBaseType(float80_type, "__float80", Float, 16);
|
DeclBaseType(bfloat16_type, "__bf16", Float, 2);
|
||||||
DeclBaseType(float128_type, "_float128", Float, 16);
|
DeclBaseType(float80_type, "__float80", Float, 16);
|
||||||
DeclBaseType(complex_float, "complex float", ComplexFloat, 8);
|
DeclBaseType(float128_type, "_float128", Float, 16);
|
||||||
DeclBaseType(complex_doulbe, "complex double", ComplexFloat, 16);
|
DeclBaseType(complex_float_type, "complex float", ComplexFloat, 8);
|
||||||
DeclBaseType(complex_long_double, "complex long double", ComplexFloat, 32);
|
DeclBaseType(complex_doulbe_type, "complex double", ComplexFloat, 16);
|
||||||
//DeclBaseType("__bf16", Float, 2);
|
DeclBaseType(complex_long_double_type, "complex long double", ComplexFloat, 32);
|
||||||
|
DeclBaseType(decimal32_type, "_Decimal32", DecimalFloat, 4);
|
||||||
|
DeclBaseType(decimal64_type, "_Decimal64", DecimalFloat, 8);
|
||||||
|
DeclBaseType(decimal128_type, "_Decimal128", DecimalFloat, 16);
|
||||||
#undef DeclBaseType
|
#undef DeclBaseType
|
||||||
|
|
||||||
#define DeclStdint(n, a) \
|
#define DeclStdint(n, a) \
|
||||||
@@ -160,16 +163,18 @@ T_BeginTest(d2r_types)
|
|||||||
TestBuiltinType("double", 8, F64);
|
TestBuiltinType("double", 8, F64);
|
||||||
TestBuiltinType("long double", 16, F128);
|
TestBuiltinType("long double", 16, F128);
|
||||||
TestBuiltinType("_Float16", 2, F16);
|
TestBuiltinType("_Float16", 2, F16);
|
||||||
|
TestBuiltinType("__bf16", 2, BF16);
|
||||||
TestBuiltinType("__float80", 16, F80);
|
TestBuiltinType("__float80", 16, F80);
|
||||||
TestBuiltinType("_float128", 16, F128);
|
TestBuiltinType("_float128", 16, F128);
|
||||||
TestBuiltinType("complex float", 8, ComplexF32);
|
TestBuiltinType("complex float", 8, ComplexF32);
|
||||||
TestBuiltinType("complex double", 16, ComplexF64);
|
TestBuiltinType("complex double", 16, ComplexF64);
|
||||||
TestBuiltinType("complex long double", 32, ComplexF128);
|
TestBuiltinType("complex long double", 32, ComplexF128);
|
||||||
// TODO: bfloat16
|
TestBuiltinType("_Decimal32", 4, Decimal32);
|
||||||
//TestBuiltinType("__bf16", 2, BF16);
|
TestBuiltinType("_Decimal64", 8, Decimal64);
|
||||||
|
TestBuiltinType("_Decimal128", 16, Decimal128);
|
||||||
#undef TestBuiltinType
|
#undef TestBuiltinType
|
||||||
|
|
||||||
#define TestStdint(n, s, t) \
|
#define TestStdint(n, s, t) \
|
||||||
do { \
|
do { \
|
||||||
RDI_TypeNode *td = d2rt_type_from_name(rdi, &types_map, n); \
|
RDI_TypeNode *td = d2rt_type_from_name(rdi, &types_map, n); \
|
||||||
T_Ok(td); \
|
T_Ok(td); \
|
||||||
|
|||||||
Reference in New Issue
Block a user