Im compilazione del codice intrinseche NEON di prova seguente ARM (in Eclipse con Android NDK):costante fuori campo con intrinseche NEON
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);
}
ma continuo a ricevere il seguente errore del compilatore:
/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 riga 17 è l'ultima coppia }
di foo()
.
Qualcuno ha un'idea di quale potrebbe essere la causa di questo strano errore?
di che costante si parla? La riga 17 del codice che hai pubblicato è la parentesi graffa}. È il valore 3? – ThePosey
Questo è il problema, non lo so neanche io. Il compilatore punta sempre questo errore all'ultimo parentesi che non ha senso. Penso che questo potrebbe essere un bug di GCC con NEON quindi sto cercando qualche soluzione alternativa forse. – NumberFour
Penso che la risposta cancellata di ThePosey sia sulla strada giusta. Cosa ti aspetti di fare 'vext_u64 (a, a, 3)'? –