小编Opt*_*us1的帖子

如何在一个 SIMD 向量中创建一个由 0 索引组成的左填充向量?

请告诉我,我自己也搞不懂:

这里我有__m128iSIMD 向量 - 每个 16 个字节都包含以下值:

1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1

是否可以以某种方式变换该向量,以便删除所有 1,并且零的位置是该零向量中元素的编号。也就是说,像这样:

0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
                                                            
1   0   1   1   0   1   0   1   1   1   0   1   0   1   0   1
                                                            
    1           4       6               10      12     14   
Run Code Online (Sandbox Code Playgroud)

最后得到一个只有这些值的向量:

1  4  6  10  12  14
Run Code Online (Sandbox Code Playgroud)

什么样的逻辑才能得到这样的结果呢?应使用哪些 SIMD 指令?

PS:我刚刚开始学习SIMD - 所以我知道的不多。我不明白。

c c++ simd avx2

5
推荐指数
1
解决办法
736
查看次数

对结构的误解?++

如果这个问题看起来太“幼稚”,我提前道歉,但问题是:

这是一个简单的代码:

#include <iostream>

struct my_struct
{
    struct fictitious_name fn_struct;
};



int main()
{
  
}
Run Code Online (Sandbox Code Playgroud)

由于未定义 fictitious_name 结构,因此未编译它。

但如果我这样重写它:

#include <iostream>

struct my_struct
{
    struct fictitious_name* fn_struct;
};



int main()
{
  
}
Run Code Online (Sandbox Code Playgroud)

然后一切都很好,代码已编译,但 fictitious_name 结构仍然未定义。为什么指向不存在的结构的指针会起作用?

c++ pointers sizeof incomplete-type

3
推荐指数
1
解决办法
114
查看次数

标签 统计

c++ ×2

avx2 ×1

c ×1

incomplete-type ×1

pointers ×1

simd ×1

sizeof ×1