Skip to content
This repository has been archived by the owner on Apr 8, 2024. It is now read-only.

Commit

Permalink
Enable SIMD for armv7
Browse files Browse the repository at this point in the history
Summary:
@public

This diff makes the gradle build system use SIMD for mozjpeg for armv7 architectures.

**Testplan: files used in build**

```
[user:spectrum]$ ./gradlew clean && ./gradlew prepareNative && ./gradlew assembleDebug

...

> Task :android:spectrumpluginjpeg:generateJsonModelDebug
Variant=debug ABI=armeabi-v7a :-- CMAKE_SYSTEM_PROCESSOR=armv7-a
Variant=debug ABI=armeabi-v7a :-- Building mozjpeg with armv7-a SIMD support
Variant=debug ABI=armeabi-v7a :-- Configuring done
Variant=debug ABI=armeabi-v7a :-- Generating done
Variant=debug ABI=armeabi-v7a :-- Build files have been written to: /Users/hugenroth/fbsource/xplat/spectrum/android/spectrumpluginjpeg/.externalNativeBuild/cmake/debug/armeabi-v7a
Variant=debug ABI=arm64-v8a :-- CMAKE_SYSTEM_PROCESSOR=aarch64
Variant=debug ABI=arm64-v8a :-- Building mozjpeg without SIMD support
Variant=debug ABI=arm64-v8a :-- Configuring done
Variant=debug ABI=arm64-v8a :-- Generating done
Variant=debug ABI=arm64-v8a :-- Build files have been written to: /Users/hugenroth/fbsource/xplat/spectrum/android/spectrumpluginjpeg/.externalNativeBuild/cmake/debug/arm64-v8a
Variant=debug ABI=x86 :-- CMAKE_SYSTEM_PROCESSOR=i686
Variant=debug ABI=x86 :-- Building mozjpeg without SIMD support
Variant=debug ABI=x86 :-- Configuring done
Variant=debug ABI=x86 :-- Generating done
Variant=debug ABI=x86 :-- Build files have been written to: /Users/hugenroth/fbsource/xplat/spectrum/android/spectrumpluginjpeg/.externalNativeBuild/cmake/debug/x86
Variant=debug ABI=x86_64 :-- CMAKE_SYSTEM_PROCESSOR=x86_64
Variant=debug ABI=x86_64 :-- Building mozjpeg without SIMD support
Variant=debug ABI=x86_64 :-- Configuring done
Variant=debug ABI=x86_64 :-- Generating done
Variant=debug ABI=x86_64 :-- Build files have been written to: /Users/hugenroth/fbsource/xplat/spectrum/android/spectrumpluginjpeg/.externalNativeBuild/cmake/debug/x86_64

...

Build spectrumpluginjpeg armeabi-v7a
[1/155] Building C object ../../../../build/mozjpeg/armeabi-v7a/CMakeFiles/mozjpeg.dir/jcapimin.c.o
[2/155] Building C object ../../../../build/mozjpeg/armeabi-v7a/CMakeFiles/mozjpeg.dir/jcapistd.c.o
[3/155] Building C object ../../../../build/mozjpeg/armeabi-v7a/CMakeFiles/mozjpeg.dir/jccoefct.c.o

...

[51/155] Building C object ../../../../build/mozjpeg/armeabi-v7a/CMakeFiles/mozjpeg.dir/jmemnobs.c.o
[52/155] Building C object ../../../../build/mozjpeg/armeabi-v7a/CMakeFiles/mozjpeg.dir/simd/jsimd_arm.c.o
[53/155] Building ASM object ../../../../build/mozjpeg/armeabi-v7a/CMakeFiles/mozjpeg.dir/simd/jsimd_arm_neon.S.o
```

**Testplan: correct result in sample app**

{F148119273}

Reviewed By: passy

Differential Revision: D13609467

fbshipit-source-id: 132ea5342c73d00a5e51a92784a8d8809250b176
  • Loading branch information
Daniel Hugenroth authored and facebook-github-bot committed Jan 9, 2019
1 parent c751b79 commit efe15a0
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions androidLibs/third-party/mozjpeg/override/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
cmake_minimum_required(VERSION 3.6.0)
project(mozjpeg C)

add_library(mozjpeg STATIC
set(can_use_assembler TRUE)
enable_language(ASM)

list(APPEND mozjpegsources
jcapimin.c
jcapistd.c
jccoefct.c
Expand Down Expand Up @@ -53,9 +56,24 @@ add_library(mozjpeg STATIC
jdarith.c
transupp.c
jmemnobs.c
jsimd_none.c
)

if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7-a")
message(STATUS "Building mozjpeg with armv7-a SIMD support")
list(APPEND mozjpegsources
simd/jsimd_arm.c
simd/jsimd_arm_neon.S
)
else()
message(STATUS "Building mozjpeg without SIMD support")
list(APPEND mozjpegsources
jsimd_none.c
)
endif()


add_library(mozjpeg STATIC ${mozjpegsources})

target_compile_options(mozjpeg PRIVATE
-fno-omit-frame-pointer
-fexceptions
Expand Down

0 comments on commit efe15a0

Please sign in to comment.