代码之家  ›  专栏  ›  技术社区  ›  HaggarTheHorrible

如何使用neon比较(大于或等于)指令?

  •  4
  • HaggarTheHorrible  · 技术社区  · 15 年前

    一般来说,如何使用霓虹灯比较说明?

    这里有一个例子,我想用,大于或等于指令?

    目前我有一个,

    int x;
    ...
    ...
    ...
    if(x >= 0)
    {
    ....
    
    }
    

    在霓虹灯中,我想用同样的方法使用x,只是这次x是一个向量。

    int32x4_t x;
    
    ...
    ...
    ...
    
    if(vcgeq_s32(x, vdupq_n_s32(0))) // Whats the best way to achieve this effect?
    {
    ....
    
    }
    
    1 回复  |  直到 15 年前
        1
  •  3
  •   Paul R    15 年前

    使用simd,从单个标量if/then转到多个元素的测试是不容易的。通常你想测试 任何 元素大于或if 全部的 元素大于,并且对于每个情况,通常会有不同的simd谓词,您可以将其放入 if (...) . 不过在霓虹灯里我看不到这样的东西,所以你可能走运了。

    通常,尽管您希望采用不同的方法,因为优化代码中通常不需要分支。理想情况下,您希望将SIMD比较的结果用作后续操作的掩码(例如,使用按位操作根据掩码选择不同的值)。