libjpeg-turbo для Android: как организовать выбор времени выполнения кода NEON / не-NEON?

Я использую порт libjpeg-turbo для Android. Он не сильно отличается от базового jpeg-turbo с точки зрения исходного кода: http://git.linaro.org/gitweb?p=people/tomgall/libjpeg-turbo/libjpeg-turbo.git;a=shortlog;h=refs/heads/android

Существует модуль (статическая библиотека), состоящий из 2 файлов, зависящих от функций процессора: jsimd_arm_neon.S и jsimd_arm.c. Я хочу скомпилировать jpeg-turbo с поддержкой NEON, я должен определить __ARM_HAVE_NEON и скомпилируйте этот модуль с -march=armv7-a -mfpu=neon, Я хочу, чтобы библиотека работала на старом оборудовании без поддержки Neon (например, Tegra 2), я должен удалить флаг компилятора neon и undef __ARM_HAVE_NEON,

Мой вопрос: как его скомпилировать, чтобы неоновый или неоновый путь можно было выбирать во время выполнения без SIGILL на неоновом оборудовании? Я знаю, как проверять NEON во время выполнения, но я не знаю, как изменить libjpeg-turbo и организовать библиотеки.

1 ответ

Решение

Старый вопрос, но я все равно добавлю его на всякий случай. Кто-то действительно вдавался в подробности, и одной из проблем был динамический выбор NEON. Это объясняется здесь: /questions/44563595/libjpeg-turbo-dlya-android/44563641#44563641.

Соответствующий раздел - пункт 4, чтобы изменить некоторые строки в методе init_simd().

Другие вопросы по тегам