如何阻止GCC为ARM NEON内联函数生成非主指令?
ARM NEON内联函数
vcombine_f32的GCC指令生成控制问题 问题背景
我在使用ARM NEON内联函数vcombine_f32时,曾将DUP Vd.1D,Vn.D[0]定义为该函数的主指令(即我预期该内联函数应生成的特定指令):
- GCC 9.4.0版本生成的汇编代码包含
DUP指令,符合预期 - GCC 14.2.0版本生成的汇编代码中没有
DUP指令,与预期不符
我希望找到方法阻止GCC为ARM NEON内联函数生成非预期的主指令,甚至设想过自定义属性的实现方式(仅作示例):
x = __attribute__((do_not_generate_non_primary_instructions_for_intrinsics)) vcombine_f32(a, b); // 预期生成DUP指令
关键修正说明
后续发现实际上不应期望vcombine_f32生成DUP指令,因为《Neon程序员指南》中VCOMBINE的“相关指令”章节明确说明:
该内联函数不会生成指令。
内容的提问来源于stack exchange,提问作者pmor
相关产品推荐
相关产品推荐

