mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-11-01 21:07:52 +00:00
Merge pull request #1475 from lioncash/align
Common: Get rid of alignment macros
This commit is contained in:
commit
305e63d9ea
2 changed files with 5 additions and 13 deletions
|
@ -18,19 +18,11 @@
|
||||||
#define INSERT_PADDING_BYTES(num_bytes) u8 CONCAT2(pad, __LINE__)[(num_bytes)]
|
#define INSERT_PADDING_BYTES(num_bytes) u8 CONCAT2(pad, __LINE__)[(num_bytes)]
|
||||||
#define INSERT_PADDING_WORDS(num_words) u32 CONCAT2(pad, __LINE__)[(num_words)]
|
#define INSERT_PADDING_WORDS(num_words) u32 CONCAT2(pad, __LINE__)[(num_words)]
|
||||||
|
|
||||||
|
// Inlining
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// Alignment
|
|
||||||
#define FORCE_INLINE __forceinline
|
#define FORCE_INLINE __forceinline
|
||||||
#define MEMORY_ALIGNED16(x) __declspec(align(16)) x
|
|
||||||
#define MEMORY_ALIGNED32(x) __declspec(align(32)) x
|
|
||||||
#define MEMORY_ALIGNED64(x) __declspec(align(64)) x
|
|
||||||
#define MEMORY_ALIGNED128(x) __declspec(align(128)) x
|
|
||||||
#else
|
#else
|
||||||
#define FORCE_INLINE inline __attribute__((always_inline))
|
#define FORCE_INLINE inline __attribute__((always_inline))
|
||||||
#define MEMORY_ALIGNED16(x) __attribute__((aligned(16))) x
|
|
||||||
#define MEMORY_ALIGNED32(x) __attribute__((aligned(32))) x
|
|
||||||
#define MEMORY_ALIGNED64(x) __attribute__((aligned(64))) x
|
|
||||||
#define MEMORY_ALIGNED128(x) __attribute__((aligned(128))) x
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
|
|
|
@ -82,7 +82,7 @@ struct ShaderSetup {
|
||||||
struct {
|
struct {
|
||||||
// The float uniforms are accessed by the shader JIT using SSE instructions, and are
|
// The float uniforms are accessed by the shader JIT using SSE instructions, and are
|
||||||
// therefore required to be 16-byte aligned.
|
// therefore required to be 16-byte aligned.
|
||||||
Math::Vec4<float24> MEMORY_ALIGNED16(f[96]);
|
alignas(16) Math::Vec4<float24> f[96];
|
||||||
|
|
||||||
std::array<bool, 16> b;
|
std::array<bool, 16> b;
|
||||||
std::array<Math::Vec4<u8>, 4> i;
|
std::array<Math::Vec4<u8>, 4> i;
|
||||||
|
@ -276,9 +276,9 @@ struct UnitState {
|
||||||
struct Registers {
|
struct Registers {
|
||||||
// The registers are accessed by the shader JIT using SSE instructions, and are therefore
|
// The registers are accessed by the shader JIT using SSE instructions, and are therefore
|
||||||
// required to be 16-byte aligned.
|
// required to be 16-byte aligned.
|
||||||
Math::Vec4<float24> MEMORY_ALIGNED16(input[16]);
|
alignas(16) Math::Vec4<float24> input[16];
|
||||||
Math::Vec4<float24> MEMORY_ALIGNED16(output[16]);
|
alignas(16) Math::Vec4<float24> output[16];
|
||||||
Math::Vec4<float24> MEMORY_ALIGNED16(temporary[16]);
|
alignas(16) Math::Vec4<float24> temporary[16];
|
||||||
} registers;
|
} registers;
|
||||||
static_assert(std::is_pod<Registers>::value, "Structure is not POD");
|
static_assert(std::is_pod<Registers>::value, "Structure is not POD");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue