Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arm Neon:float32x4_t矢量内最多四个浮点值_Arm_Simd_Neon_Cortex A8 - Fatal编程技术网

Arm Neon:float32x4_t矢量内最多四个浮点值

Arm Neon:float32x4_t矢量内最多四个浮点值,arm,simd,neon,cortex-a8,Arm,Simd,Neon,Cortex A8,我想找出一个32x4向量中四个值的最大值 我有一个向量类型为float32x4\u t: float32x4_t maxR = {10.21,10.25,23.5,24.86} //FOR EXAMPLE 我想找出这四个中的最大值(10.21,10.25,23.5,24.86),是否有这样做的说明 我正在考虑使用vpmax\u f32intrinsic,但得出的结论是这是错误的,因为返回类型是float32x2\u t,它又是一种向量类型。那么,有人能告诉我如何进行此操作吗?从向量中提取单个值

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

我有一个向量类型为
float32x4\u t

float32x4_t maxR = {10.21,10.25,23.5,24.86} //FOR EXAMPLE
我想找出这四个中的最大值(10.21,10.25,23.5,24.86),是否有这样做的说明


我正在考虑使用
vpmax\u f32
intrinsic,但得出的结论是这是错误的,因为返回类型是
float32x2\u t
,它又是一种向量类型。那么,有人能告诉我如何进行此操作吗?

从向量中提取单个值的本质是-两个适当的两两最大操作将为您提供一个双字向量,其中包含两个通道中的所需值,您可以从中选择:

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);
}

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

什么是float32x4\t?数组?不,它只是一个浮点向量。这是我代码的一部分。我对所有循环进行计算,最终得到float32x4\u t maxR。我想找出这四个变量中的最大值,因为我只想返回maxR类型的变量。我尝试了maxR=max(maxR\u vect.f0,max(maxR\u vect.f1,max(maxR\u vect.f2,maxR\u vect.f3));很抱歉,我没有得到这个..它是一个向量类型float32x4\u t变量。因此,这个std::max\u元素对此没有用处。我如何访问maxR vectors第一个元素?我尝试了maxR.v[0],这给了我以下错误->错误:请求“maxR”中的成员“v”,属于非类类型“float32x4”的_t@Robinson:我认为您没有抓住问题的关键-这是关于ARM CPU上的Neon SIMD-向量是128位SIMD寄存器。