我有一个结构定义为:
struct HorStruct {
uint64_t v[2][4];
typedef uint64_t value_type;
typedef uint64_t* iterator;
typedef const uint64_t* const_iterator;
typedef value_type& reference;
typedef const value_type& const_reference;
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef uint64_t* pointer;
typedef const uint64_t* const_pointer;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;};
我想知道如何在AVX2上将第一行加载到_m256i变量中?
答案 0 :(得分:4)
使用_mm256_load_si256
内在函数。引用Intel Intrinsics Guide:
__ m256i _mm256_load_si256(__ m256i const * mem_addr)
#include "immintrin.h"
[...] 描述将256位整数数据从内存加载到dst中。 mem_addr必须在32字节边界或一般保护上对齐 可能会产生异常。
如果对齐要求有问题,您可以使用未对齐版本_mm256_loadu_si256
。但请注意,对齐的载荷可能要快得多。