Do not use alignas on macOS

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2022-05-26 14:00:20 +01:00
parent b3d68d9e9f
commit dfc59c94cc
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0
2 changed files with 17 additions and 5 deletions

View file

@ -32,6 +32,13 @@
#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 engine {
@ -48,7 +55,7 @@ struct Port {
/** Voltage of the port. */
/** 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. */
union alignas(32) {
union SIMD_ALIGN {
/** Unstable API. Use getVoltage() and setVoltage() instead. */
float voltages[PORT_MAX_CHANNELS] = {};
/** DEPRECATED. Unstable API. Use getVoltage() and setVoltage() instead. */

View file

@ -30,6 +30,13 @@
#include <cstring>
#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 {
@ -62,8 +69,7 @@ struct Vector<float, 4> {
using type = float;
constexpr static int size = 4;
/** NOTE alignas is required in order to allow SSE usage. */
union alignas(32) {
union SIMD_ALIGN {
__m128 v;
/** 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;
constexpr static int size = 4;
/** NOTE alignas is required in order to allow SSE usage. */
union alignas(32) {
union SIMD_ALIGN {
__m128i v;
int32_t s[4];
};