Bug 1921522: Mark WPTs gradient-external-reference.svg and pattern-external-reference...
[gecko.git] / media / libpng / arm / filter_neon.S
blobdd324eeb3d414dede6a40df8c8666a0eaee22cc5
2 /* filter_neon.S - placeholder file
3  *
4  * Copyright (c) 2024 Cosmin Truta
5  *
6  * This code is released under the libpng license.
7  * For conditions of distribution and use, see the disclaimer
8  * and license in png.h
9  */
11 /* IMPORTANT NOTE:
12  *
13  * Historically, the hand-coded assembler implementation of Neon optimizations
14  * in this module had not been in sync with the intrinsics-based implementation
15  * in filter_neon_intrinsics.c and palette_neon_intrinsics.c, at least since
16  * the introduction of riffled palette optimizations. Moreover, the assembler
17  * code used to work on 32-bit ARM only, and it caused problems, even if empty,
18  * on 64-bit ARM.
19  *
20  * All references to this module from our internal build scripts and projects
21  * have been removed.
22  *
23  * For the external projects that might still expect this module to be present,
24  * we leave this stub in place, for the remaining lifetime of libpng-1.6.x.
25  * Everything should continue to function normally, as long as there are no
26  * deliberate attempts to use the old hand-made assembler code. A build error
27  * will be raised otherwise.
28  */
30 /* These are required because Mozilla's moz.build system doesn't pass
31  * -DDefined macros to the assembler.
32  */
33 #define PNG_READ_SUPPORTED
34 #define MOZ_PNG_HAVE_ARM_NEON
36 /* This is required to get the symbol renames, which are #defines, and the
37  * definitions (or not) of PNG_ARM_NEON_OPT and PNG_ARM_NEON_IMPLEMENTATION.
38  */
39 #define PNG_VERSION_INFO_ONLY
40 #include "../pngpriv.h"
42 #ifdef PNG_READ_SUPPORTED
43 #if PNG_ARM_NEON_IMPLEMENTATION == 2 /* hand-coded assembler */
44 #if PNG_ARM_NEON_OPT > 0
46 #if defined(__clang__)
47 #define GNUC_VERSION 0 /* not gcc, although it might pretend to be */
48 #elif defined(__GNUC__)
49 #define GNUC_MAJOR (__GNUC__ + 0)
50 #define GNUC_MINOR (__GNUC_MINOR__ + 0)
51 #define GNUC_PATCHLEVEL (__GNUC_PATCHLEVEL__ + 0)
52 #define GNUC_VERSION (GNUC_MAJOR * 10000 + GNUC_MINOR * 100 + GNUC_PATCHLEVEL)
53 #else
54 #define GNUC_VERSION 0 /* not gcc */
55 #endif
57 #if (GNUC_VERSION > 0) && (GNUC_VERSION < 40300)
58 #error "PNG_ARM_NEON is not supported with gcc versions earlier than 4.3.0"
59 #elif GNUC_VERSION == 40504
60 #error "PNG_ARM_NEON is not supported with gcc version 4.5.4"
61 #else
62 #error "Please use 'arm/*_neon_intrinsics.c' for PNG_ARM_NEON support"
63 #endif
65 #endif /* PNG_ARM_NEON_OPT > 0 */
66 #endif /* PNG_ARM_NEON_IMPLEMENTATION == 2 */
67 #endif /* READ */