Arm 屏蔽装载/存储

Arm 屏蔽装载/存储,arm,simd,intrinsics,neon,Arm,Simd,Intrinsics,Neon,我正在使用neon intrinsics编写一个函数来优化一些矩阵运算,并且我需要处理特殊情况(例如到达数组末尾时的大小不是寄存器大小的倍数) 如果neon中有SIMD指令,我更愿意这样做(比如AVX中的掩码) 有什么方法可以使用Neon intrinsics进行屏蔽加载/存储吗?是一篇关于这个问题的博客文章,但它没有直接解决您的屏蔽加载要求。NEON有单车道加载和存储,您可以有条件地为每个车道执行这些加载和存储,但如果您只关心将n连续值加载到向量中,您可以通过使用混合车道大小进行日志操作,如所

我正在使用neon intrinsics编写一个函数来优化一些矩阵运算,并且我需要处理特殊情况(例如到达数组末尾时的大小不是寄存器大小的倍数)

如果neon中有SIMD指令,我更愿意这样做(比如AVX中的掩码)


有什么方法可以使用Neon intrinsics进行屏蔽加载/存储吗?

是一篇关于这个问题的博客文章,但它没有直接解决您的屏蔽加载要求。NEON有单车道加载和存储,您可以有条件地为每个车道执行这些加载和存储,但如果您只关心将
n
连续值加载到向量中,您可以通过使用混合车道大小进行日志操作,如所示。我将试着找时间编写适当的内容,但我不能保证今年会这样做。需要注意的一点是分支预测。如果您经常更改同一代码块的掩码,这可能会变得非常缓慢,但在处理图像等矩形数据时,经常会多次使用相同的尾部。这是一篇关于此问题的博客文章,但它没有直接解决您的掩码加载要求。NEON有单车道加载和存储,您可以有条件地为每个车道执行这些加载和存储,但如果您只关心将
n
连续值加载到向量中,您可以通过使用混合车道大小进行日志操作,如所示。我将试着找时间编写适当的内容,但我不能保证今年会这样做。需要注意的一点是分支预测。如果您经常更改同一代码块的掩码,这可能会变得非常缓慢,但在处理矩形数据(如图像)时,通常会多次使用相同的尾部。