-
Notifications
You must be signed in to change notification settings - Fork 25
ASM Support
Taner Sener edited this page Jul 15, 2026
·
2 revisions
Build scripts try to enable available CPU optimizations. The table below records ASM/SIMD status where scripts explicitly set ASM, SIMD, hardware-acceleration, NEON, SSE, or related options.
| Library | Android | iOS / iPadOS | macOS | tvOS | visionOS | Linux |
|---|---|---|---|---|---|---|
dav1d |
all: No | all: No | all: No | all: No | all: No |
x86-64: Yes |
ffmpeg |
all except x86: Yes; x86: No1
|
all except x86-64, x86-64-mac-catalyst: Yes; x86-64, x86-64-mac-catalyst: No |
arm64: Yes; x86-64: No |
arm64, arm64-simulator: Yes; x86-64: No |
all: Yes |
x86-64: Yes |
gmp |
all: No | all: No | all: No | all: No | all: No |
linux-gmp: Dep |
gnutls |
all except x86: Yes; x86: No |
all: Yes | all: Yes | all: Yes | all: Yes |
linux-gnutls: Dep |
kvazaar |
Not specified | all except x86-64, x86-64-mac-catalyst: Yes; x86-64, x86-64-mac-catalyst: No |
arm64: Yes; x86-64: No |
arm64, arm64-simulator: Yes; x86-64: No |
all: Yes | Not specified |
libaom |
arm-v7a: Partial; others: Yes |
arm slices: Yes; i386: Partial; x86-64, x86-64-mac-catalyst: No3
|
arm64: Yes; x86-64: No |
arm64, arm64-simulator: Yes; x86-64: No |
all: Yes |
x86-64: Yes |
libass |
arm-v7a, arm-v7a-neon, arm64-v8a, x86: No; x86-64: Yes4
|
arm slices: No; x86-64, x86-64-mac-catalyst: No; i386: Yes |
all: No | all: No | all: No |
linux-libass: Dep |
libjxl |
all: Partial5 | all: Partial5 | all: Partial5 | all: Partial5 | all: Partial5 |
x86-64: Partial5
|
libjpeg-turbo |
all: Yes | arm slices: Yes; i386, x86-64, x86-64-mac-catalyst: No; arm64e: Yes2
|
all: Yes | all: Yes | all: Yes | Not built |
libpng |
arm-v7a: Partial6; others: Yes |
all: Yes | all: Yes | all: Yes | all: Yes |
linux-zlib/system png deps: Dep |
libtheora |
all: Yes | Not specified | Not specified | Not specified | Not specified |
linux-libtheora: Dep |
libvpx |
arm-v7a: Partial7; others: Yes |
armv7, armv7s, i386: Yes; arm64-family: Partial8; x86-64-family: Partial |
arm64: Partial8; x86-64: Partial |
arm64, arm64-simulator: Partial8; x86-64: Partial |
all: Partial8 |
linux-libvpx: Dep |
libwebp |
arm-v7a: No; others: Yes |
all except x86-64-mac-catalyst: Yes; x86-64-mac-catalyst: No |
all: Yes | all: Yes | all: Yes |
linux-libwebp: Dep |
nettle |
assembler: No; arch crypto flags: Partial | assembler: No; arch crypto flags: Partial | assembler: No; arch crypto flags: Partial | assembler: No; arch crypto flags: Partial | assembler: No; arch crypto flags: Partial | Not built |
openh264 |
arm-v7a: No; others: Yes |
all except x86-64: Yes; x86-64: No9
|
arm64: Yes; x86-64: No9
|
arm64, arm64-simulator: Yes; x86-64: No9
|
all: Yes |
x86-64: Yes |
openssl |
all: Yes | arch target selected; 64-bit NIST EC optimization depends on __uint128_t
|
arch target selected; 64-bit NIST EC optimization depends on __uint128_t
|
arch target selected; 64-bit NIST EC optimization depends on __uint128_t
|
arch target selected; 64-bit NIST EC optimization depends on __uint128_t
|
x86-64: Yes |
opus |
all: Yes | all: Yes | all: Yes | all: Yes | all: Yes |
linux-opus: Dep |
soxr |
Not specified |
arm64*: Partial; others: Not specified |
arm64: Partial; x86-64: Not specified |
arm64, arm64-simulator: Partial; x86-64: Not specified |
all: Partial |
linux-soxr: Dep |
speex |
x86, x86-64: Yes; arm: Not specified |
x86-family: Yes; arm: Not specified |
x86-64: Yes; arm64: Not specified |
x86-64: Yes; arm: Not specified |
arm: Not specified |
linux-speex: Dep |
vo-amrwbenc |
arm-v7a-neon: Yes; others: Not specified |
Not specified | Not specified | Not specified | Not specified |
linux-vo-amrwbenc: Dep |
vvenc |
arm-v7a: No; arm-v7a-neon, arm64-v8a: Yes; x86: Not specified |
Not specified | Not specified | Not specified | Not specified |
x86-64: Not specified |
x264 |
all except x86: Yes; x86: No10
|
arm slices: Yes; i386, x86-64-family: No |
arm64: Yes; x86-64: No |
arm64, arm64-simulator: Yes; x86-64: No |
all: Yes |
x86-64: Yes |
x265 |
arm-v7a, arm-v7a-neon, x86: No; arm64-v8a, x86-64: Yes |
armv7, armv7s, x86-64: Yes; arm64*, i386, x86-64-mac-catalyst: No |
arm64: No; x86-64: Yes |
arm64, arm64-simulator: No; x86-64: Yes |
all: No |
linux-x265: Dep |
xvidcore |
all except x86: Yes; x86: No11
|
arm slices: Yes; i386, x86-64-family: No |
arm64: Yes; x86-64: No |
arm64, arm64-simulator: Yes; x86-64: No |
all: Yes |
linux-xvidcore: Dep |
zimg |
Not specified |
armv7, armv7s: No; others: Yes |
all: Yes | all: Yes | all: Yes | Not specified |
Legend:
| Value | Meaning |
|---|---|
Yes |
ASM/SIMD is explicitly enabled by the script, or the script preserves an ASM-enabled build path. |
No |
ASM/SIMD is explicitly disabled by the script. |
Partial |
Some ASM/SIMD families are enabled while others are explicitly disabled. |
Dep |
Linux system dependency; ASM status is not known from these scripts. |
Not specified |
The script does not explicitly set ASM/SIMD-related options. |
Not built |
No build script exists for that platform in this project. |
- Android
ffmpegdisables asm onx86because the script references FFmpeg ticket 4928. -
jpegleaves the CMake architecture list empty forarm64ebecause libjpeg-turbo matches it asarm64, butarm64eis not a supported SIMD CPU type. - Apple
libaompatchesaom_portsto disable asm on x86-64-family slices. - Android
libassdisables asm onx86because enabling it causes text relocations inlibavfilter.so. -
libjxldisables AVX512, AVX512_SPR, AVX512_ZEN4, sizeless vectors, and forced NEON in scripts. - Android
libpngdoes not enable hardware optimizations onarm-v7abecause that makes the build try ARM-NEON instructions and breaks compilation. - Android
libvpxdisables NEON onarm-v7abecause runtime CPU detection enables NEON for armv7 CPU. - Apple
libvpxenables NEON on arm64-family slices but disables--enable-neon-asmbecause that option is ARMv7-style 32-bit only;arm64ealso disables NEON dotprod due ptrauth issues. - Apple
openh264script says ASM is enabled for all iOS architectures exceptx86-64. - Android
x264disables asm onx86because enabling it causes text relocations inlibavfilter.so. - Android
xvidcoredisables assembly onx86because enabling it causes text relocations inlibavcodec.so.
Copyright (c) 2026 FFmpegKitNext
- Status
- Versions
- Changelog
- Project Layout
- Using
- Building
- External Libraries
- Patents
- License