mirror of
				https://git.code.sf.net/p/libpng/code.git
				synced 2025-07-10 18:04:09 +02:00 
			
		
		
		
	 d7d950e8bd
			
		
	
	
		d7d950e8bd
		
	
	
	
	
		
			
			The leading blank lines are apparently an artefact of an older source control system. They are not required and they look like accidents, because starting a source file with a blank line is not a regular habit of software developers nowadays. This is a cherry-pick of commit 37cc20add8fb5b83bb5299a26cd3b41e0f776017 from branch 'libpng18'. Signed-off-by: John Bowler <jbowler@acm.org> Signed-off-by: Cosmin Truta <ctruta@gmail.com>
		
			
				
	
	
		
			61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* filter_neon.S - placeholder file
 | |
|  *
 | |
|  * Copyright (c) 2024 Cosmin Truta
 | |
|  *
 | |
|  * This code is released under the libpng license.
 | |
|  * For conditions of distribution and use, see the disclaimer
 | |
|  * and license in png.h
 | |
|  */
 | |
| 
 | |
| /* IMPORTANT NOTE:
 | |
|  *
 | |
|  * Historically, the hand-coded assembler implementation of Neon optimizations
 | |
|  * in this module had not been in sync with the intrinsics-based implementation
 | |
|  * in filter_neon_intrinsics.c and palette_neon_intrinsics.c, at least since
 | |
|  * the introduction of riffled palette optimizations. Moreover, the assembler
 | |
|  * code used to work on 32-bit ARM only, and it caused problems, even if empty,
 | |
|  * on 64-bit ARM.
 | |
|  *
 | |
|  * All references to this module from our internal build scripts and projects
 | |
|  * have been removed.
 | |
|  *
 | |
|  * For the external projects that might still expect this module to be present,
 | |
|  * we leave this stub in place, for the remaining lifetime of libpng-1.6.x.
 | |
|  * Everything should continue to function normally, as long as there are no
 | |
|  * deliberate attempts to use the old hand-made assembler code. A build error
 | |
|  * will be raised otherwise.
 | |
|  */
 | |
| 
 | |
| /* This is required to get the symbol renames, which are #defines, and the
 | |
|  * definitions (or not) of PNG_ARM_NEON_OPT and PNG_ARM_NEON_IMPLEMENTATION.
 | |
|  */
 | |
| #define PNG_VERSION_INFO_ONLY
 | |
| #include "../pngpriv.h"
 | |
| 
 | |
| #ifdef PNG_READ_SUPPORTED
 | |
| #if PNG_ARM_NEON_IMPLEMENTATION == 2 /* hand-coded assembler */
 | |
| #if PNG_ARM_NEON_OPT > 0
 | |
| 
 | |
| #if defined(__clang__)
 | |
| #define GNUC_VERSION 0 /* not gcc, although it might pretend to be */
 | |
| #elif defined(__GNUC__)
 | |
| #define GNUC_MAJOR (__GNUC__ + 0)
 | |
| #define GNUC_MINOR (__GNUC_MINOR__ + 0)
 | |
| #define GNUC_PATCHLEVEL (__GNUC_PATCHLEVEL__ + 0)
 | |
| #define GNUC_VERSION (GNUC_MAJOR * 10000 + GNUC_MINOR * 100 + GNUC_PATCHLEVEL)
 | |
| #else
 | |
| #define GNUC_VERSION 0 /* not gcc */
 | |
| #endif
 | |
| 
 | |
| #if (GNUC_VERSION > 0) && (GNUC_VERSION < 40300)
 | |
| #error "PNG_ARM_NEON is not supported with gcc versions earlier than 4.3.0"
 | |
| #elif GNUC_VERSION == 40504
 | |
| #error "PNG_ARM_NEON is not supported with gcc version 4.5.4"
 | |
| #else
 | |
| #error "Please use 'arm/*_neon_intrinsics.c' for PNG_ARM_NEON support"
 | |
| #endif
 | |
| 
 | |
| #endif /* PNG_ARM_NEON_OPT > 0 */
 | |
| #endif /* PNG_ARM_NEON_IMPLEMENTATION == 2 */
 | |
| #endif /* READ */
 |