1

我有一个结构定义为:

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 变量中?

4

1 回答 1

4

使用_mm256_load_si256内在。引用英特尔内部指南

__m256i _mm256_load_si256 (__m256i const * mem_addr)

#include "immintrin.h"

[...] 描述将 256 位整数数据从内存加载到 dst。mem_addr 必须在 32 字节边界上对齐,否则可能会生成一般保护异常。

如果对齐要求有问题,您可以使用未对齐版本_mm256_loadu_si256。但是请注意,对齐的负载可能会明显更快。

于 2015-07-02T15:36:30.567 回答