私は Linux で Core i7 に取り組んでおり、g++ 4.63 を使用しています。
次のコードを試しました:
#include <iostream>
#include <immintrin.h>
int main() {
__m256d a = _mm256_set_pd(1,2,3,4);
__m256d z = _mm256_setzero_pd();
std::cout << _mm256_testz_pd(a,a) << std::endl;
std::cout << _mm256_testz_pd(z,z) << std::endl;
std::cout << _mm256_testz_pd(a,z) << std::endl;
}
3 つの 1 が出力されました。そのうちの少なくとも 1 つが 0 になると予想していました。
を使用してみ_mm256_castpd_si256
まし_mm256_testz_si256
たが、最初の行に 0 が出力されます。
なんで?