gpt4 book ai didi

arm - NEON :float32x4_t 向量中最多四个浮点值

转载 作者:行者123 更新时间:2023-12-04 12:52:11 29 4
gpt4 key购买 nike

我想找出一个 32x4 向量中四个值中的最大值。

我有一个 float32x4_t 类型的向量:

float32x4_t maxR = {10.21,10.25,23.5,24.86} //FOR EXAMPLE

我想在这四个中找出最大的(10.21,10.25,23.5,24.86),有没有这样的说明?

我正在考虑使用 vpmax_f32 内在函数,但得出的结论是这是错误的,因为返回类型是 float32x2_t,这又是一个向量类型。那么,谁能告诉我这个操作的方法?

最佳答案

从向量中提取单个值的内在函数是 vget_lane_<type> - 两个适当的成对最大操作将为您留下一个双字向量,其中包含两个 channel 中的所需值,您可以从中挑选出来:

float horz_max(float32x4_t f) {
float32x2_t tmp;

tmp = vpmax_f32(vget_low_f32(f), vget_high_f32(f));
tmp = vpmax_f32(tmp, tmp);
return vget_lane_f32(tmp, 0);
}

或者,如果您实际上现在不需要寄存器中的值,并且无论如何都打算将它写回内存变量,那么使用它可能更有效 vst1_lane_f32 使用适当的指针直接存储它。

关于arm - NEON :float32x4_t 向量中最多四个浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29345306/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com