Do not use alignas on macOS
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
b3d68d9e9f
commit
dfc59c94cc
2 changed files with 17 additions and 5 deletions
|
|
@ -32,6 +32,13 @@
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
|
/** NOTE alignas is required in some systems in order to allow SSE usage. */
|
||||||
|
#ifndef ARCH_MAC
|
||||||
|
#define SIMD_ALIGN alignas(32)
|
||||||
|
#else
|
||||||
|
#define SIMD_ALIGN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
namespace rack {
|
namespace rack {
|
||||||
namespace engine {
|
namespace engine {
|
||||||
|
|
@ -48,7 +55,7 @@ struct Port {
|
||||||
/** Voltage of the port. */
|
/** Voltage of the port. */
|
||||||
/** NOTE alignas is required in order to allow SSE usage.
|
/** NOTE alignas is required in order to allow SSE usage.
|
||||||
Consecutive data (like in a vector) would otherwise pack Ports in a way that breaks SSE. */
|
Consecutive data (like in a vector) would otherwise pack Ports in a way that breaks SSE. */
|
||||||
union alignas(32) {
|
union SIMD_ALIGN {
|
||||||
/** Unstable API. Use getVoltage() and setVoltage() instead. */
|
/** Unstable API. Use getVoltage() and setVoltage() instead. */
|
||||||
float voltages[PORT_MAX_CHANNELS] = {};
|
float voltages[PORT_MAX_CHANNELS] = {};
|
||||||
/** DEPRECATED. Unstable API. Use getVoltage() and setVoltage() instead. */
|
/** DEPRECATED. Unstable API. Use getVoltage() and setVoltage() instead. */
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,13 @@
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <pmmintrin.h>
|
#include <pmmintrin.h>
|
||||||
|
|
||||||
|
/** NOTE alignas is required in some systems in order to allow SSE usage. */
|
||||||
|
#ifndef ARCH_MAC
|
||||||
|
#define SIMD_ALIGN alignas(32)
|
||||||
|
#else
|
||||||
|
#define SIMD_ALIGN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
namespace rack {
|
namespace rack {
|
||||||
|
|
||||||
|
|
@ -62,8 +69,7 @@ struct Vector<float, 4> {
|
||||||
using type = float;
|
using type = float;
|
||||||
constexpr static int size = 4;
|
constexpr static int size = 4;
|
||||||
|
|
||||||
/** NOTE alignas is required in order to allow SSE usage. */
|
union SIMD_ALIGN {
|
||||||
union alignas(32) {
|
|
||||||
__m128 v;
|
__m128 v;
|
||||||
/** Accessing this array of scalars is slow and defeats the purpose of vectorizing.
|
/** Accessing this array of scalars is slow and defeats the purpose of vectorizing.
|
||||||
*/
|
*/
|
||||||
|
|
@ -137,8 +143,7 @@ struct Vector<int32_t, 4> {
|
||||||
using type = int32_t;
|
using type = int32_t;
|
||||||
constexpr static int size = 4;
|
constexpr static int size = 4;
|
||||||
|
|
||||||
/** NOTE alignas is required in order to allow SSE usage. */
|
union SIMD_ALIGN {
|
||||||
union alignas(32) {
|
|
||||||
__m128i v;
|
__m128i v;
|
||||||
int32_t s[4];
|
int32_t s[4];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue