significa señal rango que proyector pantalla juegos fuera frecuencia entrada c compiler-errors android-ndk arm neon

c - que - señal fuera de rango windows 7



Constante fuera de rango con intrínsecos de NEON (1)

El problema está en esta línea

b = vext_u64 (a, a, 3);

No puede tener 3 como turno para vext_u64 , no está permitido .

uint64x1_t vext_u64(uint64x1_t a, uint64x1_t b, __constrange(0,0) int c); // VEXT.64 d0,d0,d0,#0

Parece que la implementación de gcc (¿definición?) De intrínsecos de neón no es tan buena como la de armcc en este aspecto.

Un truco para entender dicho comportamiento es pasar -S a gcc para convertir el código al ensamblado y luego intentar compilar ese archivo de ensamblaje. De esa forma, gcc te dirá exactamente qué línea está dando el problema.

$ ~/bin/android-ndk-r8d/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=/home/auselen/bin/android-ndk-r8d/platforms/android-14/arch-arm -std=c99 -S neon.c -mfloat-abi=softfp -mfpu=neon -O2 neon.c: In function ''foo'': neon.c:11:1: error: constant out of range $ ~/bin/android-ndk-r8d/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=/home/auselen/bin/android-ndk-r8d/platforms/android-14/arch-arm -std=c99 -c neon.s -mfloat-abi=softfp -mfpu=neon -O2 neon.s: Assembler messages: neon.s:28: Error: shift out of range -- `vext.64 d16,d16,d16,#3''

Estoy compilando el siguiente código de prueba intrínseca ARM NEON (en Eclipse con Android NDK):

void foo(uint64_t* Res) { uint64_t x = 0xff12aa8902acf78dULL; uint64x1_t a,b; a = vld1_u64 (&x); b = vext_u64 (a, a, 3); vst1_u64 (Res,b); }

pero sigo recibiendo el siguiente error de compilación:

/home/developer/adt/ndk/ndk-build all Install : libneon_test.so => libs/armeabi/libneon_test.so Compile thumb : neon_test <= neon.c jni/neon.c: In function ''foo'': jni/neon.c:17:1: error: constant out of range make: *** [obj/local/armeabi-v7a/objs/neon_test/neon.o] Error 1`

La línea 17 es la última } llave de foo() .

¿Alguien tiene una idea de cuál podría ser la causa de este extraño error?