【发布时间】:2016-09-09 13:58:55
【问题描述】:
我是 AVX 编程的新手。我想加载具有 16 个短整数或 16 位值的 __m256 向量,但我无法这样做。
这是我的尝试。它给出了以下错误:
使用“int”类型初始化“__m256”类型时不兼容的类型 __m256 结果 = _mm256_load_epi16((__m256*)&int_array);
#include <stdio.h>
#include <stdint.h>
#include <immintrin.h>
int main() {
int i;
short int int_array[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
__m256 result = _mm256_load_epi16((__m256*)&int_array);
short int* res = (short int*)&result;
printf("%d %d %d %d %d %d %d %d\n", res[0], res[1], res[2], res[3], res[4], res[5], res[6], res[7]);
return 0;
}
【问题讨论】:
-
尝试用
char int_array[16]替换short int int_array[16],用_mm256_load_epi16((__m256*)int_array);替换_mm256_load_epi16((__m256*)&int_array); -
我做了更改,虽然我想加载 16 位整数而不是 8 位字符,但得到了同样的错误。