在GCC中是否可以使用结构或类作为SSE指令的向量类型?
类似的东西:
typedef struct vfloat __attribute__((vector_size(16))) {
float x,y,z,w;
} vfloat;
而不是规范:
typedef float v4sf __attribute__ ((vector_size(16)));
union vfloat {
v4sf v;
float f[4];
};
会非常方便,但我似乎无法使其发挥作用。
答案 0 :(得分:2)
您可以使用union
而不是struct
作为第二个成员制作float f[4];
,就像您发布的那个一样吗?这会给你你想要的行为。
答案 1 :(得分:0)
您正在寻找的结构是
typedef float v4sf __attribute__ ((vector_size(16)));
typedef struct vfloat vfloat;
struct vfloat {
union {
v4sf v;
float f[4];
struct {
float x;
float y;
float z;
float w;
};
};
};
但是,别名规则可能会在以后引起您的注意。我建议使用访问者宏或static inline
函数。