我正在尝试打印出__m256i
变量的值,但是我遇到了运行时错误(file.exe已停止工作!)。我的CPU是Intel,支持AVX指令。当我评论cout行时,代码运行。我正在使用英特尔C ++编译器。问题是什么?有没有其他方法来显示__m256i
变量的内容。我的代码如下:
#include <iostream>
#include <iomanip>
#include "immintrin.h"
using namespace std;
int main()
{
__m256i a;
int i;
a = _mm256_set_epi64x(1, 2, 3, 4);
cout << setfill('0'); // fill with 0s
for (i = 0; i < 4; i++) {
cout << hex << setw(16) << _mm256_extract_epi64(a, i);
}
cout << endl;
cin.get();
return 0;
}
答案 0 :(得分:0)
您可以尝试使用下一个函数来打印__m256i vector的内容:
#include <immintrin.h>
#include <iostream>
#include <iomanip>
template<class T> inline void Log(const __m256i & value)
{
const size_t n = sizeof(__m256i) / sizeof(T);
T buffer[n];
_mm256_storeu_si256((__m256i*)buffer, value);
for (int i = 0; i < n; i++)
std::cout << buffer[i] << " ";
}
int main()
{
__m256i a = _mm256_set_epi64x(1, 2, 3, 4);
Log<long long>(a);
return 0;
}