首页 > 其他 > 详细

NEON中的vshr vshl vext中的位移参数必须为编译时字面常量

时间:2020-03-17 15:52:01      阅读:128      评论:0      收藏:0      [点我收藏+]

NEON中的vshr指令中位移数量参数必须为compile time literal constant,因为该参数是被encoded as part pf ARM instruction itself. 同时像vshl; vext指令也是一样。对于某些运行时时的位移参数变化不多的情况,可以考虑使用switch语句来达到目标。
注意,必须是compiile time literal constant,而不是使用个const关键字就可以了。比如下面两种情况:

void func(int arg)
{
    const int value = 2;
    const int value2 = arg & 0x3;
    uint16x8_t q0 = {1,2,3,4,5,6,7,8};
    uint16x8_t q1 = {1,2,3,4,5,6,7,8};
    uint16x8_t veq0 = vextq_u16(q0, q1, value);     //ok
    uint16x8_t veq1 = vextq_u16(q0, q1, value2);    //error: argument to '__builtin_neon_vext_v' must be a constant integer
}   

https://stackoverflow.com/questions/38219436/neon-intrinsic-compile-error-argument-must-be-a-constant-when-using-vshr-n-u3

NEON中的vshr vshl vext中的位移参数必须为编译时字面常量

原文:https://www.cnblogs.com/willhua/p/12510678.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!