我正在使用 arm neon 代码研究 SIMD 架构。现在的问题是,在我的函数的一次传递中,我使用了 neon 中可用的所有寄存器,因此在编译时出现以下错误。
nw2.c: In function 'bit_24':
nw2.c:123: error: unable to find a register to spill in class 'GENERAL_REGS'
nw2.c:123: error: this is the insn:
(insn 33 32 34 5 c:\cs\codesourcery\sourcery_g++_lite\bin\../lib/gcc/arm-none-ea
bi/4.3.3/include/arm_neon.h:9246 (parallel [
(set (reg:CI 178 [ D.19511 ])
(unspec:CI [
(mem:CI (reg/f:SI 177 [ __a.165 ]) [0 S48 A64])
(reg:CI 178 [ D.19511 ])
(unspec:V16QI [
(const_int 0 [0x0])
] 191)
] 106))
(set (reg/f:SI 177 [ __a.165 ])
(plus:SI (reg/f:SI 177 [ __a.165 ])
(const_int 24 [0x18])))
]) 1593 {neon_vld3qav16qi} (nil))
nw2.c:123: confused by earlier errors, bailing out
现在因为我想最小化寄存器,我想知道如果寄存器最初被声明为 8x16 是否可以使用 16x8。
请帮帮我