Compression
Integer Algorithms [8-bit Data Precision]
| | AVX2 (x86-64, i386) | SSE2 (x86-64, i386) | MMX (i386) | Neon (AArch64) | Neon (AArch32) | PPC AltiVec VMX | RISC-V Vector (RVV) | MIPS DSP r2 | Loongson MMI |
| RGB-to-YCbCr Color Conversion | v2.0+ | Yes | Yes | v1.5+ 1 | v1.2+ 1 | v1.5+ | v3.2+ | v1.4 - 3.1.x | v2.0+ |
| RGB-to-Grayscale Color Conversion | v2.0+ | Yes | Yes | v2.1+ | v2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x | v2.1+ |
| H2V1 (4:2:2) Downsampling | v2.0+ | Yes | Yes | v1.5+ | v2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x | No |
| H2V2 (4:2:0) Downsampling | v2.0+ | Yes | Yes | v1.5+ | v2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x | v2.0+ |
| Integer Sample Conversion | v2.0+ | Yes | Yes | v1.5+ | v1.2+ | v1.5+ | v3.2+ | v1.4 - 3.1.x 2 | No |
| Accurate Integer Forward DCT | v2.0+ | Yes | Yes | v1.5+ 1 | v2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x 2 | v2.0+ |
| Fast Integer Forward DCT (Legacy Feature) | No | Yes | Yes | v1.5+ | v1.2+ | v1.5+ | v3.2+ | v1.4 - 3.1.x 2 | v2.1+ |
| Integer Quantization | v2.0+ | Yes | Yes | v1.5+ | v1.2+ | v1.5+ | v3.2+ | v1.4 - 3.1.x | v2.0+ |
1 Both intrinsics (libjpeg-turbo v2.1+) and GAS (legacy) implementations provided in libjpeg-turbo 3.1.x and prior; GAS implementation used by default with GCC 11 and prior to avoid performance regression
2 Little endian only
Infrequently Used Integer Algorithms [8-bit Data Precision]
| | MIPS DSP r2 |
| NULL Color Conversion 1 | v1.4 - 3.1.x |
| H2V2 Smooth Downsampling 2 | v1.4 - 3.1.x |
1 Used when compressing an RGB-colorspace JPEG image from RGB pixels or a CMYK-colorspace JPEG image from CMYK pixels
2 Used when compressing a JPEG image with cjpeg -smooth (never used in the TurboJPEG API)
Floating Point Algorithms (Legacy Feature)
| | SSE (x86-64, i386) | 3DNow! (i386) | MIPS DSP r2 |
| Floating Point Sample Conversion | Yes | Yes | v1.4 - 3.1.x |
| Floating Point Forward DCT | Yes | Yes | No |
| Floating Point Quantization | Yes | Yes | v1.4 - 3.1.x |
Entropy Coding Algorithms
| | SSE2 (x86-64, i386) | Neon (AArch64) | Neon (AArch32) |
| Huffman Encoding | v1.5+ | v1.5+ 1 | v1.5+ |
| Progressive Huffman Encoding | v2.0+ | v2.1+ | v2.1+ |
1 Both intrinsics (libjpeg-turbo v2.1+) and GAS (legacy) implementations provided in libjpeg-turbo 3.1.x and prior; GAS implementation used by default with GCC 11 and prior to avoid performance regression
Decompression
Integer Algorithms [8-bit Data Precision]
| | AVX2 (x86-64, i386) | SSE2 (x86-64, i386) | MMX (i386) | Neon (AArch64) | Neon (AArch32) | PPC AltiVec VMX | RISC-V Vector (RVV) | MIPS DSP r2 | Loongson MMI |
| YCbCr-to-RGB Color Conversion | v2.0+ | Yes | Yes | v1.4+ 2 3 | v1.2+ | v1.5+ | v3.2+ | v1.4 - 3.1.x | v2.0+ |
| H2V1 (4:2:2) Fancy (Smooth) Upsampling | v2.0+ | Yes | Yes | v2.1+ | v1.2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x 4 | v2.1+ |
| H2V2 (4:2:0) Fancy (Smooth) Upsampling | v2.0+ | Yes | Yes | v2.1+ | v2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x 4 | v2.0+ |
| H1V2 (4:4:0) Fancy (Smooth) Upsampling | No | No | No | v2.1+ | v2.1+ | No | No | No | No |
| H2V1 (4:2:2) Merged Upsampling/Color Conversion 1 | v2.0+ | Yes | Yes | v2.1+ | v2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x | v2.1+ |
| H2V2 (4:2:0) Merged Upsampling/Color Conversion 1 | v2.0+ | Yes | Yes | v2.1+ | v2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x | v2.1+ |
| Accurate Integer Inverse DCT | v2.0+ | Yes | Yes | v1.4+ 2 3 | v1.2+ 3 | v1.5+ | v3.2+ | v1.4 - 3.1.x | v2.0+ |
| Fast Integer Inverse DCT (Legacy Feature) | No | Yes | Yes | v1.4+ 2 | v1.2+ 3 | v1.5+ | v3.2+ | v1.4 - 3.1.x 4 | v2.1+ |
1 Used when decompressing subsampled YCbCr JPEG images into an RGB output image with djpeg -nosmooth or TJPARAM_FASTUPSAMPLE
2 Further optimized for in-order pipelines in libjpeg-turbo 1.5+.
3 Both intrinsics (libjpeg-turbo v2.1+) and GAS (legacy) implementations provided in libjpeg-turbo 3.1.x and prior; GAS implementation used by default with GCC 11 and prior to avoid performance regression
4 Little endian only
Infrequently Used Integer Algorithms [8-bit Data Precision]
| | AVX2 (x86-64, i386) | SSE2 (x86-64, i386) | MMX (i386) | Neon (AArch64) | Neon (AArch32) | PPC AltiVec VMX | RISC-V Vector (RVV) | MIPS DSP r2 |
| YCbCr-to-RGB565 Color Conversion (Legacy Feature) | No | No | No | v1.4+ | v1.4+ | No | No | No |
| H2V1 (4:2:2) Plain Upsampling 1 | v2.0+ | Yes | Yes | v2.1+ | v2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x 3 |
| H2V2 (4:2:0) Plain Upsampling 1 | v2.0+ | Yes | Yes | v2.1+ | v2.1+ | v1.5+ | v3.2+ | v1.4 - 3.1.x |
| Integer Upsampling 2 | No | No | No | No | No | No | No | v1.4 - 3.1.x |
| 2x2 (1/4 Scaling) Integer Inverse DCT | No | Yes | Yes | v1.4+ | v1.2+ | No | No | v1.4 - 3.1.x |
| 4x4 (1/2 Scaling) Integer Inverse DCT | No | Yes | Yes | v1.4+ | v1.2+ | No | No | v1.4 - 3.1.x 3 |
| 6x6 (3/4 Scaling) Integer Inverse DCT | No | No | No | No | No | No | No | v1.4 - 3.1.x |
| 12x12 (3/2 Scaling) Integer Inverse DCT | No | No | No | No | No | No | No | v1.4 - 3.1.x |
1 Used when decompressing subsampled non-YCbCr JPEG images into an RGB or CMYK output image with djpeg -nosmooth or TJPARAM_FASTUPSAMPLE
2 Used when decompressing subsampled JPEG images with a sampling factor other than 4:2:0 or 4:2:2
3 Little endian only
Floating Point Algorithms (Legacy Feature)
| | SSE (x86_64) | SSE (i386) | 3DNow! (i386) |
| Floating Point Inverse DCT | Yes | Yes | Yes |