Z wiatru można załadować jeden pływak z pamięci wszystkich 4 szczelinach __m128 z wewnętrzną _mm_load1_ps()AVX 256-bitowy odpowiednikiem _mm_load1_ps
podczas korzystania z 256 bitową SIMD z AVX, wydaje się, że no _mm256_load1_ps(), aby załadować pojedynczy float z pamięci do wszystkich 8 gniazd wektora.
Dlaczego to pominięcie i jaki jest najlepszy sposób obejścia tego?
Albo jeszcze lepiej: czy istnieje sposób na załadowanie pojedynczego elementu pływającego do docelowej szczeliny 0..7 wektora?
AVX i AVX2 nadal pozwalają tylko wstawiać elementy do niskiego 128 ('PINSRD' /' INSERTPS': numer elementu = stała czasu kompilacji). Wykonanie tej czynności bez zerowania górnego poziomu 128 jest możliwe tylko przy kodowaniu innym niż VEX, co powoduje znaczne spowolnienie wstępnego skylake Intela przed miksowaniem instrukcji VEX i innych niż VEX. Można wyodrębnićf128, insertps, insertf128. –
'_mm_load1_ps' jest kompozytowym wewnętrznym dla' movss' + shuffle do emisji float. Jeśli już chciałeś pozwolić kompilatorowi robić to, co chciałbyś uzyskać w rejestrze, '_mm256_set1_ps (* f)' jest dobrym wyborem. Inteligentne kompilatory będą emitować 'VBROADCASTSS' w stosownych przypadkach. –