xref: /aosp_15_r20/external/libjpeg-turbo/simd/arm/jcgray-neon.c (revision dfc6aa5c1cfd4bc4e2018dc74aa96e29ee49c6da)
1*dfc6aa5cSAndroid Build Coastguard Worker /*
2*dfc6aa5cSAndroid Build Coastguard Worker  * jcgray-neon.c - grayscale colorspace conversion (Arm Neon)
3*dfc6aa5cSAndroid Build Coastguard Worker  *
4*dfc6aa5cSAndroid Build Coastguard Worker  * Copyright (C) 2020, Arm Limited.  All Rights Reserved.
5*dfc6aa5cSAndroid Build Coastguard Worker  *
6*dfc6aa5cSAndroid Build Coastguard Worker  * This software is provided 'as-is', without any express or implied
7*dfc6aa5cSAndroid Build Coastguard Worker  * warranty.  In no event will the authors be held liable for any damages
8*dfc6aa5cSAndroid Build Coastguard Worker  * arising from the use of this software.
9*dfc6aa5cSAndroid Build Coastguard Worker  *
10*dfc6aa5cSAndroid Build Coastguard Worker  * Permission is granted to anyone to use this software for any purpose,
11*dfc6aa5cSAndroid Build Coastguard Worker  * including commercial applications, and to alter it and redistribute it
12*dfc6aa5cSAndroid Build Coastguard Worker  * freely, subject to the following restrictions:
13*dfc6aa5cSAndroid Build Coastguard Worker  *
14*dfc6aa5cSAndroid Build Coastguard Worker  * 1. The origin of this software must not be misrepresented; you must not
15*dfc6aa5cSAndroid Build Coastguard Worker  *    claim that you wrote the original software. If you use this software
16*dfc6aa5cSAndroid Build Coastguard Worker  *    in a product, an acknowledgment in the product documentation would be
17*dfc6aa5cSAndroid Build Coastguard Worker  *    appreciated but is not required.
18*dfc6aa5cSAndroid Build Coastguard Worker  * 2. Altered source versions must be plainly marked as such, and must not be
19*dfc6aa5cSAndroid Build Coastguard Worker  *    misrepresented as being the original software.
20*dfc6aa5cSAndroid Build Coastguard Worker  * 3. This notice may not be removed or altered from any source distribution.
21*dfc6aa5cSAndroid Build Coastguard Worker  */
22*dfc6aa5cSAndroid Build Coastguard Worker 
23*dfc6aa5cSAndroid Build Coastguard Worker #define JPEG_INTERNALS
24*dfc6aa5cSAndroid Build Coastguard Worker #include "../../jinclude.h"
25*dfc6aa5cSAndroid Build Coastguard Worker #include "../../jpeglib.h"
26*dfc6aa5cSAndroid Build Coastguard Worker #include "../../jsimd.h"
27*dfc6aa5cSAndroid Build Coastguard Worker #include "../../jdct.h"
28*dfc6aa5cSAndroid Build Coastguard Worker #include "../../jsimddct.h"
29*dfc6aa5cSAndroid Build Coastguard Worker #include "../jsimd.h"
30*dfc6aa5cSAndroid Build Coastguard Worker #include "align.h"
31*dfc6aa5cSAndroid Build Coastguard Worker 
32*dfc6aa5cSAndroid Build Coastguard Worker #include <arm_neon.h>
33*dfc6aa5cSAndroid Build Coastguard Worker 
34*dfc6aa5cSAndroid Build Coastguard Worker 
35*dfc6aa5cSAndroid Build Coastguard Worker /* RGB -> Grayscale conversion constants */
36*dfc6aa5cSAndroid Build Coastguard Worker 
37*dfc6aa5cSAndroid Build Coastguard Worker #define F_0_298  19595
38*dfc6aa5cSAndroid Build Coastguard Worker #define F_0_587  38470
39*dfc6aa5cSAndroid Build Coastguard Worker #define F_0_113  7471
40*dfc6aa5cSAndroid Build Coastguard Worker 
41*dfc6aa5cSAndroid Build Coastguard Worker 
42*dfc6aa5cSAndroid Build Coastguard Worker /* Include inline routines for colorspace extensions. */
43*dfc6aa5cSAndroid Build Coastguard Worker 
44*dfc6aa5cSAndroid Build Coastguard Worker #include "jcgryext-neon.c"
45*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_RED
46*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_GREEN
47*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_BLUE
48*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_PIXELSIZE
49*dfc6aa5cSAndroid Build Coastguard Worker 
50*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_RED  EXT_RGB_RED
51*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_GREEN  EXT_RGB_GREEN
52*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_BLUE  EXT_RGB_BLUE
53*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_PIXELSIZE  EXT_RGB_PIXELSIZE
54*dfc6aa5cSAndroid Build Coastguard Worker #define jsimd_rgb_gray_convert_neon  jsimd_extrgb_gray_convert_neon
55*dfc6aa5cSAndroid Build Coastguard Worker #include "jcgryext-neon.c"
56*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_RED
57*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_GREEN
58*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_BLUE
59*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_PIXELSIZE
60*dfc6aa5cSAndroid Build Coastguard Worker #undef jsimd_rgb_gray_convert_neon
61*dfc6aa5cSAndroid Build Coastguard Worker 
62*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_RED  EXT_RGBX_RED
63*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_GREEN  EXT_RGBX_GREEN
64*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_BLUE  EXT_RGBX_BLUE
65*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_PIXELSIZE  EXT_RGBX_PIXELSIZE
66*dfc6aa5cSAndroid Build Coastguard Worker #define jsimd_rgb_gray_convert_neon  jsimd_extrgbx_gray_convert_neon
67*dfc6aa5cSAndroid Build Coastguard Worker #include "jcgryext-neon.c"
68*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_RED
69*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_GREEN
70*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_BLUE
71*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_PIXELSIZE
72*dfc6aa5cSAndroid Build Coastguard Worker #undef jsimd_rgb_gray_convert_neon
73*dfc6aa5cSAndroid Build Coastguard Worker 
74*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_RED  EXT_BGR_RED
75*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_GREEN  EXT_BGR_GREEN
76*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_BLUE  EXT_BGR_BLUE
77*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_PIXELSIZE  EXT_BGR_PIXELSIZE
78*dfc6aa5cSAndroid Build Coastguard Worker #define jsimd_rgb_gray_convert_neon  jsimd_extbgr_gray_convert_neon
79*dfc6aa5cSAndroid Build Coastguard Worker #include "jcgryext-neon.c"
80*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_RED
81*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_GREEN
82*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_BLUE
83*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_PIXELSIZE
84*dfc6aa5cSAndroid Build Coastguard Worker #undef jsimd_rgb_gray_convert_neon
85*dfc6aa5cSAndroid Build Coastguard Worker 
86*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_RED  EXT_BGRX_RED
87*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_GREEN  EXT_BGRX_GREEN
88*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_BLUE  EXT_BGRX_BLUE
89*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_PIXELSIZE  EXT_BGRX_PIXELSIZE
90*dfc6aa5cSAndroid Build Coastguard Worker #define jsimd_rgb_gray_convert_neon  jsimd_extbgrx_gray_convert_neon
91*dfc6aa5cSAndroid Build Coastguard Worker #include "jcgryext-neon.c"
92*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_RED
93*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_GREEN
94*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_BLUE
95*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_PIXELSIZE
96*dfc6aa5cSAndroid Build Coastguard Worker #undef jsimd_rgb_gray_convert_neon
97*dfc6aa5cSAndroid Build Coastguard Worker 
98*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_RED  EXT_XBGR_RED
99*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_GREEN  EXT_XBGR_GREEN
100*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_BLUE  EXT_XBGR_BLUE
101*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_PIXELSIZE  EXT_XBGR_PIXELSIZE
102*dfc6aa5cSAndroid Build Coastguard Worker #define jsimd_rgb_gray_convert_neon  jsimd_extxbgr_gray_convert_neon
103*dfc6aa5cSAndroid Build Coastguard Worker #include "jcgryext-neon.c"
104*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_RED
105*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_GREEN
106*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_BLUE
107*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_PIXELSIZE
108*dfc6aa5cSAndroid Build Coastguard Worker #undef jsimd_rgb_gray_convert_neon
109*dfc6aa5cSAndroid Build Coastguard Worker 
110*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_RED  EXT_XRGB_RED
111*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_GREEN  EXT_XRGB_GREEN
112*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_BLUE  EXT_XRGB_BLUE
113*dfc6aa5cSAndroid Build Coastguard Worker #define RGB_PIXELSIZE  EXT_XRGB_PIXELSIZE
114*dfc6aa5cSAndroid Build Coastguard Worker #define jsimd_rgb_gray_convert_neon  jsimd_extxrgb_gray_convert_neon
115*dfc6aa5cSAndroid Build Coastguard Worker #include "jcgryext-neon.c"
116*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_RED
117*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_GREEN
118*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_BLUE
119*dfc6aa5cSAndroid Build Coastguard Worker #undef RGB_PIXELSIZE
120*dfc6aa5cSAndroid Build Coastguard Worker #undef jsimd_rgb_gray_convert_neon
121