int main(){
__asm volatile
{
// load data
vld1.16 {q0, q1}, [r0]!
를 컴파일 정의되지 않은`불평 그것은 오류가의 armcc 명령을 사용하여</p> <p>... q0`는 네온 어셈블리
"test.c", line 7: Error: #20: identifier "q0" is undefined
vld1.16 {q0, q1}, [r0]!
^
"test.c", line 8: Error: #20: identifier "q2" is undefined
vld1.16 {q2, q3}, [r0]!
^
내가 하나를 놓친 건가 것을 알 수있다
armcc --cpu=Cortex-A9 -O2 -Otime --vectorize --remarks -g --md --depend_format=unix_escaped --no_depend_system_headers -c -o test.o test.c
armcc
명령의 플래그?
armcc
버전은 내가 armcc에서 사용하지 않지만, 당신의 컴파일러는 NEON에 대한 인라인 어셈블리를 지원 믿지 않는
Product: ARM Compiler 5.05
Component: ARM Compiler 5.05 (build 41)
Tool: armcc [4d0eb9]
For support see http://www.arm.com/support/
Software supplied by: ARM Limited
컴파일러가 요즘과 잘 작동하기 때문에 수동 벡터화를위한 내장 함수가 일반적으로 인라인 asm보다 더 나은 선택입니다. (적어도 gcc와 clang은 armcc에 대해서는 모른다.) 컴파일러가 상수를 전파하지 못하게함으로써 실제로 느린 코드로 이어질 수 있다는 것을 포함하여 https://gcc.gnu.org/wiki/DontUseInlineAsm을 참조하십시오. 다른 최적화. –