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