#if defined(HAVE_AVX2)
typedef __m256i m256;
#else
-typedef ALIGN_AVX_DIRECTIVE struct {m128 lo; m128 hi;} m256;
+typedef struct ALIGN_AVX_DIRECTIVE {m128 lo; m128 hi;} m256;
#endif
// these should align to 16 and 32 respectively
auto mem_ptr = make_bytecode_ptr<char>(sizeof(a), alignof(TypeParam));
char *mem = mem_ptr.get();
+
ASSERT_EQ(0, (size_t)mem % 16U);
memset(mem, 0, sizeof(a));
}
}
+TEST(SimdUtilsTest, alignment) {
+ ASSERT_EQ(16, alignof(m128));
+ ASSERT_EQ(32, alignof(m256));
+ ASSERT_EQ(16, alignof(m384));
+ ASSERT_EQ(32, alignof(m512));
+}
+
TEST(SimdUtilsTest, movq) {
m128 simd;