Im kompilacji dodaje ARM kodu testowego intrinsics NEON (w Eclipse z Android NDK):Stała poza zasięgiem z intrinsics 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);
}
ale wciąż otrzymuję następujący błąd kompilatora:
/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`
Linia 17 jest ostatnim }
klamrą z foo()
.
Czy ktoś ma pomysł, co może być przyczyną tego dziwnego błędu?
o jakiej stałej rzeczy chodzi? Wiersz 17 kodu, który wysłałeś, to} nawias klamrowy. Czy to jest wartość 3? – ThePosey
To problem, ja też nie wiem. Kompilator zawsze wskazuje ten błąd na ostatni} nawias klamrowy, który nie ma sensu. Myślę, że to może być bug GCC z NEONem, więc szukam jakiegoś obejścia. – NumberFour
Myślę, że usunięta odpowiedź ThePosey jest na dobrej drodze. Czego oczekujesz "vext_u64 (a, a, 3)"? –