请告诉我,我自己也搞不懂:
这里我有__m128i
SIMD 向量 - 每个 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 - 所以我知道的不多。我不明白。
如果这个问题看起来太“幼稚”,我提前道歉,但问题是:
这是一个简单的代码:
#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 结构仍然未定义。为什么指向不存在的结构的指针会起作用?