c - 程序集内在执行屏蔽加载

标签 c assembly sse simd intrinsics

int main()
{
    const int STRIDE=2,SIZE=8192;
    int i=0;
    double u[SIZE][STRIDE]; 
    #pragma vector aligned
    for(i=0;i<SIZE;i++)
    {
        u[i][STRIDE-1]= i;
    }
    printf("%lf\n",u[7][STRIDE-1]);
    return 0;
}

编译器在这里使用 xmm 寄存器。有跨步 2 访问,我想让编译器忽略这一点并定期加载内存,然后屏蔽交替位,这样我将使用 50% 的 SIMD 寄存器。我需要可用于加载的内在函数,然后在存储回内存之前按位屏蔽寄存器

P.S:我以前从未做过汇编编码

最佳答案

掩码存储,掩码值为0xAA (10101010)

关于c - 程序集内在执行屏蔽加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13204737/

相关文章:

c++ - 在 For 循环内切换 - 在 Release 模式下得到奇怪的结果

c - C 移位表达式是否具有无符号类型?为什么 Splint 会警告右移?

c++ - 在函数尾声混淆之前堆栈必须是干净的

x86 - 上证所指令 : Byte+Short

c++ - 使用可变范围时,循环未矢量化

c++ - 将 8 个字符从内存加载到 __m256 变量中作为打包的单精度 float

c - 如何解释 C11 标准的第 6.3.2.3 部分第 7 部分?

c++ - Bresenham 用于球体?

linux - 如何测试STDIN读取错误

c++ - 类转储创建的奇怪 CDStructures.h