[Base] Drop inline on string_util/vec128 implementations for now because clang is whining.
This commit is contained in:
parent
7d6d732999
commit
306f358c07
|
@ -21,37 +21,19 @@
|
||||||
namespace xe {
|
namespace xe {
|
||||||
namespace string_util {
|
namespace string_util {
|
||||||
|
|
||||||
inline std::string to_hex_string(uint32_t value) {
|
std::string to_hex_string(uint32_t value) {
|
||||||
char buffer[21];
|
char buffer[21];
|
||||||
std::snprintf(buffer, sizeof(buffer), "%08" PRIX32, value);
|
std::snprintf(buffer, sizeof(buffer), "%08" PRIX32, value);
|
||||||
return std::string(buffer);
|
return std::string(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::string to_hex_string(uint64_t value) {
|
std::string to_hex_string(uint64_t value) {
|
||||||
char buffer[21];
|
char buffer[21];
|
||||||
std::snprintf(buffer, sizeof(buffer), "%016" PRIX64, value);
|
std::snprintf(buffer, sizeof(buffer), "%016" PRIX64, value);
|
||||||
return std::string(buffer);
|
return std::string(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::string to_hex_string(float value) {
|
std::string to_hex_string(const vec128_t& value) {
|
||||||
union {
|
|
||||||
uint32_t ui;
|
|
||||||
float flt;
|
|
||||||
} v;
|
|
||||||
v.flt = value;
|
|
||||||
return to_hex_string(v.ui);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline std::string to_hex_string(double value) {
|
|
||||||
union {
|
|
||||||
uint64_t ui;
|
|
||||||
double dbl;
|
|
||||||
} v;
|
|
||||||
v.dbl = value;
|
|
||||||
return to_hex_string(v.ui);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline std::string to_hex_string(const vec128_t& value) {
|
|
||||||
char buffer[128];
|
char buffer[128];
|
||||||
std::snprintf(buffer, sizeof(buffer), "[%.8X, %.8X, %.8X, %.8X]",
|
std::snprintf(buffer, sizeof(buffer), "[%.8X, %.8X, %.8X, %.8X]",
|
||||||
value.u32[0], value.u32[1], value.u32[2], value.u32[3]);
|
value.u32[0], value.u32[1], value.u32[2], value.u32[3]);
|
||||||
|
@ -61,7 +43,7 @@ inline std::string to_hex_string(const vec128_t& value) {
|
||||||
#if XE_ARCH_AMD64
|
#if XE_ARCH_AMD64
|
||||||
|
|
||||||
// TODO(DrChat): This should not exist. Force the caller to use vec128.
|
// TODO(DrChat): This should not exist. Force the caller to use vec128.
|
||||||
inline std::string to_hex_string(const __m128& value) {
|
std::string to_hex_string(const __m128& value) {
|
||||||
char buffer[128];
|
char buffer[128];
|
||||||
float f[4];
|
float f[4];
|
||||||
_mm_storeu_ps(f, value);
|
_mm_storeu_ps(f, value);
|
||||||
|
@ -72,7 +54,7 @@ inline std::string to_hex_string(const __m128& value) {
|
||||||
return std::string(buffer);
|
return std::string(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::string to_string(const __m128& value) {
|
std::string to_string(const __m128& value) {
|
||||||
char buffer[128];
|
char buffer[128];
|
||||||
float f[4];
|
float f[4];
|
||||||
_mm_storeu_ps(f, value);
|
_mm_storeu_ps(f, value);
|
||||||
|
|
|
@ -22,17 +22,37 @@
|
||||||
namespace xe {
|
namespace xe {
|
||||||
namespace string_util {
|
namespace string_util {
|
||||||
|
|
||||||
extern inline std::string to_hex_string(uint32_t value);
|
// TODO(gibbed): Figure out why clang doesn't line forward declarations of
|
||||||
extern inline std::string to_hex_string(uint64_t value);
|
// inline functions.
|
||||||
extern inline std::string to_hex_string(float value);
|
|
||||||
extern inline std::string to_hex_string(double value);
|
std::string to_hex_string(uint32_t value);
|
||||||
extern inline std::string to_hex_string(const vec128_t& value);
|
std::string to_hex_string(uint64_t value);
|
||||||
|
|
||||||
|
inline std::string to_hex_string(float value) {
|
||||||
|
union {
|
||||||
|
uint32_t ui;
|
||||||
|
float flt;
|
||||||
|
} v;
|
||||||
|
v.flt = value;
|
||||||
|
return to_hex_string(v.ui);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::string to_hex_string(double value) {
|
||||||
|
union {
|
||||||
|
uint64_t ui;
|
||||||
|
double dbl;
|
||||||
|
} v;
|
||||||
|
v.dbl = value;
|
||||||
|
return to_hex_string(v.ui);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string to_hex_string(const vec128_t& value);
|
||||||
|
|
||||||
#if XE_ARCH_AMD64
|
#if XE_ARCH_AMD64
|
||||||
|
|
||||||
// TODO(DrChat): This should not exist. Force the caller to use vec128.
|
// TODO(DrChat): This should not exist. Force the caller to use vec128.
|
||||||
extern inline std::string to_hex_string(const __m128& value);
|
std::string to_hex_string(const __m128& value);
|
||||||
extern inline std::string to_string(const __m128& value);
|
std::string to_string(const __m128& value);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
namespace xe {
|
namespace xe {
|
||||||
|
|
||||||
inline std::string to_string(const vec128_t& value) {
|
std::string to_string(const vec128_t& value) {
|
||||||
char buffer[128];
|
char buffer[128];
|
||||||
std::snprintf(buffer, sizeof(buffer), "(%g, %g, %g, %g)", value.x, value.y,
|
std::snprintf(buffer, sizeof(buffer), "(%g, %g, %g, %g)", value.x, value.y,
|
||||||
value.z, value.w);
|
value.z, value.w);
|
||||||
|
|
|
@ -264,7 +264,10 @@ static inline vec128_t vec128b(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3,
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline std::string to_string(const vec128_t& value);
|
// TODO(gibbed): Figure out why clang doesn't line forward declarations of
|
||||||
|
// inline functions.
|
||||||
|
|
||||||
|
std::string to_string(const vec128_t& value);
|
||||||
|
|
||||||
} // namespace xe
|
} // namespace xe
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue