我想从表中加载一些值并将它们设置为一个向量: 在第一种情况下,将向量的四个值设置为一个:
float32x4_t dest = vdupq_n_f32(a);
Run Code Online (Sandbox Code Playgroud)
当我阅读内在手册时,这一点非常明显。
在第二种情况下,将向量的四个值设置为表中的不同值。这有点棘手,因为没有相关说明,因此我执行了以下操作:
float32x4_t dest = {a3,a2,a1,a0};
Run Code Online (Sandbox Code Playgroud)
它不是内在的,但是基于网络上的其他出版物和论坛,它是我唯一的解决方案。可悲的是,我收到此错误:
error: expected expression before ‘{’ token
Run Code Online (Sandbox Code Playgroud)
任何人都可以为此提供帮助或有其他选择吗?
如果您的编译器不支持这样的直接初始化(即您使用的不是 gcc 或 clang),那么您需要显式加载值,例如
const float init[4] = {a3,a2,a1,a0};
float32x4_t dest = vld1q_f32(init);
Run Code Online (Sandbox Code Playgroud)
请注意,您的第一个示例似乎是错误的 - 如果您尝试将所有 4 个向量元素设置为相同的值(如 SSE 的_mm_set1_ps),那么您将需要使用类似vdupq_n_f32.
| 归档时间: |
|
| 查看次数: |
2197 次 |
| 最近记录: |