Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一组 32 位浮点寄存器,在一些计算之后可能包含 NaN。我想在四寄存器中将任何 NaN 转换为零,理想情况下只使用 SIMD 指令。数据由四元寄存器q0中的四个浮点数组成。我怎样才能做到这一点?
您可以使用 NaN 的属性,即比较 NaN 与自身是否相等返回 false。使用它来生成一个掩码,然后将此掩码与原始浮点向量相加,例如
uint32x4_t vmask = vceqq_f32(va, va); va = (float32x4_t)vandq_u32((uint32x4_t)va, vmask);