Skip to content

Commit

Permalink
Add jpegturbo SIMD files
Browse files Browse the repository at this point in the history
  • Loading branch information
hughsando committed Aug 9, 2024
1 parent d7be30f commit 701b22e
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 37 deletions.
1 change: 1 addition & 0 deletions project/ToolkitBuild.xml
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,7 @@
<files id="native-toolkit-jpeg-8" />
<files id="native-toolkit-jpeg-12" />
<files id="native-toolkit-jpeg-16" />
<files id="native-toolkit-jpeg-asm" if="NME_SIMD_D" />
</section>
<files id="native-toolkit-png" />
<files id="native-toolkit-zlib" />
Expand Down
80 changes: 43 additions & 37 deletions project/toolkit/jpeg/files.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<depend files="native-toolkit-jpeg-depends-int"/>
<compilerflag value="-I${NME_JPEG}" />
<compilerflag value="-I${NME_JPEG}/.." />
<compilerflag value="-DWITH_SIMD=1" if="NME_SIMD_D" />
<objprefix value="s16_" />
<file name="${NME_JPEG}jcapistd.c" />
<file name="${NME_JPEG}jccolor.c" />
Expand All @@ -49,6 +50,7 @@
<files id="native-toolkit-jpeg-12" tags="">
<tag value="${NATIVE_TOOLKIT_OPTIM_TAG}" if="NATIVE_TOOLKIT_OPTIM_TAG" />

<compilerflag value="-DWITH_SIMD=1" if="NME_SIMD_D" />
<compilerflag value="-DBITS_IN_JSAMPLE=12" />
<depend files="native-toolkit-jpeg-depends-int"/>
<compilerflag value="-I${NME_JPEG}" />
Expand Down Expand Up @@ -93,10 +95,10 @@

<tag value="${NATIVE_TOOLKIT_OPTIM_TAG}" if="NATIVE_TOOLKIT_OPTIM_TAG" />

<compilerflag value="-DWITH_SIMD=1" if="NME_SIMD_D" />
<depend files="native-toolkit-jpeg-depends-int"/>
<compilerflag value="-I${NME_JPEG}" />
<compilerflag value="-I${NME_JPEG}/.." />
<compilerflag value="-I${NME_JPEG}/simd/nasm" />

<files id="jpeg-sample12" />
<files id="jpeg-sample16" />
Expand Down Expand Up @@ -162,45 +164,55 @@
<file name="${NME_JPEG}jcarith.c" />
<file name="${NME_JPEG}jdarith.c" />

</files>

<files id="jpeg-simd" >
<compilerflag value="${NME_SIMD_D}" if="NME_SIMD_D" />
<compilerflag value="-DNME_SIMD_D" if="NME_SIMD_D" />
<section if="NME_SIMD_ARM64 || NME_SIMD_ARM7" >
<file name="${NME_JPEG}jcapimin.c"/>
<file name="{$NME_JPEG}/simd/arm/jquanti-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jidctred-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jidctint-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jfdctint-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jidctfst-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jfdctfst-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jdsample-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jdmrgext-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jdcolor-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jdmerge-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jdcolext-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jcsample-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jcphuff-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jcgryext-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jcgray-neon.c" />
<file name="{$NME_JPEG}/simd/arm/jccolor-neon.c" />
<file name="${NME_JPEG}/simd/arm/jquanti-neon.c" />
<file name="${NME_JPEG}/simd/arm/jidctred-neon.c" />
<file name="${NME_JPEG}/simd/arm/jidctint-neon.c" />
<file name="${NME_JPEG}/simd/arm/jfdctint-neon.c" />
<file name="${NME_JPEG}/simd/arm/jidctfst-neon.c" />
<file name="${NME_JPEG}/simd/arm/jfdctfst-neon.c" />
<file name="${NME_JPEG}/simd/arm/jdsample-neon.c" />
<file name="${NME_JPEG}/simd/arm/jdcolor-neon.c" />
<file name="${NME_JPEG}/simd/arm/jdmerge-neon.c" />
<!--
<file name="${NME_JPEG}/simd/arm/jcgryext-neon.c" />
<file name="${NME_JPEG}/simd/arm/jdmrgext-neon.c" />
<file name="${NME_JPEG}/simd/arm/jdcolext-neon.c" />
-->
<file name="${NME_JPEG}/simd/arm/jcsample-neon.c" />
<file name="${NME_JPEG}/simd/arm/jcphuff-neon.c" />
<file name="${NME_JPEG}/simd/arm/jcgray-neon.c" />
<file name="${NME_JPEG}/simd/arm/jccolor-neon.c" />

<section if="NME_SIMD_ARM64" >
<file name="{$NME_JPEG}/simd/arm/aarch64/jsimd_neon.S" />
<file name="{$NME_JPEG}/simd/arm/aarch64/jsimd.c" />
<file name="{$NME_JPEG}/simd/arm/aarch64/jccolext-neon.c" />
<file name="{$NME_JPEG}/simd/arm/aarch64/jchuff-neon.c" />
<file name="${NME_JPEG}/simd/arm/aarch64/jsimd_neon.S" />
<file name="${NME_JPEG}/simd/arm/aarch64/jsimd.c" />
<!--<file name="${NME_JPEG}/simd/arm/aarch64/jccolext-neon.c" />-->
<file name="${NME_JPEG}/simd/arm/aarch64/jchuff-neon.c" />
</section>
<section if="NME_SIMD_ARM7" >
<file name="{$NME_JPEG}/simd/arm/aarch64/jsimd_neon.S" />
<file name="{$NME_JPEG}/simd/arm/aarch64/jsimd.c" />
<file name="{$NME_JPEG}/simd/arm/aarch64/jccolext-neon.c" />
<file name="{$NME_JPEG}/simd/arm/aarch64/jchuff-neon.c" />
<file name="${NME_JPEG}/simd/arm/aarch64/jsimd_neon.S" />
<file name="${NME_JPEG}/simd/arm/aarch64/jsimd.c" />
<!--<file name="${NME_JPEG}/simd/arm/aarch64/jccolext-neon.c" />-->
<file name="${NME_JPEG}/simd/arm/aarch64/jchuff-neon.c" />
</section>
</section>
<section if="NME_SIMD_X86_64" >
<file name="${NME_JPEG}/simd/x86_64/jsimd.c" />
</section>
</files>

<files id="native-toolkit-jpeg-asm" >
<section if="NME_SIMD_X86_64" >
<assembler name="nasm" />
<compilerflag value="-fwin64" />
<compilerflag value="-D__x86_64__" />
<compilerflag value="-DWIN64" />
<compilerflag name="-I" value="${NME_JPEG}/simd/nasm/" />
<compilerflag name="-I" value="${NME_JPEG}/simd/x86_64/" />

<file name="${NME_JPEG}/simd/x86_64/jsimdcpu.asm" />
<file name="${NME_JPEG}/simd/x86_64/jquanti-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jquantf-sse2.asm" />
Expand All @@ -216,29 +228,23 @@
<file name="${NME_JPEG}/simd/x86_64/jfdctflt-sse.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdsample-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdsample-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdmrgext-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdmrgext-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdmerge-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdmerge-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdcolor-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdcolor-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdcolext-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jcsample-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jdcolext-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jcsample-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jchuff-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jcphuff-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jcgryext-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jcgryext-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jcgray-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jccolor-sse2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jcgray-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jccolor-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jccolext-avx2.asm" />
<file name="${NME_JPEG}/simd/x86_64/jccolext-sse2.asm" />

</section>
</files>


<files id="jpeg-test-main" tags="">
<depend files="native-toolkit-jpeg-depends-int"/>
<compilerflag value="-I${NME_JPEG}" />
Expand Down
39 changes: 39 additions & 0 deletions project/toolkit/jpeg/neon-compat.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright (C) 2020, D. R. Commander. All Rights Reserved.
* Copyright (C) 2020-2021, Arm Limited. All Rights Reserved.
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/

//#cmakedefine HAVE_VLD1_S16_X3
//#cmakedefine HAVE_VLD1_U16_X2
//#cmakedefine HAVE_VLD1Q_U8_X4
#define NEON_INTRINSICS 1

/* Define compiler-independent count-leading-zeros and byte-swap macros */
#if defined(_MSC_VER) && !defined(__clang__)
#define BUILTIN_CLZ(x) _CountLeadingZeros(x)
#define BUILTIN_CLZLL(x) _CountLeadingZeros64(x)
#define BUILTIN_BSWAP64(x) _byteswap_uint64(x)
#elif defined(__clang__) || defined(__GNUC__)
#define BUILTIN_CLZ(x) __builtin_clz(x)
#define BUILTIN_CLZLL(x) __builtin_clzll(x)
#define BUILTIN_BSWAP64(x) __builtin_bswap64(x)
#else
#error "Unknown compiler"
#endif

0 comments on commit 701b22e

Please sign in to comment.