打印出__m256i变量的内容

时间:2018-03-07 13:38:50

标签: c++ windows x86 simd avx

我正在尝试打印出__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;
}

1 个答案:

答案 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;
}
相关问题