我想用霓虹灯指令SIMD和臂组件计算4点的幅度和角度.在大多数语言中都有一个内置库,在我的例子中是C++,它计算角度(atan2),但只计算一对浮点变量(x和y).我想利用处理q寄存器的SIMD指令来计算atan2的4个值的向量.
要求精度不高,速度更重要.
我已经有一些汇编指令来计算4个浮点寄存器的幅度,我的应用程序的准确度可以接受.q1包含4"x"值(x1,x2,x3,x4).q2包含4个"y"值(y1,y2,y3,y4).q7包含4个结果的大小(x1 ^ 2 + y1 ^ 2,x2 ^ 2 + y2 ^ 2,x3 ^ 2 + y3 ^ 2,x4 ^ 2 + y4 ^ 2).
vmul.f32 q7, q1, q1
vmla.f32 q7, q2, q2
vrecpe.f32 q7, q7
vrsqrte.f32 q7, q7
Run Code Online (Sandbox Code Playgroud)
使用SIMD指令计算两个向量的近似atan2的最快方法是什么?