1
我有8个矢量的32字节对齐的结构在它:什么时候将__m256转换为正确而不是加载?
struct ALIGN(32) Ray8
{
float x[8];
float y[8];
float z[8];
};
当使用AVX2,我想在一致这些部件进行操作。我什么时候需要使用_mm256_load_ps()明确加载它们而不是投射它们?例如,使用以下签名:
void GenerateRayDirections(__m256 * x, _m256 * y, _m256 * z) { ... }
援引为
void GenerateRayDirections((__m256*)ray.x, (__m256*)ray.y, (__m256*)ray.z);
我使用英特尔的恩布里库,他们有一个vfloat8类内部存储的表示形式_m256和是float8的工会,所以根本没有铸造 - 但似乎也没有负载电话。如果我改为嵌入vfloat8类:
void GenerateRayDirections(&ray.x.v, &ray.y.v, &ray.z.v);
我正在寻找一些关于何时加载或投射的指导?
当你想让它们在一个向量中时加载到向量上,并在你想要投射概念时施放它们,你确定要加载吗?你的汇编代码证明了它吗? – Martin