Files
2026-04-26 20:29:38 +02:00

1408 lines
208 KiB
GLSL

// MIT License
// Copyright (c) 2024 Joao Chrisostomo, Kacper Michajłow
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//!DESC ArtCNN C4F16 DS (Conv2D)
//!COMPUTE 24 32 12 16
//!HOOK LUMA
//!BIND LUMA
//!SAVE conv2d
//!WIDTH LUMA.w 2.0 *
//!HEIGHT LUMA.h 2.0 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
# define V4 f16vec4
# define M4 f16mat4
# define F float16_t
#else
# define V4 vec4
# define M4 mat4
# define F float
#endif
const ivec2 ksize = ivec2(3, 3);
const ivec2 offset = ksize / 2;
const ivec2 wg_size = ivec2(gl_WorkGroupSize);
const ivec2 isize = wg_size + ksize - 1;
shared F inp[1][isize.y][isize.x];
void hook() {
const uvec2 local_xy = gl_LocalInvocationID.xy;
ivec2 base = ivec2(gl_WorkGroupID) * wg_size;
for (uint y = local_xy.y; y < isize.y; y += wg_size.y) {
for (uint x = local_xy.x; x < isize.x; x += wg_size.x) {
const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(1, 1);
inp[0][y][x] = F(LUMA_mul * texelFetch(LUMA_raw, input_base + ivec2(0, 0), 0).x);
}
}
barrier();
V4 result0 = V4(-0.006840266, -0.012440474, -0.012945435, -0.04645404);
V4 result1 = V4(-0.03236463, -0.0050622425, -0.0045825113, 0.006420765);
V4 result2 = V4(0.030867014, -0.0024917293, 0.007428549, -0.0090537695);
V4 result3 = V4(-0.0012738375, 0.013379571, 0.008391121, -0.06455159);
const F inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0];
const F inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1];
const F inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2];
const F inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0];
const F inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1];
const F inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2];
const F inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0];
const F inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1];
const F inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2];
result0 += V4(-0.035472848, -0.14499138, 0.010996882, 0.043425154) * inp_0_0_0;
result0 += V4(0.025666144, 0.15189208, 0.106125966, 0.12280825) * inp_0_1_0;
result0 += V4(-0.0059361006, 0.12564982, -0.08410422, 0.061385795) * inp_0_2_0;
result0 += V4(-0.032784533, 0.039960023, -0.007927497, 0.16533956) * inp_0_0_1;
result0 += V4(-0.0575242, -0.08458494, -0.36564967, 0.2639598) * inp_0_1_1;
result0 += V4(-0.22559616, -0.15471613, 0.08640329, 0.111541584) * inp_0_2_1;
result0 += V4(0.02868958, 0.18487, -0.0071559404, 0.094328836) * inp_0_0_2;
result0 += V4(0.12985429, -0.09587503, 0.22276698, -0.00030755106) * inp_0_1_2;
result0 += V4(0.19284648, -0.0036720308, 0.046878424, 0.087355375) * inp_0_2_2;
result1 += V4(0.074089326, -0.05675305, -0.09985263, -0.009709773) * inp_0_0_0;
result1 += V4(-0.05789924, -0.043006446, 0.0020396519, -0.17014614) * inp_0_1_0;
result1 += V4(0.04783098, 0.116548575, 0.04523142, 0.13470247) * inp_0_2_0;
result1 += V4(-0.05063743, 0.08730553, 0.13439637, -0.026661385) * inp_0_0_1;
result1 += V4(0.09525456, -0.16270195, 0.1547691, 0.15802628) * inp_0_1_1;
result1 += V4(-0.11239273, 0.27577797, -0.20400351, -0.11836694) * inp_0_2_1;
result1 += V4(0.04961805, -0.025907341, 0.004669451, 0.0224939) * inp_0_0_2;
result1 += V4(0.10036262, -0.2565832, -0.10639526, 0.05117149) * inp_0_1_2;
result1 += V4(-0.06141705, 0.0645962, 0.073470935, -0.05072495) * inp_0_2_2;
result2 += V4(-0.05530217, 0.10601906, -0.078338385, -0.06250365) * inp_0_0_0;
result2 += V4(0.07705957, -0.047928665, 0.13465533, 0.007932151) * inp_0_1_0;
result2 += V4(0.06636978, -0.00021219392, 0.024917463, -0.03883686) * inp_0_2_0;
result2 += V4(-0.17326315, 0.26141313, 0.32149935, 0.15181658) * inp_0_0_1;
result2 += V4(-0.2644004, -0.671686, -0.2870538, -0.059954405) * inp_0_1_1;
result2 += V4(0.119587556, 0.112419866, -0.08982401, -0.049265414) * inp_0_2_1;
result2 += V4(0.038703833, 0.11872192, -0.12390658, 0.0075279525) * inp_0_0_2;
result2 += V4(0.18729559, 0.057575975, 0.070585884, 0.17390902) * inp_0_1_2;
result2 += V4(-0.13925101, 0.0038511057, 0.015638566, -0.12646236) * inp_0_2_2;
result3 += V4(0.04861797, -0.12658298, 0.22940855, -0.092168994) * inp_0_0_0;
result3 += V4(-0.17647275, 0.16706389, 0.3450641, 0.15214883) * inp_0_1_0;
result3 += V4(-0.0019383872, -0.010804838, 0.061069414, 0.080609985) * inp_0_2_0;
result3 += V4(0.04252093, -0.04149563, 0.02318568, -0.21245834) * inp_0_0_1;
result3 += V4(0.011523845, -0.14079979, -0.37102658, -0.026639262) * inp_0_1_1;
result3 += V4(0.057185087, 0.11133354, -0.17895421, 0.20168874) * inp_0_2_1;
result3 += V4(-0.056966644, 0.16069722, -0.06554181, -0.08890916) * inp_0_0_2;
result3 += V4(0.09564253, -0.08339483, -0.16765916, 0.026718881) * inp_0_1_2;
result3 += V4(-0.01259612, -0.05284743, -0.03444009, 0.18512487) * inp_0_2_2;
const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2);
imageStore(out_image, output_base + ivec2(0, 0), result0);
imageStore(out_image, output_base + ivec2(1, 0), result1);
imageStore(out_image, output_base + ivec2(0, 1), result2);
imageStore(out_image, output_base + ivec2(1, 1), result3);
}
//!DESC ArtCNN C4F16 DS (Conv2D-1-ReLU)
//!COMPUTE 24 32 12 16
//!HOOK LUMA
//!BIND conv2d
//!SAVE conv2d_1
//!WIDTH LUMA.w 2.0 *
//!HEIGHT LUMA.h 2.0 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
# define V4 f16vec4
# define M4 f16mat4
# define F float16_t
#else
# define V4 vec4
# define M4 mat4
# define F float
#endif
const ivec2 ksize = ivec2(3, 3);
const ivec2 offset = ksize / 2;
const ivec2 wg_size = ivec2(gl_WorkGroupSize);
const ivec2 isize = wg_size + ksize - 1;
shared V4 inp[4][isize.y][isize.x];
void hook() {
const uvec2 local_xy = gl_LocalInvocationID.xy;
ivec2 base = ivec2(gl_WorkGroupID) * wg_size;
for (uint y = local_xy.y; y < isize.y; y += wg_size.y) {
for (uint x = local_xy.x; x < isize.x; x += wg_size.x) {
const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2);
inp[0][y][x] = V4(conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(0, 0), 0));
inp[1][y][x] = V4(conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(1, 0), 0));
inp[2][y][x] = V4(conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(0, 1), 0));
inp[3][y][x] = V4(conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(1, 1), 0));
}
}
barrier();
V4 result0 = V4(0.022494009, 0.010688241, 0.113071755, 0.014310682);
V4 result1 = V4(0.04352711, -0.0103872325, -0.012488284, 0.011180832);
V4 result2 = V4(0.010249187, 0.024268746, 0.006529056, 0.013672046);
V4 result3 = V4(0.0028431015, -0.004790311, -0.0061660665, -0.03548562);
const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0];
const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1];
const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2];
const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0];
const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1];
const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2];
const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0];
const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1];
const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.10479677, 0.3411586, -0.06579994, 0.034780983, 0.11943181, 0.08763095, 0.035811555, -0.01753077, -0.3130947, 0.2231884, -0.090470314, -0.09471368, 0.0001276798, -0.056429993, -0.12808435, 0.027978722) * inp_0_0_0;
result0 += M4(-0.28238723, 0.13009204, -0.026728423, 0.02123694, 0.58981425, 0.22357008, 0.032613803, 0.10578286, -0.57351524, -0.46021354, -0.12491284, -0.14003922, -0.34103084, 0.08781602, 0.030595344, 0.10513821) * inp_0_1_0;
result0 += M4(0.2642758, -0.10324524, 0.019559305, -0.028084155, 0.07867612, -0.14690094, 0.13108146, -0.15348442, -0.2819344, 0.06513542, -0.058154546, 0.03663467, -0.09374949, -0.01503679, -0.10097672, -0.05282455) * inp_0_2_0;
result0 += M4(-0.15168612, -0.13236068, -0.00689542, -0.15861389, -0.22202934, -0.17070411, 0.17424291, -0.1624393, 0.23072213, 0.13951035, 0.0012398841, -0.034449153, 0.028123911, 0.07812906, -0.020858293, 0.028142901) * inp_0_0_1;
result0 += M4(-0.035625577, -0.14187668, -0.04667818, -0.134416, -0.45163316, 0.23423536, 0.0571813, -0.049444832, -0.45836252, 0.58856183, -0.0056741154, -0.3897246, 0.03306657, 0.033639755, 0.09506474, 0.11658746) * inp_0_1_1;
result0 += M4(-0.2829526, 0.00786565, -0.048534505, -0.08234785, -0.36148167, -0.1359708, -0.034626566, -0.044361416, 0.2170718, 0.090837285, 0.069184095, -0.16007374, -0.04780679, 0.06256234, 0.049868744, 0.03863737) * inp_0_2_1;
result0 += M4(0.07953789, 0.030877812, 0.004487105, 0.16679375, -0.026288886, -0.11866879, -0.0839314, 0.1698979, 0.2646044, -0.21637717, 0.044367567, -0.061271653, -0.045567483, -0.050073896, -0.10901837, -0.019712338) * inp_0_0_2;
result0 += M4(0.055660613, 0.0320606, -0.057876762, 0.117834225, 0.07401689, 0.19056262, -0.07266641, 0.44205898, 0.22728555, -0.16194552, -0.20326194, 0.7814926, 0.005864043, -0.033597745, -0.06000258, 0.02083334) * inp_0_1_2;
result0 += M4(-0.13321769, -0.08081111, 0.0150939245, 0.0014336098, 0.10981143, -0.31857747, -0.14205092, -0.09618384, 0.11394143, -0.06976159, 0.093441606, -0.050063368, 0.038269736, -0.065105274, 0.039584078, -0.07212289) * inp_0_2_2;
result1 += M4(-0.08186066, -0.041144423, 0.016963616, 0.15629931, -0.0582936, -0.048947852, 0.027505813, 0.11996856, 0.051287394, 0.004658056, -0.04836975, 0.018987412, 0.07952148, -0.069165096, -0.06170187, -0.10891928) * inp_0_0_0;
result1 += M4(0.12343842, -0.038259026, 0.057606205, -0.08375539, -0.11059395, 0.098078765, 0.1135806, 0.030289128, -0.09526618, 0.054150246, 0.037678257, -0.025201589, 0.13171335, -0.053315036, -0.11003567, -0.04642963) * inp_0_1_0;
result1 += M4(0.07596823, 0.0038333086, 0.009520516, -0.09820126, -0.12349041, 0.310098, 0.09550576, -0.03536651, 0.04588019, 0.088968344, -0.11969857, 0.09331476, -0.10708378, -0.037092425, -0.056556668, 0.12972869) * inp_0_2_0;
result1 += M4(-0.06807756, 0.25276014, -0.036009178, 0.34381545, -0.11912201, -0.044426594, 0.14524268, 0.072304286, -0.12065588, 0.2353578, 0.06476041, 0.17756638, 0.06402216, -0.06283088, -0.04239077, -0.10269845) * inp_0_0_1;
result1 += M4(0.09948897, -0.15636441, 0.24153213, -0.03081743, 0.20752946, -0.20543274, -0.041794807, -0.067775995, -0.19404064, 0.1850852, 0.8856955, -0.07138099, 0.16388299, 0.06363284, -0.109902404, -0.082725376) * inp_0_1_1;
result1 += M4(0.08619544, -0.13485509, -0.030751353, -0.0855368, -0.09201831, -0.16445367, 0.20816854, -0.1019963, 0.35415545, -0.08612853, 0.15650664, 0.066128254, -0.19749612, 0.084822446, -0.030550849, 0.01854397) * inp_0_2_1;
result1 += M4(0.023383228, -0.03943026, -0.04779961, -0.16049524, 0.14496428, -0.4248915, -0.14883935, 0.18096933, 0.11676054, -0.0020324741, -0.087606184, 0.18663573, -0.008983968, -0.066781916, 0.105570115, -0.032935448) * inp_0_0_2;
result1 += M4(0.097299345, -0.103936605, -0.13320446, -0.06290396, 0.19124725, -0.07321107, -0.4880454, -0.27619848, -0.037303265, -0.3777792, -0.5950387, -0.124007404, 0.078949675, 0.03321689, 0.0733019, 0.05774906) * inp_0_1_2;
result1 += M4(0.20333347, -0.14115456, -0.067278996, -0.055886753, -0.02467401, 0.008477366, -0.020971794, -0.020626161, 0.05155074, -0.12981854, -0.12402829, -0.1479105, -0.13505472, -0.107800305, 0.05879969, 0.08440174) * inp_0_2_2;
result2 += M4(-0.12515935, -0.10952039, -0.5036868, -0.7293714, 0.04658027, -0.04346541, 0.007857314, -0.42868498, -0.080122955, -0.20113651, 0.29322314, -0.29412594, 0.016282452, -0.07843332, 0.033857, 0.024993725) * inp_0_0_0;
result2 += M4(0.114283055, 0.060297094, -0.001638138, -0.0144585045, 0.03947033, 0.04651931, 0.06912121, -0.23184288, 0.13306324, 0.062641725, 0.030513685, -0.48652786, 0.057582278, 0.105513535, -0.049731184, -0.10014686) * inp_0_1_0;
result2 += M4(0.0889825, 0.14437503, -0.19294755, -0.19962282, 0.009357248, 0.080204435, 0.028287232, -0.3432331, 0.034913454, 0.17236173, -0.32878333, -0.1853927, -0.046201345, -0.16155909, -0.09676449, -0.026275955) * inp_0_2_0;
result2 += M4(-0.07032446, -0.08939299, 0.52687913, -0.11217905, -0.047915068, -0.15508567, 0.4119621, -0.047812257, -0.031284165, -0.14812165, -0.47784707, 0.3732008, 0.07384976, 0.07980415, -0.025055448, 0.088181295) * inp_0_0_1;
result2 += M4(-0.11949556, 0.06441593, 0.12930696, 0.12457798, -0.088573955, 0.118469924, 0.18341014, 0.09169841, -0.4187616, -0.14781764, 0.1292117, 0.101874895, 0.21374804, 0.083969034, 0.10988698, 0.0677504) * inp_0_1_1;
result2 += M4(-0.17403442, 0.04799482, 0.22756267, -0.08860626, -0.05068873, 0.32905087, 0.004724715, 0.08212427, -0.084091075, 0.3010094, -0.04429565, 0.13968451, 0.09395252, -0.0448016, 0.08122711, 0.14587532) * inp_0_2_1;
result2 += M4(-0.14172886, -0.018250564, -0.18165179, 0.07125214, 0.0661465, -0.09890019, -0.3481381, 0.2449173, 0.06019565, 0.05909393, 0.45345604, -0.09759664, -0.051586166, -0.01904766, 0.007406485, -0.07516518) * inp_0_0_2;
result2 += M4(0.11002258, -0.047574695, 0.0387531, 0.10474755, 0.5098513, 0.102871545, -0.1367327, 0.18284789, 0.41686684, -0.02731252, -0.024810312, -0.0348688, -0.17226987, 0.108639605, -0.019329447, -0.13755813) * inp_0_1_2;
result2 += M4(0.056169793, 0.058565225, -0.16078013, -0.016668284, -0.106598526, 0.009809431, -0.10276664, 0.07573176, 0.032001562, -0.07472002, -0.09124576, -0.05108282, -0.056506813, -0.083514474, -0.031760074, -0.048143674) * inp_0_2_2;
result3 += M4(0.12584966, 0.12176012, 0.11329036, -0.11236541, 0.07464173, -0.054379527, 0.15591335, 0.1821474, -0.00018874797, -0.112910666, -0.20346834, -0.04218178, -0.032319088, -0.04860969, -0.015762394, 0.14442185) * inp_0_0_0;
result3 += M4(-0.14720677, -0.087223314, -0.14735419, -0.025635999, -0.038303126, 0.060975038, 0.067104205, 0.01148242, 0.16013667, -0.11588886, -0.3588029, 0.1050271, -0.014372156, 0.059035722, -0.011123294, -0.04750743) * inp_0_1_0;
result3 += M4(-0.101309925, 0.026271688, -0.01954613, 0.04366065, 0.015234038, -0.12840386, 0.07924234, 0.049698543, -0.22391076, -0.23933296, 0.020284384, 0.06249955, 0.003113936, 0.058912575, -0.015672008, -0.08750678) * inp_0_2_0;
result3 += M4(0.20432633, -0.025397765, -0.28465387, 0.12663603, 0.19770986, -0.1142236, 0.0783797, 0.1427702, 0.10694003, -0.27275515, 0.032805424, -0.41516998, -0.14209028, -0.11891035, 0.018445982, 0.09581492) * inp_0_0_1;
result3 += M4(-0.09441155, -0.10201534, -0.029719813, -0.0081881955, -0.29616642, 0.07741075, -0.16068065, 0.16025044, 0.4508852, -0.032448128, 0.44202632, 0.21837287, -0.028527986, 0.09709538, -0.05491064, 0.01880263) * inp_0_1_1;
result3 += M4(-0.0629424, 0.008730843, -0.0726123, 0.05616433, -0.37591395, -0.19386624, -0.36780638, 0.011082913, -0.3320397, -0.38668278, 0.0401788, 0.053440657, 0.12591551, -0.10686558, -0.09676831, -0.027042944) * inp_0_2_1;
result3 += M4(0.038255785, 0.080881596, -0.063445136, 0.04398085, 0.08663754, 0.3653846, 0.20329227, 0.0036737027, -0.1253861, 0.06420234, 0.12010523, -0.022900883, -0.07252228, -0.056308795, -0.04651577, 0.040440906) * inp_0_0_2;
result3 += M4(-0.025810385, -0.32374838, -0.027045645, -0.054303978, 0.076065525, 0.1412982, -0.4654469, -0.109536186, 0.018968012, 0.8376985, -0.28889802, 0.13872677, 0.014196669, 0.10646092, -0.00055662286, -0.008525485) * inp_0_1_2;
result3 += M4(-0.027968885, 0.0043746964, -0.2594495, 0.033112656, 0.23647158, -0.095448315, 0.11698989, -0.19243343, -0.0888589, 0.18741278, -0.34664664, -0.016979754, 0.04301603, -0.012074564, -0.019292075, -0.01241691) * inp_0_2_2;
const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0];
const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1];
const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2];
const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0];
const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1];
const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2];
const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0];
const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1];
const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.80579746, -0.027993957, -0.03149204, 0.036385097, -0.22116975, 0.16380966, 0.17553617, -0.042403683, -0.7344201, 0.35581782, -0.06365447, -0.06632529, -0.32514876, 0.697868, 0.020665761, 0.035389356) * inp_1_0_0;
result0 += M4(-0.3708257, 0.090753004, 0.06657469, 0.02013176, 0.6146282, -0.37126988, 0.004673092, -0.22344616, 0.7284068, -0.014581387, 0.09653279, 0.03781515, -0.30148262, -0.23102766, -0.13635501, 0.05080964) * inp_1_1_0;
result0 += M4(0.21503167, 0.2178568, -0.00875827, 0.035574738, 0.12297336, 0.06183686, 0.011520076, 0.024896868, -0.38745618, -0.48157352, 0.0013046638, 0.10057261, -0.049044393, -0.0332901, -0.18883982, 0.07583683) * inp_1_2_0;
result0 += M4(-0.29571286, -0.072309434, 0.029872902, -0.089263245, -0.1228344, 0.03886565, -0.16285399, 0.040150497, -0.079804115, -0.3473436, -0.008662054, 0.31262538, -0.27381068, 0.48178157, 0.12127497, 0.19270115) * inp_1_0_1;
result0 += M4(0.16761433, -0.37679473, 0.04442411, 0.08703103, -0.1237257, 0.24920896, 0.028556779, 0.083390735, 0.023897892, 0.3611991, 0.13412738, -0.011218204, 0.87282413, -0.73409814, -0.20164837, 0.19202058) * inp_1_1_1;
result0 += M4(-0.17981553, 0.08092092, -0.14265282, -0.13075168, -0.24107721, -0.07232994, -0.13101955, 0.10364074, -0.09253915, 0.2917661, -0.049002465, -0.16061172, 0.35175413, 0.53706855, -0.063529, 0.15674001) * inp_1_2_1;
result0 += M4(0.06720241, 0.16461252, -0.042230953, 0.095436305, 0.07933495, -0.17066886, -0.06415787, 0.096671544, 0.3095219, 0.12956254, -0.15678109, -0.21685599, 0.021835348, 0.24932103, -0.19100016, 0.029980795) * inp_1_0_2;
result0 += M4(0.056108512, -0.061839283, 0.09247113, -0.1268808, 0.052120525, 0.05163363, 0.012790571, 0.17020506, 0.025636775, 0.20968296, 0.06472261, 0.18726252, -0.1772639, -0.16332822, 0.25707254, -0.7353049) * inp_1_1_2;
result0 += M4(-0.11716834, 0.16685778, -0.22654499, 0.047235545, 0.09682734, -0.0934593, -0.037329786, -0.10888324, 0.18396075, -0.66791046, 0.11707622, -0.06380848, -0.05962427, -0.39658958, -0.001220417, -0.1506561) * inp_1_2_2;
result1 += M4(-0.30256915, -0.08785021, 0.04111069, 0.024083687, 0.22481635, 0.35989654, 0.07201828, 0.18286027, 0.111205675, -0.045193013, 0.20746897, -0.11606127, -0.02585468, -0.06787297, -0.18684897, -0.123954065) * inp_1_0_0;
result1 += M4(0.11005449, 0.060222883, -0.028346943, -0.023630911, -0.2237073, 0.06785667, 0.15593383, -0.12148223, 0.124045216, -0.16569805, 0.060391825, 0.28164724, 0.17747724, -0.16791753, -0.009441433, 0.0095080035) * inp_1_1_0;
result1 += M4(0.10407675, 0.09269647, 0.12106219, -0.046941996, -0.07999976, -0.06883506, 0.10797062, -0.0072842594, -0.2255177, 0.22776838, -0.11466433, 0.1006759, 0.16364473, -0.1127199, -0.11440534, 0.04005396) * inp_1_2_0;
result1 += M4(-0.02375577, -0.5040584, 0.050539777, -0.34995088, 0.10039975, 0.33994588, -0.009936835, 0.48041528, -0.023015598, -0.18106249, -0.13770032, 0.008419563, -0.20626022, -0.29146403, -0.07425878, -0.56961834) * inp_1_0_1;
result1 += M4(0.3426652, 0.05434062, -0.1433548, 0.15643291, -0.2725328, 0.029316852, -0.13102902, -0.29281294, 0.1698764, -0.18519872, -0.4075699, -0.22180676, 0.3014338, 0.030010022, -0.18621276, 0.0666403) * inp_1_1_1;
result1 += M4(0.25382352, 0.078338616, 0.1389806, 0.012003263, -0.15443075, 0.051149912, -6.3982814e-05, -0.12542224, -0.19831593, -0.21592548, 0.1352093, 0.13537993, 0.22809047, 0.048547823, -0.19335873, -0.042763613) * inp_1_2_1;
result1 += M4(-0.13580334, -0.46594024, -0.031463902, -0.13003573, 0.25139472, 0.44691414, -0.13506651, 0.8904165, -0.32380357, 0.04866464, 0.062134948, -0.21561934, 0.025555499, 0.00782905, 0.003782445, 0.4147364) * inp_1_0_2;
result1 += M4(0.12950507, 0.01798242, 0.21188955, 0.23724882, -0.15031907, -0.032759767, -0.35983413, -0.18728694, 0.2272555, 0.17424588, 0.00612866, -0.36439487, 0.001496469, 0.6302551, 0.8889821, 0.102486886) * inp_1_1_2;
result1 += M4(0.20060611, -0.074647486, -0.15349987, -0.10266082, -0.27757427, 0.11359979, -0.022492943, 0.047970477, -0.08753431, 0.0879873, 0.15428828, 0.042210978, -0.24266195, -0.061638005, 0.1846659, 0.13986216) * inp_1_2_2;
result2 += M4(-0.11157666, 0.040032834, 0.5364467, -0.51636815, 0.24502648, 0.09457116, -0.08448731, 0.70352745, -0.17394108, -0.09936502, -0.9605661, -0.30837172, -0.16062875, -0.14753148, 0.49396336, -0.7015954) * inp_1_0_0;
result2 += M4(-0.02669578, 0.14709085, 0.16291372, -0.06406242, -0.14241555, -0.22498156, 0.02981825, -0.13422869, -0.13833591, 0.22779313, 0.10065095, 0.14427195, -0.15209165, 0.07465833, -0.16209017, -0.035425283) * inp_1_1_0;
result2 += M4(-0.031840835, 0.04192169, 0.32067898, -0.036350798, -0.01419213, 0.02269091, 0.13441661, 0.07511779, 0.102578096, -0.33358073, -0.13682723, 0.15924774, -0.16458628, 0.12084649, -0.09754532, 0.52927446) * inp_1_2_0;
result2 += M4(-0.41214037, -0.038521014, -0.27180567, -0.36173418, 0.31734207, 0.014971054, 0.0703468, 0.47223726, 0.007776339, 0.00924476, 1.2648122, -0.092012316, -0.58993775, -0.024092646, 0.80320436, 0.23556955) * inp_1_0_1;
result2 += M4(-0.05239206, 0.22817752, -0.36423996, -0.19535916, -0.038659226, -0.27824724, -0.00087128166, 0.083281636, 0.44864982, 0.16111256, 0.2649179, -0.014780395, 0.15564826, 0.16244628, -0.29340106, -0.49700752) * inp_1_1_1;
result2 += M4(-0.061593905, -0.1297365, -0.16241243, -0.00039476357, 0.12215324, 0.17673038, 0.055865575, -0.027889268, 0.10839638, 0.16384503, 0.11688964, -0.019946037, -0.10539066, -0.054806218, -0.09738546, 0.24445133) * inp_1_2_1;
result2 += M4(-0.12578078, -0.205075, 0.052780814, -0.23285009, 0.37614715, -0.054824878, 0.009584838, 0.4567245, -0.29739252, -0.05052225, -1.013084, 0.2707763, 0.6057511, -0.51990503, -0.87410504, -0.2785208) * inp_1_0_2;
result2 += M4(0.2004051, 0.037149023, -0.017457237, 0.13375042, 0.20024443, -0.19202544, -0.14917326, 0.24760383, 0.019545095, 0.06326656, 0.1751175, 0.21071461, -0.26701745, 0.25239295, -0.0035460596, 0.13654819) * inp_1_1_2;
result2 += M4(-0.013569229, -0.006152015, -0.047173917, 0.121949755, -0.044810932, -0.023239478, -0.029584795, 0.007841605, -0.16589722, -0.0630316, -0.001852469, 0.06215476, -0.1329609, 0.03227917, -0.053458363, 0.17850445) * inp_1_2_2;
result3 += M4(0.025070436, 0.16086453, 0.112414956, 0.21188498, -0.014626541, -0.16685191, -0.121637136, -0.27171037, -0.06320327, 0.20200485, 0.33325258, 0.055514965, -0.0044771824, -0.0019308667, -0.45941144, 0.21069728) * inp_1_0_0;
result3 += M4(0.054169197, 0.14221777, -0.14847068, 0.044844236, 0.14496136, -0.105670646, 0.019387139, 0.13241582, 0.031969186, 0.023952436, 0.49852386, -0.20666973, 0.1112856, 0.116172306, -0.10776785, -0.041242983) * inp_1_1_0;
result3 += M4(-0.13228631, 0.007691737, -0.10440054, 0.029847624, -0.18436305, -0.021875955, 0.092024885, 0.06532177, 0.3536708, -0.07782537, -0.025518002, 0.037003256, -0.11556433, -0.2774043, 0.5473593, 0.056140568) * inp_1_2_0;
result3 += M4(0.07293323, 0.388111, -0.011949097, 0.3300222, 0.023543851, -0.29753804, 0.11527312, -0.69762874, 0.177008, 0.103600204, -0.3092143, 0.5988283, -0.06540777, 0.112146445, -0.57228476, 0.51734966) * inp_1_0_1;
result3 += M4(-0.40642163, -0.02770736, -0.31160015, -0.04136373, 0.6016959, 0.101973355, 0.12821077, 0.27792707, -0.5974763, 0.123601064, -0.18352285, -0.103846274, -0.75954914, -0.09867867, -0.52802485, -0.4534781) * inp_1_1_1;
result3 += M4(0.09911554, 0.07962954, 0.17727163, 0.04603436, -0.16546074, -0.090926334, -0.09564525, 0.055193227, -0.11192678, -0.057618223, -0.1926845, -0.018988563, 0.26524657, -0.06293465, 0.50114304, -0.12096346) * inp_1_2_1;
result3 += M4(0.08875437, 0.22209384, -0.03763888, -0.026142066, -0.1326924, -0.28610104, -0.032920193, -0.10480584, -0.060683724, 0.15724052, 0.22238971, -0.24399963, 0.018484157, 0.30565166, 0.16752024, 0.044499233) * inp_1_0_2;
result3 += M4(-0.06511505, -0.0766678, 0.013248883, -0.070329726, 0.2462654, 0.062470112, -0.15107043, 0.09034482, -0.004815134, -0.20278904, -0.042015783, -0.18718936, 0.15065442, -0.13471444, 0.6666442, 0.046496868) * inp_1_1_2;
result3 += M4(0.11395037, 0.067458704, 0.21671662, 0.07505498, -0.017285433, -0.045044903, 0.0035202259, 0.00059025775, 0.21604735, -0.09726756, 0.25353125, -0.030180145, 0.21087782, 0.26852834, 0.2336161, 0.06442098) * inp_1_2_2;
const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0];
const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1];
const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2];
const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0];
const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1];
const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2];
const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0];
const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1];
const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.03766979, -0.08056179, -0.08854746, 0.035484307, -0.14547704, 0.3121514, -0.0034201522, -0.061292347, 0.32482144, 0.30540428, -0.05579636, -0.056887843, 0.82792455, 0.105009325, 0.040515102, 0.0136745935) * inp_2_0_0;
result0 += M4(-0.59610444, -0.16480698, -0.12180218, 0.042428106, -0.011846201, -0.43110225, -0.05761246, -0.043320365, 0.04125343, -0.35117865, 0.060488436, -0.011760926, -1.0224962, -0.17664708, 0.046901956, 0.05896708) * inp_2_1_0;
result0 += M4(-0.17665511, 0.1039122, 0.1055115, 0.0027264422, -0.23885928, 0.29323265, -0.01075721, 0.011003133, -0.67466843, -0.12442501, -0.20570341, 0.11198604, 0.3865855, 0.10730156, 0.07678444, 0.010442706) * inp_2_2_0;
result0 += M4(0.067347296, 0.1817786, -0.043480635, -0.075561054, 0.16316809, -0.0040741805, -0.09545022, -0.042516086, 0.020710684, -0.40076464, 0.20453252, -0.11492074, -0.19871925, -0.0011955624, 0.20614977, -0.06628108) * inp_2_0_1;
result0 += M4(-0.14931571, 0.4051919, 0.07229135, -0.33534, -0.078287326, 0.1371281, 0.21449697, -0.5605463, -0.20284316, 0.6076998, 0.105426, -0.34358728, 0.2083488, 0.2090702, -0.22730374, -0.17580464) * inp_2_1_1;
result0 += M4(-0.07234333, 0.14280064, 0.08763627, -0.04190278, 0.12862535, -0.11629318, -0.07277401, -0.11705536, 0.0140262125, -0.1518685, -0.08528932, 0.027115842, -0.036973584, 0.13674013, -0.05770127, -0.0729128) * inp_2_2_1;
result0 += M4(0.17454943, 0.0028623461, -0.25035706, 0.096847214, -0.021465445, -0.037913002, -0.014528144, 0.028062802, 0.0067663887, -0.007522578, -0.035108957, 0.10272421, -0.049137414, 0.1500753, -0.043484136, 0.13418959) * inp_2_0_2;
result0 += M4(-0.35147277, 0.042980168, -0.24648991, 0.64089906, -0.22873044, 0.1683157, 0.12601686, 0.3635974, 0.019717928, 0.076717205, -0.19758675, 0.42872393, 0.06301686, -0.24920124, 0.113025695, -0.02136605) * inp_2_1_2;
result0 += M4(0.076150335, -0.13358304, -0.088095434, -0.042838972, -0.09911491, 0.044200946, 0.09117637, 0.17592216, 0.17295836, -0.0038708092, -0.06973247, 0.05787204, -0.047375232, -0.06256168, -0.00876463, 0.07975194) * inp_2_2_2;
result1 += M4(-0.05899723, -0.11571485, -0.20372225, -0.115710184, 0.23253533, 0.34710437, 0.055369627, 0.13548072, -0.092639565, 0.09931256, 0.059965976, 0.021718908, -0.14971997, -0.00047988573, -0.14818363, 0.10876782) * inp_2_0_0;
result1 += M4(-0.1046157, 0.19869405, 0.091861896, 0.061739154, 0.0908693, 0.026529782, 0.2235231, -0.09370779, 0.10733099, -0.09773162, -0.034448087, -0.0630786, 0.113586746, 0.16619971, -0.030872988, -0.022256615) * inp_2_1_0;
result1 += M4(0.07729319, 0.00030925445, -0.11726979, 0.036105894, -0.11658954, 0.14747393, -0.05470218, -0.061054308, -0.12817846, -0.29375055, 0.0577064, -0.019788228, -0.028909218, -0.10584332, 0.13685615, -0.07464996) * inp_2_2_0;
result1 += M4(0.07583872, 0.16824561, 0.03389074, -0.1881449, 0.15868169, 0.23530468, -0.021083478, -0.09577637, -0.09847804, 0.012454896, 0.0024183895, 0.4513884, 0.047143478, 0.084710434, 0.09038048, -0.3833039) * inp_2_0_1;
result1 += M4(-0.11914374, 0.42258713, 0.7859343, -0.017296927, -0.10565028, -0.1290651, 0.8525148, -0.08505465, 0.19309723, 0.115086086, 0.29163402, -0.35472438, 0.14218351, -0.03323899, 0.37400007, 0.3242928) * inp_2_1_1;
result1 += M4(0.3405064, -0.042510733, 0.01674581, 0.10683961, -0.40959674, -0.041394394, 0.19807759, -0.107208855, -0.30193782, 0.21183147, 0.3356506, 0.21611351, -0.097062424, -0.09846997, -0.07533649, 0.044627465) * inp_2_2_1;
result1 += M4(0.20594718, -0.1309974, -0.13831463, 0.53309727, 0.11087393, 0.4175082, -0.18584143, 0.6505715, -0.04683722, -0.08248506, -0.0775718, -0.32539076, 0.03582644, -0.30450013, 0.004552585, -0.12532435) * inp_2_0_2;
result1 += M4(-0.15584968, -0.24652146, -0.38984534, 0.038191695, 0.12462069, -0.19475195, -0.50814015, -0.1687857, 0.49276668, -0.05088113, -0.4862986, -0.5610158, 0.08213405, 0.34647205, -0.041837443, -0.2655649) * inp_2_1_2;
result1 += M4(0.28484055, -0.24571605, 0.001809205, 0.09730283, -0.38310075, -0.11404192, -0.14729105, 0.001117806, -0.15361874, -0.40855187, -0.23743884, -0.13728559, -0.10965173, 0.13549179, -0.026016712, 0.09393241) * inp_2_2_2;
result2 += M4(-0.08140796, -0.038616024, 0.37098834, -0.1264578, 0.054804895, 0.08373951, 0.17334665, -0.27731305, -0.00019079192, -0.020724788, 0.3065103, -0.09512473, -0.06984487, 0.045737676, 0.73080933, -0.6492554) * inp_2_0_0;
result2 += M4(0.17963673, -0.11963562, 0.25637552, -0.8440277, 0.036491808, -0.06636454, 0.029337985, -0.26160163, 0.05952046, -0.22164357, -0.46203947, 0.34766337, 0.10468024, 0.06082025, -0.40529066, 0.20030276) * inp_2_1_0;
result2 += M4(0.07172385, 0.016332837, -0.25597903, -0.10570468, -0.0436291, -0.010646609, -0.069141194, 0.086013, -0.0977308, 0.117663935, -0.37239766, -0.52912843, 0.01919297, -0.052498963, -0.115430504, -0.09248574) * inp_2_2_0;
result2 += M4(-0.0071896496, -0.101895474, -0.21142818, 0.5309608, -0.08796246, 0.016167572, -0.14559148, 0.5352692, -0.16729744, 0.019967262, 0.41177353, 0.017099312, -0.14715745, 0.0041162926, -0.19734962, -0.14318661) * inp_2_0_1;
result2 += M4(-0.31176683, -0.20916988, 0.049560886, -0.020679627, -0.4425161, -0.5414417, -0.12180878, -0.07098363, -0.29653472, -0.6001293, 0.20464998, -0.123481154, -0.10207596, 0.009288476, 0.34913906, -0.21708693) * inp_2_1_1;
result2 += M4(-0.18312567, -0.075250015, -0.009115986, -0.102817945, 0.023624303, 0.62924075, 0.21908034, 0.09576035, 0.16788477, 1.0865126, 0.29157346, -0.010388706, 0.12976916, 0.049611468, -0.12610257, 0.16017985) * inp_2_2_1;
result2 += M4(0.21321142, -0.110762864, 0.263516, -0.00035077406, 0.31477943, 0.017877026, 0.21491481, 0.2908071, -0.08536378, -0.078473195, -0.0693369, 0.49319047, 0.084742025, -0.021919392, -0.2806543, 0.68119633) * inp_2_0_2;
result2 += M4(0.17169175, -0.026704282, -0.1782343, -0.04654469, 0.2475104, -0.21855259, -0.055619393, 0.16019097, 0.3874455, 0.067389674, -0.539399, 0.16303119, -0.042980075, -0.12506025, -0.13447389, 0.17318402) * inp_2_1_2;
result2 += M4(-0.032363385, -0.045013648, -0.159732, -0.2160645, 0.07613958, -0.065699354, -0.059041727, 0.11999153, -0.10221494, -0.1118052, 0.06460223, -0.03676989, -0.20866872, 0.1329269, 0.119101554, 0.080520324) * inp_2_2_2;
result3 += M4(0.050020557, -0.13281223, -0.6285407, -0.098322794, 0.009279112, -0.14553995, -0.39140922, -0.2739743, 0.09011762, 0.059301212, -0.040628165, -0.21317561, 0.14555243, -0.015210672, -0.09337226, -0.08637809) * inp_2_0_0;
result3 += M4(0.20253022, -0.06744834, -0.18741313, 0.020000711, 0.25955987, -0.05943826, -0.20655715, 0.21952309, 0.1450646, -0.1484027, 0.42177495, -0.08035146, 0.045980375, 0.028455274, -0.13106935, -0.037160058) * inp_2_1_0;
result3 += M4(-0.003662712, 0.05660329, 0.18175964, 0.042434968, -0.21771742, -0.049197305, -0.04196098, 0.097810395, -0.3058253, 0.13121308, -0.20936102, -0.018527059, -0.17631271, -0.10618879, -0.09716888, 0.077401266) * inp_2_2_0;
result3 += M4(0.015053204, -0.10357405, -0.08270617, -0.82327193, 0.061972573, -0.12340828, -0.1648364, -0.45397255, -0.028674884, -0.036489088, 0.33178535, -0.1770896, -0.09116327, 0.35785344, -0.050984338, 0.26310417) * inp_2_0_1;
result3 += M4(0.4314411, 0.01223633, 0.16806503, 0.09533156, 0.4456282, -0.37144822, 0.42291847, 0.72557986, 0.4420476, 0.13680616, 0.65794, 1.0290453, -0.21717104, -0.033386447, 0.012986671, 0.12646627) * inp_2_1_1;
result3 += M4(-0.048367098, -0.124179296, -0.0872485, 0.117057145, -0.80431116, 0.033384796, -0.23559913, -0.04125127, -0.99784327, 0.23877387, -0.15340884, -0.024257725, -0.30609095, 0.28188694, 0.08041097, -0.100315034) * inp_2_2_1;
result3 += M4(-0.059385613, -0.14117067, 0.09526717, -0.21783385, 0.017243454, -0.3262665, -0.02148474, -0.18898958, 0.016378734, 0.20637065, 0.116262875, -0.17777236, 0.1407491, 0.0701688, 0.4515227, -0.15912586) * inp_2_0_2;
result3 += M4(0.12348503, 0.36637783, -0.015797785, 0.13961044, 0.19784181, 0.3755599, -0.23238938, 0.25053227, 0.13250534, 0.45180094, -0.671931, -0.21763574, 0.1935599, 0.20771664, -0.09815855, -0.09171383) * inp_2_1_2;
result3 += M4(0.054156836, 0.030792918, -0.17800978, -0.07895066, -0.23417887, -0.14882506, -0.223929, 0.048825473, 0.3687174, -0.3645227, -0.38629362, 0.024563534, 0.030262435, -0.38266075, 0.11994666, 0.16564392) * inp_2_2_2;
const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0];
const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1];
const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2];
const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0];
const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1];
const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2];
const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0];
const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1];
const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.29495022, 0.11208742, 0.106841594, -0.05365446, 0.57313126, -0.4494403, 0.119885065, 0.086006545, 0.12056381, -0.0042506205, 0.02783626, -0.0037318335, 0.020310108, 0.14965072, -0.04317924, -0.02895166) * inp_3_0_0;
result0 += M4(-0.31974226, -0.2445437, -0.08583646, 0.0016251688, -0.28970513, 0.38455558, 0.019531555, 0.0797684, 0.2673444, -0.11398991, -0.0380367, -0.031394865, 0.059599847, -0.10550953, 0.009367219, -0.02126539) * inp_3_1_0;
result0 += M4(0.17252293, 0.13551, -0.040680796, 0.02176304, 0.42423034, -0.11429217, 0.20910229, -0.25361112, -0.07972273, 0.05347899, -0.033090007, 0.032063935, 0.2717312, -0.045925114, 0.05416318, -0.014137833) * inp_3_2_0;
result0 += M4(-0.03109769, 0.21265663, 0.0311027, 0.0014637914, 0.14074995, -0.19224443, -0.08694858, -0.115513414, -0.24937887, -0.006384393, 0.0069294744, -0.020200372, 0.012645128, -0.05304434, -0.07804642, -0.07552554) * inp_3_0_1;
result0 += M4(0.20294411, -0.094047904, -0.01095806, -0.011711458, -0.46401906, 0.43761036, 0.13903992, 0.06623549, -0.44562262, 0.33752367, 0.071670495, 0.01252412, -0.22425528, 0.05579908, 0.026189324, 0.06792337) * inp_3_1_1;
result0 += M4(0.05679499, 0.12321127, -0.14637779, 0.051199995, -0.3304618, -0.3267019, -0.009611518, -0.15262729, -0.0068931617, 0.06403486, -0.052440725, 0.12372321, -0.15017636, 0.0856512, 0.054566868, -0.010270017) * inp_3_2_1;
result0 += M4(-0.12144253, 0.093165874, 0.008668523, 0.05952506, -0.10011975, 0.0864197, 0.123692766, -0.05759653, -0.1091348, -0.19094655, -0.13542114, 0.23133233, -0.075584225, 0.070890844, -0.005310891, 0.12324051) * inp_3_0_2;
result0 += M4(0.004995837, -0.094087824, 0.10061695, -0.5064727, 0.09344684, 0.09868076, -0.062511235, 0.3211314, 0.27536404, -0.019590437, -0.16202067, 1.3001449, -0.023138542, 0.06906857, -0.05708445, 0.3728746) * inp_3_1_2;
result0 += M4(-0.019570263, 0.054377574, -0.00232256, -0.08548877, 0.04817644, -0.048210196, -0.085408896, -0.024550438, -0.22949103, -0.013879933, -0.056096256, 0.18437423, -0.067218594, 0.014202425, -0.13863547, 0.21116072) * inp_3_2_2;
result1 += M4(0.036146615, 0.013621428, 0.06389005, 0.015884819, -0.023599382, -0.074193254, 0.05078572, 0.15187842, -0.10229264, 0.15093753, 0.08793461, 0.08042132, 0.033619784, 0.04474823, 0.051801044, -0.0008157672) * inp_3_0_0;
result1 += M4(-0.097061366, -0.0643221, -0.08716945, -0.06130004, 0.013693576, 0.10629488, 0.078100346, 0.14412904, 0.04525895, -0.19101572, -0.07638269, -0.032843836, -0.25849268, -0.021980496, 0.009396637, 0.045251813) * inp_3_1_0;
result1 += M4(-0.17055832, -0.10812759, -0.01227039, -0.029573428, -0.14228661, 0.16876334, 0.1929161, -0.11743154, 0.07551902, -0.079341285, -0.013903065, -0.037278887, 0.19030592, -0.03714314, -0.043247737, -0.05294146) * inp_3_2_0;
result1 += M4(0.009395449, 0.026537452, -0.051756654, 0.058558643, 0.23007026, -0.025109561, 0.20344813, -0.3484731, -0.26002294, 0.14403477, -0.00777815, 0.2728959, 0.16475354, 0.39614803, 0.0016874977, 0.43865284) * inp_3_0_1;
result1 += M4(-0.016648035, 0.0047965203, 0.047869764, 0.023705833, -0.08697201, -0.041092772, 0.05005459, 0.15075207, 0.020005358, -0.02162648, -0.10575344, -0.16797866, -0.34691387, 0.035508752, -0.013645476, 0.05564529) * inp_3_1_1;
result1 += M4(-0.03802822, -0.027450735, 0.037941135, -0.023904927, -0.15367433, -0.29868838, 0.047436792, -0.102356754, 0.047690663, -0.033999097, 0.035741877, -0.08892424, 0.4543563, -0.007879472, 0.057255913, 0.023165705) * inp_3_2_1;
result1 += M4(0.18063776, 0.2540675, 0.080258064, -0.101809986, 0.015387377, 0.29137203, -0.171282, 0.44966903, 0.05366323, -0.81717736, -0.2264742, 0.25719768, 0.13600393, 0.11447129, -0.09649239, 0.40596786) * inp_3_0_2;
result1 += M4(-0.06786864, 0.31856868, 0.46074358, 0.06056639, -0.18895267, -0.17157312, -0.3866874, -0.27717468, 0.5747938, -0.5983403, -0.9426843, -0.18670344, -0.30207878, -0.12596062, -0.119900465, -0.023541255) * inp_3_1_2;
result1 += M4(-0.3362306, 0.066847995, 0.089616835, -0.04950365, -0.04712824, 0.11286787, -0.06595386, 0.008212015, 0.11366448, -0.3031231, -0.20155849, -0.052571025, 0.2467723, -0.17784151, -0.06816751, -0.006897884) * inp_3_2_2;
result2 += M4(0.057641424, 0.04660521, 0.3696766, 0.08189519, 0.22080438, 0.13360305, 0.53906757, 0.24846327, 0.01835929, -0.007987262, -0.16189148, 0.2726527, -0.007053247, 0.01903356, 0.014662705, 0.36772516) * inp_3_0_0;
result2 += M4(0.07911079, -0.13481528, -0.058322202, -0.13396351, -0.10168342, -0.051659714, 0.17353629, -0.59071916, -0.09656504, -0.0711033, 0.0688546, 0.08524549, -0.0007430707, -0.113698855, -0.03499882, -0.01848087) * inp_3_1_0;
result2 += M4(0.020938164, 0.26634833, 0.18639141, 0.13070129, 0.13317911, -0.10879741, 0.058188345, -0.23624194, 0.011341375, 0.16469382, 0.011566769, -0.046088055, 0.07044332, 0.11243902, 0.009908079, -0.13593706) * inp_3_2_0;
result2 += M4(0.023662856, -0.0011879776, -0.2873027, -0.024719145, 0.072723016, 0.19892275, -0.64420444, 0.239314, 0.054989688, -0.13396193, 0.016820597, -0.095226094, 0.04397549, 0.054748468, -0.018948866, -0.05503418) * inp_3_0_1;
result2 += M4(-0.108812176, -0.16674753, -0.23964733, -0.42447883, 0.16442388, -0.34493363, 0.115771055, 0.17619237, -0.13381833, 0.061805177, -0.019932231, 0.012768884, 0.07645407, -0.33140036, -0.012146116, 0.07624066) * inp_3_1_1;
result2 += M4(-0.046233382, -0.0012422306, -0.020324348, 0.0088460045, -0.12771903, 0.032528497, -0.30057397, 0.18837008, 0.112465404, 0.21018627, 0.12777387, -0.25863507, -0.1505748, -0.14498894, -0.10935047, 0.019276252) * inp_3_2_1;
result2 += M4(0.09754316, -0.0080337105, -0.050319716, 0.41849554, 0.06113944, 0.13939197, 0.4176489, 0.27674627, 0.0629939, -0.10318419, 0.15471871, -0.14989042, 0.1357835, -0.016038246, 0.112977386, 0.028868923) * inp_3_0_2;
result2 += M4(-0.4165914, -0.16486332, -0.029821906, 0.21200718, 0.28633034, -0.04570394, -0.52902824, -0.09799475, 0.5879075, 0.14303465, 0.021712137, 0.03344538, 0.17814134, -0.12184443, 0.116855904, -0.015868817) * inp_3_1_2;
result2 += M4(-0.3638817, -0.031561133, 0.16308163, 0.15277834, -0.083109416, 0.055508107, 0.2629747, -0.09292154, 0.24552913, -0.09896762, -0.16894236, -0.049067426, 0.12722284, 0.16309449, -0.04677845, -0.048278175) * inp_3_2_2;
result3 += M4(-0.015166542, -0.065307885, -0.19476864, -0.040031414, -0.08872289, -0.2197687, 0.1126373, 0.14890485, 0.038293507, -0.0033478225, 0.05528932, -0.08918238, -0.03913681, -0.06430905, -0.068206355, -0.110878296) * inp_3_0_0;
result3 += M4(0.13779567, -0.081437804, -0.01956483, 0.11006419, -0.03941865, -0.014339028, -0.28124958, 0.09817652, -0.039985158, 0.07229311, 0.15747885, 0.075055346, 0.15964754, 0.012410672, -0.096030354, 0.011845242) * inp_3_1_0;
result3 += M4(-0.2744816, 0.084703445, 0.010796479, 0.014592686, -0.03443036, 0.049901113, -0.25975364, 0.105828844, -0.051962208, -0.032512184, -0.059668418, -0.019611642, 0.077559836, 0.040116545, -0.06307216, 0.012986583) * inp_3_2_0;
result3 += M4(-0.0558215, 0.20535807, 0.13425897, 0.014759043, -0.044445597, 0.14607826, 0.2664409, -0.4396098, 0.15285143, -0.065804616, 0.008680226, -0.20487873, 0.083042026, -0.0910931, 0.018881286, -0.32197076) * inp_3_0_1;
result3 += M4(0.19627242, -0.073445104, -0.048813142, 0.19253542, 0.57062805, 0.093300566, 0.036033083, -0.06300313, 0.11038725, 0.1422576, 0.2454956, 0.2003604, 0.12422689, 0.018294502, -0.024201892, -0.5362037) * inp_3_1_1;
result3 += M4(-0.12430419, 0.1440157, 0.25411555, 0.04896814, -0.08191185, -0.026761012, -0.050677367, 0.037998103, -0.34345704, 0.048226364, -0.28926206, 0.15748842, 0.17912494, 0.086586945, 0.2360227, 0.007811502) * inp_3_2_1;
result3 += M4(0.018639656, -0.22124954, -0.113009565, -0.0996511, -0.07426305, -0.41878295, 0.08260478, -0.18179214, 0.030706069, 0.29296303, -0.22616775, -0.03915413, 0.09505366, -0.12907475, -0.14309095, -0.12101502) * inp_3_0_2;
result3 += M4(0.045164797, -0.52015054, 0.3169932, -0.11353903, -0.07432713, 0.14472182, -0.42961255, 0.093835585, 0.13478391, 0.50959486, -0.42770112, 0.108112074, 0.12925583, 0.06178672, 0.03173976, -0.011596669) * inp_3_1_2;
result3 += M4(-0.20378658, -0.17083515, 0.067345574, 0.08651014, -0.02626551, -0.09840649, 0.27448764, 0.10196731, -0.16269182, 0.095573805, -0.2497439, -0.0036721958, 0.017172195, 0.12521318, -0.04723339, 0.055678573) * inp_3_2_2;
const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2);
imageStore(out_image, output_base + ivec2(0, 0), max(result0, V4(0.0)));
imageStore(out_image, output_base + ivec2(1, 0), max(result1, V4(0.0)));
imageStore(out_image, output_base + ivec2(0, 1), max(result2, V4(0.0)));
imageStore(out_image, output_base + ivec2(1, 1), max(result3, V4(0.0)));
}
//!DESC ArtCNN C4F16 DS (Conv2D-2-ReLU)
//!COMPUTE 24 32 12 16
//!HOOK LUMA
//!BIND conv2d_1
//!SAVE conv2d_2
//!WIDTH LUMA.w 2.0 *
//!HEIGHT LUMA.h 2.0 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
# define V4 f16vec4
# define M4 f16mat4
# define F float16_t
#else
# define V4 vec4
# define M4 mat4
# define F float
#endif
const ivec2 ksize = ivec2(3, 3);
const ivec2 offset = ksize / 2;
const ivec2 wg_size = ivec2(gl_WorkGroupSize);
const ivec2 isize = wg_size + ksize - 1;
shared V4 inp[4][isize.y][isize.x];
void hook() {
const uvec2 local_xy = gl_LocalInvocationID.xy;
ivec2 base = ivec2(gl_WorkGroupID) * wg_size;
for (uint y = local_xy.y; y < isize.y; y += wg_size.y) {
for (uint x = local_xy.x; x < isize.x; x += wg_size.x) {
const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2);
inp[0][y][x] = V4(conv2d_1_mul * texelFetch(conv2d_1_raw, input_base + ivec2(0, 0), 0));
inp[1][y][x] = V4(conv2d_1_mul * texelFetch(conv2d_1_raw, input_base + ivec2(1, 0), 0));
inp[2][y][x] = V4(conv2d_1_mul * texelFetch(conv2d_1_raw, input_base + ivec2(0, 1), 0));
inp[3][y][x] = V4(conv2d_1_mul * texelFetch(conv2d_1_raw, input_base + ivec2(1, 1), 0));
}
}
barrier();
V4 result0 = V4(0.044277187, -0.003769685, 0.014565699, 0.0028785786);
V4 result1 = V4(-0.0013655169, 0.0010824914, -0.016440798, 0.026956681);
V4 result2 = V4(0.07201445, 0.06504166, -0.022896532, 0.019721309);
V4 result3 = V4(-0.025113558, -0.012103399, -0.007747329, 0.029531373);
const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0];
const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1];
const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2];
const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0];
const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1];
const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2];
const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0];
const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1];
const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.014634767, 0.15630984, -0.029423967, 0.0072399154, -0.04355507, -0.022069488, -0.013310467, 0.026025603, -0.074033655, 0.18053663, -0.10821657, -0.08022404, -0.00030872333, -0.090354525, 0.03184815, -0.14863291) * inp_0_0_0;
result0 += M4(-0.025610065, -0.15965246, 0.0020090963, 0.0007068004, -0.14022209, -0.07630618, -0.020334993, -0.024759678, 0.22838855, -0.18860994, 0.061001968, -0.03926328, -0.16637982, 0.40926605, 0.10258026, 0.18161486) * inp_0_1_0;
result0 += M4(0.095354915, 0.048326947, 0.04872187, 0.0027520948, -0.048138056, 0.0018763769, -0.07391217, -0.04609482, 0.061720725, 0.114188656, 0.02012309, 0.11273987, 0.09328652, 0.02855171, 0.08577286, 0.018900903) * inp_0_2_0;
result0 += M4(-0.0021089504, -0.32101044, 0.15298578, -0.016247941, 0.0104974825, -0.13452874, 0.080836676, 0.017099392, 0.045597844, 0.26106447, 0.09887003, 0.03140661, 0.03765076, -0.04539478, -0.0680001, -0.017838618) * inp_0_0_1;
result0 += M4(-0.12891522, 0.31653318, -0.26245332, -0.033467766, -0.20582266, 0.030145617, -0.012431017, 0.009144622, -0.05345351, -0.16258076, -0.01368063, 0.1829753, -0.56432015, 0.004548779, -0.28909543, -0.04815182) * inp_0_1_1;
result0 += M4(0.05062229, -0.0022266612, 0.098771535, 0.07579765, -0.036776427, 0.21347974, -0.04098129, 0.018094227, -0.18730406, -0.119365536, -0.0023549348, -0.002902683, -0.55265886, -0.057339113, 0.10623818, 0.11207093) * inp_0_2_1;
result0 += M4(0.07169226, 0.033743925, 0.36917037, 0.22151147, 0.04440506, 0.036597893, -0.03051663, -0.04129989, 0.035774257, 0.15148096, -0.08635634, -0.18735746, 0.102615125, -0.23651586, 0.038719635, 0.014512702) * inp_0_0_2;
result0 += M4(0.3619398, -0.4759685, 0.35825154, 0.3112152, 0.13919957, 0.25496235, 0.14981593, -0.0322036, -0.34000197, -0.14486827, -0.18062139, -0.11848289, 0.075585306, 0.054790385, 0.07161929, -0.019073537) * inp_0_1_2;
result0 += M4(-0.4604835, -0.00013186327, -0.18777275, -0.034361757, -0.09540427, 0.10385504, -0.03184178, -0.014908893, 0.20893091, 0.028585754, 0.058512535, 0.032375026, -0.3179424, 0.10997816, 0.0030110697, 0.02999478) * inp_0_2_2;
result1 += M4(-0.03337578, 0.022388672, 0.010904485, 0.080152474, 0.02088438, 0.22108766, 0.085983746, -0.018951936, -0.14385422, -0.015390145, 0.07353964, -0.12680687, -0.42101434, -0.106439255, 0.028944317, 0.3162574) * inp_0_0_0;
result1 += M4(0.04000797, -0.10566103, 0.037907653, -0.05479594, -0.085618734, 0.056540187, 0.043981496, 0.14105529, 0.27771512, -0.17809473, 0.10856805, -0.06717238, -0.61159694, -0.4539899, 0.06197047, -0.14239468) * inp_0_1_0;
result1 += M4(0.031441744, 0.052026227, -0.0359873, 0.04414366, 0.107751384, -0.060534384, -0.017295673, 0.12851727, 0.014163988, 0.2492077, -0.0010027151, 0.32475546, -0.23782828, -0.18969488, -0.24189982, 0.069655806) * inp_0_2_0;
result1 += M4(-0.1641532, -0.011558361, -0.08760945, 0.027580395, -0.0034046413, 0.2055125, 0.081149034, 0.07157708, -0.014148349, -0.19612636, 0.113609575, -0.058149792, -0.16512875, -0.068568215, -0.010557955, -0.003134739) * inp_0_0_1;
result1 += M4(-0.16203202, 0.150089, 0.3624575, -0.10621861, -0.13786824, 0.26082137, 0.16279435, 0.0076275812, -0.090486474, -0.011490313, -0.5461046, -0.610537, -0.07946425, -0.33735472, 0.15519261, 0.38508213) * inp_0_1_1;
result1 += M4(0.15145469, -0.1384171, -0.25386083, 0.16733949, 0.069470726, 0.15541607, 0.05512024, -0.1651548, -0.017482812, 0.47807214, 0.19994624, 0.34548458, -0.14542283, -0.33229935, 0.027457071, -0.017986657) * inp_0_2_1;
result1 += M4(-0.3476195, -0.31253996, 0.43730617, 0.33695307, 0.07150534, 0.13329722, 0.018514723, 0.050586183, 0.06598951, -0.04738193, -0.083085515, 0.11844146, -0.05854192, -0.0052844044, -0.005816041, 0.0020355242) * inp_0_0_2;
result1 += M4(-0.12351043, 0.08294355, -0.9955969, -1.0773562, 0.20348985, 0.052636065, 0.09385937, -0.021512419, 0.17754123, -0.17032368, 0.104445666, 0.0667925, -0.14855188, -0.011046104, 0.041475873, -0.24603228) * inp_0_1_2;
result1 += M4(-0.39967984, 0.36878276, 0.5093688, 0.4667422, 0.059835784, 0.10701772, 0.18508513, 0.018913126, 0.1470129, -0.17738493, 0.03374452, -0.13290527, -0.0014256088, -0.1029254, 0.011276339, 0.10154437) * inp_0_2_2;
result2 += M4(-0.05962457, -0.004715072, 0.02234217, -0.05710583, -0.026399445, -0.12493333, 0.10754376, 0.17489164, -0.091370255, 0.023207717, -0.09124297, -0.015216131, 0.13677351, 0.1533294, -0.13948523, -0.4361088) * inp_0_0_0;
result2 += M4(0.011737732, 0.034070693, -0.014549742, 0.023983805, -0.082799725, -0.08983465, 0.18321748, 0.10799907, 0.09588053, 0.02198347, 0.0984446, 0.0515354, 0.033660185, 0.12984885, -0.26386133, -0.20809138) * inp_0_1_0;
result2 += M4(0.15357424, -0.06915272, 0.06550216, 0.04612258, -0.27024624, -0.04948926, 0.13293487, 0.03289013, 0.014061624, -0.17260186, -0.15380125, 0.05142931, 0.15461798, -0.034638174, -0.05765393, -0.1436692) * inp_0_2_0;
result2 += M4(0.29907557, 0.078585014, -0.0070183896, -0.010081835, -0.019700088, -0.017014056, 0.024523254, 0.13058147, -0.17817716, -0.15394163, -0.2234924, -0.014181057, 0.16166586, 0.15966643, -0.47799465, -0.4482853) * inp_0_0_1;
result2 += M4(-0.009615613, -0.34115693, 0.09974929, 0.07560026, -0.16909823, 0.12662643, -0.10565487, 0.21221353, 0.04638542, -0.18350223, -0.38520643, -0.16398309, 0.076108105, -0.19730397, -1.9648284, -0.43060794) * inp_0_1_1;
result2 += M4(-0.21301995, 0.25342563, -0.02236922, 0.080391206, -0.086874254, -0.112069696, 0.1745379, -0.030322224, -0.10684035, 0.21604033, -0.30554447, 0.120111726, 0.14993273, 0.1045365, 0.12534261, -0.13708992) * inp_0_2_1;
result2 += M4(-0.45374268, -0.013988875, -0.39868528, -0.6484394, -0.025964694, -0.08057576, 0.25853273, 0.21734641, 0.2938183, 0.02642324, -0.02849347, 0.19621953, -0.17958161, 0.053583346, -0.0813751, -0.31958708) * inp_0_0_2;
result2 += M4(0.03423103, 1.5701689, -0.66674, -0.27525982, -0.46953365, -0.094777554, -0.2098449, 0.25355667, -0.11566727, -0.23263042, 1.0899607, -0.3195421, 0.022980163, -0.17261745, -0.3722295, -0.5930962) * inp_0_1_2;
result2 += M4(0.17055535, -0.41756687, -0.76407987, -0.07344739, 0.044425845, -0.18455426, 0.2442799, -0.0150920935, -0.0071766865, 0.096144944, 0.21722835, 0.13363552, 0.07872144, -0.0025218495, -0.048890345, -0.17932852) * inp_0_2_2;
result3 += M4(-0.01389366, 0.038920455, -0.04891502, -0.067761436, 0.016736465, -0.009674868, 0.0045855423, 0.01597171, -0.07564618, -0.07989838, -0.11698872, 0.014528848, 0.0057780454, 0.06276523, 0.01936233, -0.04028968) * inp_0_0_0;
result3 += M4(0.0076031545, -0.03817588, 0.054094262, 0.050268263, 0.012934474, -0.046132997, 0.021750458, 0.0695329, 0.051675014, 0.04603168, 0.034410257, -0.025720796, 0.12969477, -0.17309085, -0.11458307, -0.052167386) * inp_0_1_0;
result3 += M4(-0.02426324, 0.03028118, 0.010480843, -0.03159594, 0.051091306, -0.003098713, -0.027490126, 0.066387095, -0.15151627, 0.047113728, 0.089175396, 0.01024784, 0.18084714, 0.18693674, 0.017071737, -0.06197378) * inp_0_2_0;
result3 += M4(-0.051275726, 0.10429716, -0.09589524, -0.062424902, 0.02761969, 0.008939025, 0.084714286, 0.067290224, 0.10786927, 0.056733806, 0.015018431, -0.09346906, -0.14848347, 0.14067471, -0.08346787, -0.03666982) * inp_0_0_1;
result3 += M4(0.17836887, -0.13172117, 0.12725402, 0.13476504, 0.03520397, -0.14093514, -0.0020699543, 0.27004442, 0.21125396, 0.039928548, 0.0450391, 0.093295604, -0.22072269, 0.33785778, 0.4795142, -0.04699993) * inp_0_1_1;
result3 += M4(-0.1407182, 0.13486551, -0.053121936, -0.16674417, 0.08382855, 0.04568961, 0.039359618, 0.17024429, 0.1655759, 0.019997666, -0.11520099, 0.0061305654, -0.1263614, 0.2075397, 0.07383819, 0.12338807) * inp_0_2_1;
result3 += M4(-0.07042244, -0.8911705, 0.301547, -0.021055175, 0.060619745, -0.45262864, -0.06276716, 0.07503793, -0.019952798, -2.9853837, -0.07585689, 0.017160557, -0.010893544, 0.16166717, 0.022283293, 0.09610125) * inp_0_0_2;
result3 += M4(0.21661185, -0.7806377, 0.20403957, 0.9482149, 0.06337114, -0.83101803, 0.08590058, 0.047518075, -0.10200477, -3.0411434, -0.020257324, -0.15889971, -0.05920785, 0.16311024, -0.004201432, -0.1425621) * inp_0_1_2;
result3 += M4(0.29969993, -0.026688403, -0.07981868, 0.24880359, 0.09598571, -0.6582316, 0.06554869, 0.21911867, -0.00036072265, -2.412395, 0.1076175, -0.026406476, -0.021368412, 0.28235295, -0.005661217, 0.0547056) * inp_0_2_2;
const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0];
const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1];
const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2];
const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0];
const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1];
const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2];
const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0];
const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1];
const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.057321046, 0.053859103, -0.0299491, 0.023096962, -0.0073347692, -0.012385915, 0.12310169, -0.00026481555, 0.08654579, -0.24458945, -0.087337196, 0.14775553, -0.039497606, 0.108056985, -0.016828354, 0.03266492) * inp_1_0_0;
result0 += M4(0.10106384, 0.0098461015, -0.08190356, -0.004158164, -0.18854575, 0.4606043, -0.040468078, 0.03470337, -0.19434623, -0.501395, -0.13892312, -0.07441061, 0.030041184, 0.15185308, -0.14214228, -0.11128363) * inp_1_1_0;
result0 += M4(0.13830176, -0.02194429, -0.01805186, -0.009180096, -0.09819206, 0.07643585, 0.074552655, 0.011912278, 0.27451447, -0.055647332, -0.021103159, 0.02330324, 0.21019225, -0.019286422, 0.12997612, 0.16320619) * inp_1_2_0;
result0 += M4(-0.03492198, -0.074920535, 0.052158944, 0.056553755, -0.16375586, 0.023614012, 0.046315745, 0.05552825, 0.0014883408, -0.311755, -0.020377366, 0.02991688, 0.18095767, -0.025379878, -0.116475224, -0.079954505) * inp_1_0_1;
result0 += M4(0.17044592, 0.20644747, -0.027797032, -0.07176091, -0.04449115, 0.17634824, 0.009181716, 0.12777258, 0.2890608, 0.105031915, 0.7392829, 0.29894456, 0.05294484, -0.388827, 0.091156386, 0.049468376) * inp_1_1_1;
result0 += M4(-0.41188475, -0.00051654025, -0.10447215, -0.03876539, -0.5443957, 0.052119132, 0.106150664, 0.08782793, 0.4962257, -0.020130487, -0.008338209, -0.014943302, 0.38697872, -0.3454212, -0.024419049, -0.03157343) * inp_1_2_1;
result0 += M4(-0.22295529, 0.025243433, 0.02631261, -0.024623772, -0.014794281, 0.026001614, 0.0076207914, -0.042967085, 0.024598451, -0.06407118, 0.022959631, 0.054899387, -0.035591844, -0.1476001, 0.060459446, 0.028730432) * inp_1_0_2;
result0 += M4(-0.04730221, -0.09425716, 0.07300297, 0.08571772, -0.06593263, -0.059201233, 0.018556554, 0.012733373, 0.21346302, 0.05125445, 0.049463913, 0.021796405, 0.0032378077, -0.054082617, 0.06635155, 0.022058709) * inp_1_1_2;
result0 += M4(0.3140107, 0.012376735, 0.07819475, 0.073532306, -0.050842572, 0.1259186, -0.04731503, -0.0040802998, 0.049030453, -0.19392884, -0.012986976, 1.6971964e-05, 0.05600981, -0.08525247, -0.01950282, 0.0022216714) * inp_1_2_2;
result1 += M4(0.30657268, 0.032623928, -0.22862461, -0.11083645, -0.015801003, 0.04147296, -0.036234114, 0.15010823, 0.07499895, -0.11810654, -0.037902914, -0.24042296, 0.05575736, 0.0073987087, -0.004096944, -0.04667532) * inp_1_0_0;
result1 += M4(-0.116235174, -0.10606845, 0.11162732, -0.44803506, 0.06697123, 0.20626433, 0.15276845, 0.046309594, -0.25704938, -0.32768592, 0.099346414, 0.07941797, 0.19700924, -0.038505454, 0.029507188, -0.40108195) * inp_1_1_0;
result1 += M4(0.101845436, 0.16913016, 0.0035905272, -0.23084931, 0.20762274, 0.0064020725, -0.12577556, 0.25008404, -0.0035024118, -0.5985989, 0.113010995, -0.44113696, -0.17561768, -1.0940877, -0.23943736, 0.11547279) * inp_1_2_0;
result1 += M4(0.23035224, 0.2116884, -0.08572305, 0.22224797, 0.019741915, -0.06574452, -0.030806364, 0.08874964, -0.28405023, 0.08581093, 0.01973589, 0.06577321, 0.03806914, -0.048923597, 0.009378118, 0.015447064) * inp_1_0_1;
result1 += M4(0.3014894, 0.023111667, 0.12945335, -0.61209434, 0.15007457, 0.062464364, -0.22989577, 0.09670528, -0.48571834, -0.30086595, 0.4103918, -0.10922932, -0.14738347, 0.030656854, 0.0013381391, 0.1469542) * inp_1_1_1;
result1 += M4(-0.19467439, -0.14520124, -0.017115602, 0.47857285, -0.07640264, 0.043847974, 0.13076276, 0.83863395, 0.08228972, -0.052448384, -0.19783954, -0.6784934, -0.013913508, -0.38232347, -0.4405589, -0.05094737) * inp_1_2_1;
result1 += M4(0.21441185, -0.054897238, -0.10568191, 0.1855502, 0.018933177, -0.030876845, 0.0005181038, -0.007279288, -0.06466442, 0.10263382, 0.028937435, -0.010395412, 0.034320485, 0.06137796, -0.040333863, -0.06866654) * inp_1_0_2;
result1 += M4(-5.7975823e-05, 0.026788734, 0.11443162, 0.27297434, 0.025297673, -0.12407765, 0.0032770426, 0.36668846, 0.022925714, 0.071118385, -0.011136096, -0.32670555, 0.059126757, 0.07819804, 0.014679438, -0.10881568) * inp_1_1_2;
result1 += M4(-0.020675838, 0.13560276, 0.13995661, -0.26323274, 0.054114692, -0.40400267, -0.029512106, 0.30100182, -0.12764353, 0.2113248, -0.050346904, -0.19945931, 0.06737086, -0.014390057, -0.09339663, -0.3682717) * inp_1_2_2;
result2 += M4(-0.06776904, -0.17906755, 0.33880135, 0.3015638, 0.12696397, 0.05359989, 0.010746231, -0.14514397, 0.12944835, -0.05202778, 0.02363327, 0.15484537, 0.112722866, -0.107847966, -0.015603026, 0.19676794) * inp_1_0_0;
result2 += M4(-0.07149168, 0.07011049, -0.007347454, 0.06839382, 0.05958515, -0.105959654, 0.009165822, 0.034668233, -0.39178568, -0.20354827, 0.09952585, 0.10311294, -0.0049763, -0.13143009, -0.0032570977, -0.013385735) * inp_1_1_0;
result2 += M4(-0.005899859, -0.11422312, 0.18228857, 0.044557884, 0.0873693, 0.07684735, -0.02715937, -0.03885502, -0.11086569, 0.12565431, 0.087907344, 0.06195444, -0.19221805, -0.025161821, -0.13800278, -0.0089707915) * inp_1_2_0;
result2 += M4(-0.055366457, -0.33638182, 0.37802935, 0.25762385, -0.013914628, 0.06616923, -0.00837364, -0.22365782, -0.15368566, -0.0127001945, 0.36219886, -0.2100151, -0.12239298, -0.10822355, 0.07385739, 0.15493166) * inp_1_0_1;
result2 += M4(0.16826054, -0.29359353, -0.26931676, 0.18831216, 0.5264418, -0.13475014, -0.57072085, -0.8325909, -0.069185644, 0.29470894, 0.19252887, -0.072568044, -0.13387288, 0.07898423, 0.34800267, 0.49774054) * inp_1_1_1;
result2 += M4(-0.054599456, 0.11148192, -0.1357121, 0.02375308, 0.06711263, 0.071961, 0.29140726, -0.31375977, -0.111368805, 0.041955654, -0.087637834, -0.058202393, 0.33927858, 0.13471937, -2.1211426, 0.26503927) * inp_1_2_1;
result2 += M4(0.17403923, -0.13595451, -0.053004354, -0.117963396, 0.09073441, 0.00488163, -0.09467348, -0.2792933, -0.036479052, -0.017435621, -0.19307491, -0.090628974, -0.058461964, 0.022112835, 0.044139117, 0.08073148) * inp_1_0_2;
result2 += M4(0.068919815, 0.17261443, 0.36675793, -0.10162144, 0.02905981, 0.017575355, 0.14280069, -0.46455213, -0.042059883, 0.13099466, -0.89741933, 0.10530428, -0.13663234, -0.10670392, -0.14754881, 0.27423796) * inp_1_1_2;
result2 += M4(-0.027487874, 0.011236144, -0.14940494, -0.09374742, 0.12077163, -0.054499656, -1.9882382, -0.3360065, -0.06666102, 0.04101125, 0.18246073, -0.0642536, -0.080615625, -0.10456731, 0.0668002, 0.1896114) * inp_1_2_2;
result3 += M4(0.019152254, -0.024938367, -0.12263788, -0.21224716, 0.0012947255, 0.022558855, 0.056798324, -0.015610633, -0.15135229, -0.027307037, -0.057479627, -0.06439594, -0.015079679, -0.043502446, -0.039853066, -0.026641052) * inp_1_0_0;
result3 += M4(0.20018214, 0.17250511, 0.041895084, -0.010765727, 0.05415768, 0.057831973, 0.046640217, -0.049575217, 0.007107481, 0.17912689, 0.02634632, -0.25308734, -0.025803518, 0.41781902, 0.008137001, 0.024117699) * inp_1_1_0;
result3 += M4(-0.34954807, 0.09161861, -0.051454097, -0.069458865, -0.36721495, -0.08972565, 0.046043105, -0.055432994, -0.00808699, -0.11479828, -0.011712863, -0.08195792, -0.2824482, -0.2746848, -0.061077397, -0.09002705) * inp_1_2_0;
result3 += M4(0.052527335, -0.64194244, 0.015442956, -0.2151181, 0.0001325505, -0.08178861, 0.08658557, 0.040494245, -0.047189698, -1.0105958, 0.04988385, 0.0031174703, -0.015738374, 0.20561613, -0.12841596, -0.09555848) * inp_1_0_1;
result3 += M4(0.518541, 0.3450534, 0.14350261, -0.23846437, -0.0342463, 0.08253805, 0.040425297, 0.045978785, -0.12789232, -1.1581084, -0.21066931, -0.05341992, 0.09373755, 0.45204666, -0.12531018, -0.017535415) * inp_1_1_1;
result3 += M4(-0.10217886, -0.10415733, 0.044932682, 0.0208779, 0.07507747, 0.022418318, 0.04249721, 0.07729961, -0.05535511, -1.0112993, 0.023070825, -0.1901502, -0.08592825, -0.70491475, 0.0095128, -0.17512304) * inp_1_2_1;
result3 += M4(-0.07820092, 0.4001301, -0.034423947, -0.03550501, 7.203649e-05, -0.3878972, 0.011186198, 0.06360504, 0.031479735, 0.13187805, -0.00063615554, -0.052595768, 0.02203997, -0.26508287, 0.055894937, -0.007758194) * inp_1_0_2;
result3 += M4(0.20748435, -1.1345264, 0.05670349, 0.15132661, -0.09760737, -0.81726766, 0.06930857, 0.08885542, 0.081142016, 0.35544363, 0.054454174, -0.059337378, 0.0035523912, -1.7387451, 0.0896343, -0.027776714) * inp_1_1_2;
result3 += M4(0.04555756, -0.1331195, 0.0243432, -0.027577097, -0.07165021, 0.26079252, -0.011086633, 0.08233047, 0.016859751, -1.6297228, -0.027284605, -0.047975987, -0.015951846, -1.4781954, 0.023418473, -0.036843766) * inp_1_2_2;
const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0];
const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1];
const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2];
const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0];
const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1];
const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2];
const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0];
const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1];
const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.05245787, 0.12742041, 0.042222377, 0.025327051, -0.1278877, -0.13577572, 0.07758009, 0.16354473, -0.07209328, -0.067111224, 0.021558063, 0.025444176, -0.027242167, -0.086679734, -0.045669444, -0.0038859942) * inp_2_0_0;
result0 += M4(0.090672754, -0.15019369, -0.035968777, 0.080244906, -0.23888364, 0.22086069, -0.1118529, -0.09757003, -0.051360104, -0.099072225, -0.0064880624, 0.021462895, -0.012929184, -0.12400293, 0.03340523, 0.028858382) * inp_2_1_0;
result0 += M4(-0.0938274, 0.14826979, -0.03521766, -0.048983887, 0.005948068, 0.019412184, 0.041324906, -0.017393446, -0.039915707, -0.06274043, -0.034093108, -0.0106262155, 0.062472336, -0.10723927, -0.033728104, -0.0003482084) * inp_2_2_0;
result0 += M4(0.012575323, 0.21428107, 0.024009118, 0.0072234366, 0.110534936, 0.038000148, -0.25788772, 0.57073885, -0.093418255, 0.0489895, -0.032271013, 0.040298827, -0.01656662, -0.10717151, -0.05323044, 0.009139213) * inp_2_0_1;
result0 += M4(0.5831522, -0.17538753, 0.18433517, 0.16077118, 0.1501084, -0.33913323, 0.24974765, 0.24317762, -0.17460136, 0.08797354, -0.0044557275, 0.0032939329, 0.017071487, -0.31103528, 0.025371121, 0.05131224) * inp_2_1_1;
result0 += M4(0.39614585, -0.02760399, 0.015339275, -0.003060968, -0.012000301, -0.051808078, 0.031300403, 0.08704484, -0.021450762, 0.09426401, -0.009409565, -0.0039392645, 0.21290441, -0.27999678, -0.06340699, -0.102655925) * inp_2_2_1;
result0 += M4(-0.078089006, 0.17946592, -0.051808182, -0.039482597, 0.10982464, 0.006621336, 0.28069186, 0.2825716, 0.08154041, 0.061886646, 0.076081514, 0.03819258, 0.10033133, -0.10218606, 0.09323228, 0.052600436) * inp_2_0_2;
result0 += M4(-0.12375716, -0.20972097, 0.041274253, 0.05129408, -0.16977555, -0.055903092, -0.016043866, -0.16422828, 0.21849725, 0.082607955, 0.08996517, 0.016130572, 0.042123027, -0.24660805, 0.30570075, 0.18885633) * inp_2_1_2;
result0 += M4(0.2570936, -0.031269316, 0.01752135, -0.01341762, -0.034155574, 0.04749098, -0.023148425, -0.037623752, -0.11057623, 0.12646434, 0.08996353, 0.015585094, 0.38278243, -0.11085706, 0.05663836, -0.007234258) * inp_2_2_2;
result1 += M4(-0.01663805, 0.02310054, -0.0032239282, -0.067230605, 0.19121546, -0.2220636, -0.020307856, 0.36737743, -0.10305166, 0.05811332, 0.01189378, -0.022137491, 0.004945409, -0.0064889216, -0.029415946, -0.07888425) * inp_2_0_0;
result1 += M4(-0.14811738, -0.37699458, 0.27487242, 0.13421494, -0.2590526, 0.47328016, 0.010816105, 0.40685824, -0.18497397, 0.095671766, 0.031281278, 0.023830207, -0.11345598, -0.09300524, -0.010809514, 0.0020269547) * inp_2_1_0;
result1 += M4(0.061775193, -0.1712892, 0.041075125, 0.20546062, 0.031466, -0.15585797, 0.014810759, 0.22489391, -0.1092278, 0.21315832, 0.036377225, 0.08622906, 0.017885432, -0.17632127, 0.018369181, -0.07337717) * inp_2_2_0;
result1 += M4(0.19034968, -0.12876624, -0.002189227, -0.096818306, 0.21685769, 0.34736016, 0.31792116, 0.048570324, -0.09962518, 0.17246957, 0.09426425, 0.013819997, -0.12065603, 0.05699758, 0.06912247, -0.07408931) * inp_2_0_1;
result1 += M4(0.22381315, 0.81377786, -0.131091, -0.33007315, -0.06802222, -0.8026919, 0.12802102, -1.1894389, -0.01698604, -0.038668323, 0.17198865, 0.058861967, -0.18650739, 0.11578547, -0.07472778, -0.10268028) * inp_2_1_1;
result1 += M4(-0.071625575, 0.2144827, 0.022619078, 0.13562746, 0.093113266, 0.021232337, -0.1303427, -0.15647937, -0.2104433, 0.23855501, 0.22365434, 0.11294459, -0.16526905, 0.09619447, 0.04934603, -0.40786266) * inp_2_2_1;
result1 += M4(0.10064239, -0.04736303, -0.0070879846, 0.017786024, -0.054937042, 0.22450395, 0.13634747, 0.5500765, -0.086268514, 0.1068056, 0.075488545, 0.16452391, -0.100230396, 0.13944808, 0.018234892, -0.09347855) * inp_2_0_2;
result1 += M4(0.008185982, 0.02580795, -0.06922441, 0.39691514, 0.14592198, 0.34882262, 0.039981134, -0.05594578, -0.067179784, 0.16566387, 0.023238637, -0.004874816, 0.04108678, 0.14870435, 0.18564744, -0.17238356) * inp_2_1_2;
result1 += M4(0.03345898, 0.024706494, -0.038273126, -0.19032453, 0.032221705, -0.027420525, -0.008488926, -0.015636519, -0.029178573, 0.26111493, 0.060684104, 0.047895722, -0.02992049, -0.054927755, -0.14593197, -0.4119801) * inp_2_2_2;
result2 += M4(0.18225953, 0.012950922, -0.013866792, 0.043620367, -0.09634382, 0.1295574, 0.0038702164, -0.0011518892, 0.003963204, 0.11485575, 0.10470611, -0.06498091, -0.035300884, -0.03904593, 0.004180129, 0.08727307) * inp_2_0_0;
result2 += M4(0.18973833, 0.21122196, 0.010338642, -0.025594281, 0.012766486, -0.0034648252, 0.15152732, 0.058770522, 0.02350035, 0.19883706, 0.22473219, 0.08871804, -0.04612259, 0.0058129514, 0.049838036, 0.07630988) * inp_2_1_0;
result2 += M4(-0.24278288, 0.0937234, 0.077520415, 0.14284946, 0.12666269, 0.04793069, -0.054602575, -0.014613225, -0.10137733, 0.08561996, 0.17945066, 0.060258545, 0.027247187, 0.04935797, -0.049956676, 0.0482109) * inp_2_2_0;
result2 += M4(0.016425801, -0.08777978, -0.10486159, 0.020694451, -0.21469139, -0.320999, 0.07249864, 0.11032764, 0.0116639715, 0.1033857, 0.1073603, -0.0606767, -0.23564965, 0.029830692, 0.07067359, 0.07812588) * inp_2_0_1;
result2 += M4(-0.12570058, 0.15321311, -0.19042765, -0.17150038, 0.0071306913, -0.064806096, 0.083851196, -0.10297927, -0.18961534, 0.14536737, 0.24145201, 0.024179677, -0.4475021, 0.18808544, 0.13944514, 0.11471266) * inp_2_1_1;
result2 += M4(-0.04329208, -0.102230474, -0.14077887, -0.1455721, 0.010968888, -0.033099134, -0.047514163, -0.04225756, -0.27817902, 0.193033, 0.23406045, -0.034473438, -0.21932313, 0.22107722, 0.13216983, 0.047587793) * inp_2_2_1;
result2 += M4(0.18999028, -0.021009836, 0.12522012, 0.026489483, -0.07996968, -0.00045964748, -0.33249003, -0.046706114, -0.1460439, 0.0022909723, 0.02446258, 0.0041036597, -0.081839465, 0.09676201, -0.038614098, 0.035158537) * inp_2_0_2;
result2 += M4(-0.023535606, 0.17872299, 0.3698135, -0.061200347, -0.21729006, 0.13345364, -0.31766793, -0.14105877, 0.027014088, 0.110602126, 0.019382484, -0.07007112, -0.550843, 0.10007874, 0.06388137, 0.1605647) * inp_2_1_2;
result2 += M4(-0.0632529, -0.03677373, -0.08668102, -0.021147251, 0.022946224, -0.01554489, 0.24977423, 0.08550634, 0.09633588, 0.00942261, -0.058447283, -0.11685332, -0.41660216, 0.075901665, -0.5861667, 0.09059572) * inp_2_2_2;
result3 += M4(-0.10185243, -0.04096928, 0.0644769, 0.08752083, -0.09376103, 0.012330129, -0.036529038, 0.12024477, 0.01705568, -0.015592525, 0.03592273, -0.02709768, 0.01932748, -0.049810838, -0.024598582, -0.064706616) * inp_2_0_0;
result3 += M4(-0.31974673, -0.0040072883, 0.09960042, 0.005202683, 0.005240544, 0.10535383, 0.024910176, 0.07988779, 0.043493006, 0.014817267, -0.013197175, -0.09177089, 0.001804822, 0.021216314, 0.0011425817, -0.0019903353) * inp_2_1_0;
result3 += M4(-0.054151267, -0.07719161, -0.017777406, -0.08397006, 0.0035161783, -0.06851633, 0.05399078, 0.0036892744, 0.09071474, 0.0022154385, -0.010603513, -0.092870176, 0.053248636, 0.02053424, -0.011789118, -0.029040914) * inp_2_2_0;
result3 += M4(0.0921724, 0.26840508, 0.056612138, 0.010450419, -0.37549165, -0.025144171, 0.2773017, 0.11000934, -0.042817507, 0.017823583, 0.0071191904, 0.04034717, -0.015570028, 0.013171149, -0.021756306, -0.032700054) * inp_2_0_1;
result3 += M4(0.3621139, 0.2809216, 0.32998696, -0.04528144, 0.22751562, 0.2162859, 0.08484499, -0.101792164, 0.022602912, -0.010337523, -0.008003397, -0.013766157, -0.0057711024, -0.05819619, -0.04446155, -0.08052716) * inp_2_1_1;
result3 += M4(0.1547679, 0.22161007, 0.014627768, 0.012153356, 0.033899494, 0.034064934, 0.025189225, 0.055117983, 0.043660346, -0.058228914, 0.015314688, 0.14504164, 0.11813863, -0.007121823, -0.039966784, 0.0111110695) * inp_2_2_1;
result3 += M4(0.037130073, -0.014706611, -0.046346705, 0.012224429, -0.041157037, -0.35751107, -0.05951779, 0.09695064, 0.01285512, 0.43048343, 0.04302009, 0.011366874, -0.017840335, -0.12335119, 0.08287626, 0.017680923) * inp_2_0_2;
result3 += M4(0.010891541, -0.49083295, 0.060383532, 0.10288336, 0.06985232, -0.7059014, 0.11019046, 0.122279085, 0.044065747, -0.09983451, 0.009456532, -0.046246454, -0.026614493, -0.58389384, 0.33076137, -0.0031434675) * inp_2_1_2;
result3 += M4(0.04606002, -0.37527433, 0.046905946, 0.01563129, 0.0011968618, -0.022588259, -0.009153364, 0.044754457, 0.08695484, 1.0303904, 0.04778055, -0.15094581, -0.028186394, -0.9436374, 0.016880145, -0.11173819) * inp_2_2_2;
const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0];
const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1];
const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2];
const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0];
const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1];
const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2];
const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0];
const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1];
const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.06286261, -0.060373593, 0.07116647, 0.0619829, -0.0066299126, 0.13109206, -0.20979518, 0.002858611, -0.048014127, 0.00019520303, 0.121980846, 0.034745358, 0.13724911, -0.085459515, 0.0051784874, 0.01571718) * inp_3_0_0;
result0 += M4(-0.013574857, -0.23202792, 0.0519594, 0.034660738, 0.43635687, -0.30060947, 0.14550194, 0.018748902, -0.13679627, 0.2829286, -0.013588786, 0.036971442, 0.030681746, 0.0010127635, -0.08614273, -0.11911174) * inp_3_1_0;
result0 += M4(0.024118878, -0.012151595, -9.674262e-05, 0.017549517, -0.27432656, -0.09803597, -0.15732808, -0.060366213, -0.14930736, 0.14311892, 0.024713188, 0.037726585, 0.14170945, -0.03425068, -0.017167509, -0.00071168476) * inp_3_2_0;
result0 += M4(-0.10782089, -0.16344099, 0.19317712, -0.38159618, 0.13680598, 0.17883787, 0.030246858, -0.037606556, -0.32459244, 0.10547758, 0.044550784, 0.12048204, -0.0099839885, -0.12357541, 0.036530048, -0.089610785) * inp_3_0_1;
result0 += M4(-0.13898109, 0.39208248, 0.0109475395, 0.015943753, 0.022446962, -0.08900124, 0.19220018, 0.0677409, -0.3439734, 0.08384029, 0.10629637, 0.09067521, -0.29944092, 0.060521916, 0.22991458, 0.40063986) * inp_3_1_1;
result0 += M4(0.18874273, -0.0056638373, -0.04421056, -0.038572893, 0.07605439, 0.062168654, 0.03995903, -0.031816024, -0.2129637, 0.21379061, 0.053394426, 0.07264673, -0.13454273, 0.14965035, -0.10484448, -0.20467016) * inp_3_2_1;
result0 += M4(0.06988142, 0.25449514, -0.05523505, -0.13124296, 0.014233429, 0.16215482, -0.04481816, 0.019992262, -0.13293903, 0.18337868, 0.07000366, 0.0513191, -0.055277914, -0.07764673, 0.03873142, 0.07883217) * inp_3_0_2;
result0 += M4(-0.36113358, 0.22899732, -0.036704354, 0.013839135, 0.14529197, 0.08774893, -0.07928519, 0.0026338708, -0.16879976, 0.062266976, 0.07541507, -0.0023375154, 0.0723696, 0.12809074, 0.016016755, -0.0056813788) * inp_3_1_2;
result0 += M4(-0.028720137, -0.05488755, -0.016848313, 7.5715514e-05, 0.016350053, 0.053903952, -0.05208008, -0.034171015, -0.22506568, 0.11121778, 0.01785079, 0.06564211, 0.23272583, -0.00482589, 0.055954725, 0.1432723) * inp_3_2_2;
result1 += M4(-0.10498621, 0.030014794, 0.0032244981, 0.102304555, 0.17439382, 0.038725745, 0.032478284, -0.19305107, -0.048359256, 0.15367508, -0.006052263, 0.083774105, 0.00292457, 0.037073225, 0.035675347, -0.019000113) * inp_3_0_0;
result1 += M4(0.04774375, -0.2938067, -0.05709124, -0.13943814, -0.20270431, 0.3623445, -0.21419439, -0.05675482, 0.099672005, -0.05606282, 0.007557265, 0.05206348, 0.009219706, 0.04432889, -0.11578689, -0.19682948) * inp_3_1_0;
result1 += M4(0.01726662, -0.29581445, -0.04216016, -0.16203597, 0.100185566, -0.6252325, 0.22465782, 0.28656498, -0.08000968, 0.21885292, 0.012668427, 0.291217, 0.111002214, -0.926955, -0.09882393, -0.1423236) * inp_3_2_0;
result1 += M4(0.064765096, -0.15353599, -0.037294686, 0.25121227, -0.019713858, -0.00843203, 0.022497868, 0.098086946, -0.05982795, -0.051977072, 0.06938831, 0.076482974, -0.015600241, 0.05576615, -0.015238523, 0.070096485) * inp_3_0_1;
result1 += M4(0.08664475, 0.01768298, 0.6020848, -0.039920695, 0.044405468, -0.21811347, 0.08342741, -0.033837955, 0.03281182, 0.3374107, 0.027843654, 0.012756136, -0.4012199, -0.38563505, 0.5097441, -0.062200487) * inp_3_1_1;
result1 += M4(0.04299441, -0.2796033, 0.018012377, -0.60941917, 0.1011615, 0.08959307, -0.12839684, 0.015276757, 0.08205204, 0.26834708, 0.10463888, 0.36799002, 0.19586207, -0.26779923, -0.21701203, -0.2887069) * inp_3_2_1;
result1 += M4(0.17462203, -0.15911232, -0.0644498, -0.46001348, -0.03646808, 0.01894494, 0.037309248, 0.08804501, -0.02043176, 0.0040285555, 0.062654845, 0.10359963, -0.027579963, -0.03041531, -0.013238214, -0.1042015) * inp_3_0_2;
result1 += M4(-0.010989444, 0.20658334, 0.3690644, -0.4812721, 0.1237659, 0.11424956, -0.013393478, -0.1257435, 0.052512053, 0.14608477, -0.008053595, 0.188952, 0.14650895, -0.00904681, 0.042338386, -0.42307767) * inp_3_1_2;
result1 += M4(-0.043099996, -0.03028995, -0.042148624, -0.24289148, 0.07717908, 0.20333739, 0.09126126, -0.043131243, 0.034551986, 0.13580005, 0.13391165, 0.18057454, -0.030283766, -0.31506154, 0.004103044, -0.20386352) * inp_3_2_2;
result2 += M4(5.1323554e-05, -0.07126976, 0.0717044, 0.08670506, -0.23780937, -0.14137544, 0.13912621, 0.2678485, 0.046414807, -0.02400199, 0.1367385, -0.05674787, 0.01625005, 0.0038141713, -0.056956522, 0.02169852) * inp_3_0_0;
result2 += M4(-0.04279038, -0.15758245, -0.17662711, -0.017594846, 0.20519647, 0.09704495, 0.080727994, 0.005672992, 0.14894627, -0.028557528, 0.042686574, -0.09464376, 0.012749778, -0.07738155, -0.20807444, -0.0047955588) * inp_3_1_0;
result2 += M4(-0.003882164, 0.043724775, 0.13515851, 0.009558198, 0.01243602, -0.30368036, 0.0585837, 0.14723654, 0.066010594, -0.117944345, -0.05076957, -0.059586998, -0.01100473, -0.021125365, 0.051611323, -0.035773404) * inp_3_2_0;
result2 += M4(0.0978772, -0.26208955, 0.12593898, 0.010574613, 0.074951276, 0.044399165, -0.1838051, 0.041730907, -0.021193745, 0.014078046, 0.10010997, -0.44335574, -0.009230954, 0.06559567, -0.029090464, -0.102578215) * inp_3_0_1;
result2 += M4(0.105781436, 0.24344411, -0.11202546, 0.18120848, 0.07621527, -0.13348265, -1.602721, -0.05735984, 0.2853178, -0.23445512, -0.0717304, -0.12555635, 0.09977452, 0.20737745, -0.2415741, 0.0952919) * inp_3_1_1;
result2 += M4(-0.023610769, -0.021789312, 0.10287518, 0.07111899, -0.069030195, -0.3530963, -0.0772313, 0.054264646, 0.11574515, -0.0049083773, 0.13987744, -0.05995539, -0.0066793635, -0.44646642, 0.057889964, 0.1557922) * inp_3_2_1;
result2 += M4(0.25576854, -0.19167414, -0.27466488, 0.01879606, -0.07399727, 0.044162035, 0.29977044, -0.040815722, 0.11204664, -0.057289813, 0.0433811, -0.15938447, 0.09806077, 0.043475185, -0.15241355, 0.008824298) * inp_3_0_2;
result2 += M4(0.053252265, -0.20352285, 0.0040533496, 0.15751232, -0.008557037, 0.042300053, -0.27024773, 0.014334498, 0.061752044, -0.087051116, 0.44206765, -0.13514131, -0.008122361, 0.08984067, -1.5512228, 0.016748672) * inp_3_1_2;
result2 += M4(0.004975121, -0.013876289, -0.20706643, -0.0010754706, -0.03956546, -0.032669004, 0.27811366, 0.049491927, 0.103271104, 0.0076353475, 0.111283086, -0.05007348, 0.18108976, -0.10776404, -0.07119156, -0.19419111) * inp_3_2_2;
result3 += M4(0.0633404, -0.047110643, 0.07118211, 0.048444882, -0.005775792, -0.052555647, -0.104302905, -0.08460713, 0.02597907, -0.009950657, 0.06209868, 0.028137863, 0.0021697362, 0.0076568406, 0.0036912055, -0.018345946) * inp_3_0_0;
result3 += M4(-0.1331605, 0.0013857342, 0.039788213, 0.035220563, 0.13084726, 0.25971624, 0.046869524, -0.00036427676, 0.09637856, 0.09770717, 0.0024276047, 0.010706814, -0.035277203, -0.026551245, -0.06352065, 0.059016775) * inp_3_1_0;
result3 += M4(0.053855784, 0.064021416, 0.008060696, -0.01526441, -0.12302382, -0.09358945, 0.032181762, 0.14378323, -0.04676286, -0.034834966, 0.026324442, 0.00984958, 0.019158434, 0.008232241, -0.051986564, 0.00989814) * inp_3_2_0;
result3 += M4(-0.32401672, -0.30412912, 0.2895643, -0.008885428, 0.025618806, -0.14120665, 0.003426259, -0.0028148086, 0.026743617, 0.091353565, 0.105543524, 0.10250313, 0.0011675783, 0.035086125, 0.10921663, 0.11966283) * inp_3_0_1;
result3 += M4(0.020567996, 0.043697476, -0.028728785, 0.48524925, -0.1070952, 0.32152945, 0.17778619, -0.19383006, -0.024628215, -0.08665188, 0.07534843, 0.10868306, 0.0076442426, -0.2820696, -0.064204305, 0.42395118) * inp_3_1_1;
result3 += M4(-0.08160614, -6.6108376e-05, 0.040490992, 0.074189894, -0.09084997, -0.22213592, -0.0040130247, -0.25885248, 0.1762984, 0.032682348, 0.080818735, 0.011279443, -0.5007788, 0.1279997, 0.1973625, -0.23513627) * inp_3_2_1;
result3 += M4(-0.012247044, 0.28446662, 0.024418319, -0.0368572, -0.023362575, 0.16955037, -0.01587947, -0.11374387, 0.00065157504, 0.36673146, 0.038827658, 0.021695819, -0.03466305, 0.15947455, 0.027267056, 0.08813025) * inp_3_0_2;
result3 += M4(-0.044156477, 0.95561594, -0.009911129, 0.19367605, -0.054063108, -0.79020953, -0.10213113, -0.0908398, 0.08291707, -0.79757714, 0.01788996, 0.0128420135, -0.06652311, -1.9906149, 0.16717233, 0.06597571) * inp_3_1_2;
result3 += M4(-0.01709236, 0.38168252, -0.020716643, -0.04685829, 0.011182388, 0.23508231, -0.047186192, -0.14482248, 0.042174943, -0.32013205, 0.035887044, 0.069062434, 0.022560531, -2.0759308, -0.04987254, 0.06480788) * inp_3_2_2;
const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2);
imageStore(out_image, output_base + ivec2(0, 0), max(result0, V4(0.0)));
imageStore(out_image, output_base + ivec2(1, 0), max(result1, V4(0.0)));
imageStore(out_image, output_base + ivec2(0, 1), max(result2, V4(0.0)));
imageStore(out_image, output_base + ivec2(1, 1), max(result3, V4(0.0)));
}
//!DESC ArtCNN C4F16 DS (Conv2D-3-ReLU)
//!COMPUTE 24 32 12 16
//!HOOK LUMA
//!BIND conv2d_2
//!SAVE conv2d_3
//!WIDTH LUMA.w 2.0 *
//!HEIGHT LUMA.h 2.0 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
# define V4 f16vec4
# define M4 f16mat4
# define F float16_t
#else
# define V4 vec4
# define M4 mat4
# define F float
#endif
const ivec2 ksize = ivec2(3, 3);
const ivec2 offset = ksize / 2;
const ivec2 wg_size = ivec2(gl_WorkGroupSize);
const ivec2 isize = wg_size + ksize - 1;
shared V4 inp[4][isize.y][isize.x];
void hook() {
const uvec2 local_xy = gl_LocalInvocationID.xy;
ivec2 base = ivec2(gl_WorkGroupID) * wg_size;
for (uint y = local_xy.y; y < isize.y; y += wg_size.y) {
for (uint x = local_xy.x; x < isize.x; x += wg_size.x) {
const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2);
inp[0][y][x] = V4(conv2d_2_mul * texelFetch(conv2d_2_raw, input_base + ivec2(0, 0), 0));
inp[1][y][x] = V4(conv2d_2_mul * texelFetch(conv2d_2_raw, input_base + ivec2(1, 0), 0));
inp[2][y][x] = V4(conv2d_2_mul * texelFetch(conv2d_2_raw, input_base + ivec2(0, 1), 0));
inp[3][y][x] = V4(conv2d_2_mul * texelFetch(conv2d_2_raw, input_base + ivec2(1, 1), 0));
}
}
barrier();
V4 result0 = V4(0.027778136, 0.0038762365, 0.0060112406, 0.0006000015);
V4 result1 = V4(-0.0017351743, 0.0009950683, 0.010912907, 0.03908604);
V4 result2 = V4(0.000266976, 0.017418299, -0.008647216, 0.015921349);
V4 result3 = V4(-0.013619726, 0.0029480434, 0.01368811, 0.012646604);
const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0];
const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1];
const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2];
const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0];
const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1];
const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2];
const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0];
const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1];
const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.037959523, -0.25021362, 0.32180902, 0.037510023, 0.111008085, 0.036263727, -0.044832613, 0.046227634, 0.06153237, 0.066887036, -0.06402503, 0.0137818055, 0.058643926, 0.09194818, -0.0066927616, -0.00027553178) * inp_0_0_0;
result0 += M4(-0.31354797, -0.52957594, 0.11697425, -0.20372826, 0.17802851, -0.18988231, -0.10361172, -0.027982308, -0.16375913, -0.010294441, -0.2834363, 0.06046444, -0.007466428, -0.33041412, 0.124784246, -0.19223383) * inp_0_1_0;
result0 += M4(-0.10706539, -0.10484983, -0.061880626, 0.00774244, 0.09231609, 0.06202766, 0.1640999, 0.13581178, -0.1420185, 0.0035332106, -0.16379459, -0.120733924, -0.02373713, -0.07780154, 0.035413943, 0.01883168) * inp_0_2_0;
result0 += M4(-0.06571661, -0.003932265, -0.30063874, -0.012647723, -0.009271675, 0.22283988, -0.16774207, 0.20155182, 0.017236145, -0.10799352, 0.04796609, 0.08983289, -0.04880977, -0.10221234, 0.022749677, 0.16696925) * inp_0_0_1;
result0 += M4(-0.05266035, 0.22585094, -0.35540175, -0.07244089, -0.031269263, -0.051175628, 0.04963369, -0.15279794, -0.20429726, -0.052164555, 0.37304792, -0.11294483, 0.055018574, 0.32319817, 0.27816808, -0.38375401) * inp_0_1_1;
result0 += M4(0.060769554, 0.14420046, -0.0043999953, -0.059062645, -0.19179358, -0.16230205, 0.13510382, -0.1457872, 0.0016391758, -0.15750861, 0.105348974, -0.04819904, -0.011858636, 0.18733023, 0.0010513674, 0.2908214) * inp_0_2_1;
result0 += M4(-0.059792068, -0.004420408, -0.1316754, -0.047432523, 0.11734924, -0.15156738, 0.28328276, 0.16117229, 0.01921817, -0.0016701889, 0.029864851, -0.0075468165, -0.15897815, 0.01961235, -0.054396078, 0.024539033) * inp_0_0_2;
result0 += M4(-0.08292198, -0.027146012, -0.027524365, -0.011506686, 0.086338654, 0.041687276, -0.2173084, 0.038262483, 0.263645, 0.045751404, 0.11188837, -0.0067946645, -0.03161529, 0.010051411, -0.3263065, -0.06663389) * inp_0_1_2;
result0 += M4(-0.18083061, -0.0685881, -0.12234881, -0.02228465, 0.07691137, 0.30900759, -0.121936925, -0.22359262, 0.03343305, 0.023539206, 0.038763672, 0.1339184, -0.19916165, -0.24065477, -0.11511568, -0.077685505) * inp_0_2_2;
result1 += M4(0.11119281, 0.014871417, -0.08584802, -0.11974283, -0.036323845, -0.061903026, 0.030546349, 0.0555025, 0.008382123, -0.07504962, -0.039831385, -0.12784553, -0.0026460697, 0.08231018, 0.0055240174, -0.12879173) * inp_0_0_0;
result1 += M4(0.17016123, 0.02588196, -0.019716628, 0.10479849, -0.0016980349, -0.028776024, 0.027543277, -0.2772358, 0.1283749, 0.025966087, 0.042241443, 0.014233859, 0.0065921512, 0.020656658, -0.022434035, -0.04985252) * inp_0_1_0;
result1 += M4(-0.0472501, 0.0037576957, -4.3977616e-05, 0.03290291, -0.04104652, -0.026227556, -0.010901347, -0.4085957, -0.10935482, -0.047516197, 0.0118241785, -0.100866616, 0.060059942, 0.116595045, -0.007916477, 0.17789184) * inp_0_2_0;
result1 += M4(-0.22412719, -0.10033592, -0.1521234, -0.17362382, 0.01638626, 0.02835907, 0.033511728, 0.2328821, -0.020197593, 0.03216839, 0.037741493, -0.029707273, 0.009855981, 0.22149108, -0.03689686, 0.1447713) * inp_0_0_1;
result1 += M4(-0.30148375, 0.0632023, -0.0067251194, -0.15317558, -0.17110342, -0.18321693, -0.088327326, -0.41609433, -0.13017967, 0.49971968, 0.056333855, -0.011686353, 0.0010861221, 0.22562495, -0.080076136, -0.1302788) * inp_0_1_1;
result1 += M4(0.039973423, 0.03028041, 0.021956658, 0.07808441, -0.14125678, -0.036012925, 0.0071603158, -0.07522537, -0.025754103, 0.005378989, -0.014686566, 0.09944998, 0.13554697, 0.079004906, 0.0011523525, -0.38537538) * inp_0_2_1;
result1 += M4(-0.13575977, -0.022396836, -0.030112451, 0.10222917, 0.1552075, -0.06995485, -0.031099742, 0.17577963, -0.056910343, 0.013968224, 0.14333825, -0.03675011, 0.011783875, -0.051590312, -0.15610342, -0.17404863) * inp_0_0_2;
result1 += M4(0.07389935, 0.050780647, -0.031877898, 0.06690987, -0.14316311, -0.052577198, -0.031312797, -0.05003997, 0.09845202, -0.017005472, 0.07714886, 0.048596397, -0.14131732, 0.101602435, -0.22325617, 0.20973825) * inp_0_1_2;
result1 += M4(-0.031117477, 0.021548124, 0.017189413, 0.052431688, 0.04915466, 0.032980744, -0.08586304, 0.07536542, 0.108461745, 0.006127045, -0.02716071, 0.17326802, -0.2079598, -0.033492446, 0.12408041, -0.3209048) * inp_0_2_2;
result2 += M4(-0.07207634, 0.06296876, 0.011107316, -0.046647698, -0.042769343, 0.08852506, -0.0862486, -0.062856324, -0.06955706, 0.14166252, -0.110850886, 0.057559825, 0.02488229, 0.028278602, 0.048295196, -0.042165864) * inp_0_0_0;
result2 += M4(-0.078074485, -0.12998049, 0.03683518, 0.03586195, 0.13785475, -0.034398697, -0.026527341, 0.030237446, 0.023203412, -0.033291623, -0.20238021, -0.08348794, 0.11027605, -0.11150891, 0.22111917, 0.047726396) * inp_0_1_0;
result2 += M4(-0.04960072, 0.050353494, -0.0006742855, 0.07279159, 0.018991109, 0.13089311, -0.08346107, 0.04701187, -0.106585406, 0.095715374, -0.013524885, -0.13243644, 0.10742847, -0.14261742, -0.006763274, -0.017986735) * inp_0_2_0;
result2 += M4(-0.31722686, 0.33172634, -0.11477239, -0.01052745, 0.13394238, -0.21245277, -0.048528012, -0.08471889, 0.03754863, -0.121182695, -0.06421948, 0.11747149, 0.14040497, -0.10238033, 0.014908958, -0.11607542) * inp_0_0_1;
result2 += M4(-0.12532279, -0.24670208, 0.054382693, -0.1348918, -0.14999142, 0.16309962, -0.094578154, -0.120880246, 0.3908203, -0.14487007, -0.046591494, 0.013118504, -0.061832704, -0.21098945, 0.536612, 0.10142396) * inp_0_1_1;
result2 += M4(-0.09028333, 0.028686114, 0.015947023, 0.043474127, 0.00018622568, -0.05940896, -0.0046693394, -0.19012134, 0.07697358, -0.09784354, 0.023551218, 0.01695114, -0.062011518, 0.10891911, -0.05207921, 0.14000526) * inp_0_2_1;
result2 += M4(-0.12038265, -0.04111566, 0.0061977906, -0.0066740876, 0.19252938, -0.073932864, 0.04497398, -0.12940288, 0.023895219, 0.052579913, -0.06248462, -0.018015474, -0.06162621, 0.13864444, 0.012270212, 0.14669923) * inp_0_0_2;
result2 += M4(-0.026761789, -0.16008343, 0.01598532, -0.036855735, -0.06660676, 0.48246488, -0.11632707, -0.054524817, 0.011908513, -0.06293734, 0.03299855, 0.004496553, -0.2079089, -0.15423803, -0.00363188, -0.27435684) * inp_0_1_2;
result2 += M4(-0.05339288, 0.0034270918, 0.021551864, 0.0943767, 0.0353858, 0.0081639625, 0.08109295, -0.12489351, 0.004884049, 0.0839288, -0.049969826, 0.13181311, -0.10933589, -0.04199368, 0.1266411, -0.12711206) * inp_0_2_2;
result3 += M4(-0.059499647, -0.0073708887, 0.0005556805, -0.03291036, 0.058782015, 0.18408404, -0.07796206, 0.03141434, -0.020975662, -0.054250263, -0.09048935, -0.053082395, 0.035196614, 0.025776194, 0.060131244, 0.032159604) * inp_0_0_0;
result3 += M4(0.05577379, 0.29738176, 0.03639504, 0.070511274, -0.10016375, 0.116460875, 0.027865486, -0.0021787724, 0.048691228, 0.12781721, 0.06580767, 0.005042384, -0.03535735, 0.02066432, 0.016236791, 0.016517907) * inp_0_1_0;
result3 += M4(-0.012746767, -0.07717965, -0.0299835, 0.047176152, -0.061407626, 0.037478063, -0.0863785, -0.22612846, -0.07601034, -0.09515252, 0.039877407, -0.45562136, 0.046642363, -0.112222865, 0.07126736, 0.015969459) * inp_0_2_0;
result3 += M4(-0.020686973, -0.39262164, -0.049958147, -0.18389036, 0.07072307, 0.14095645, 0.011051769, -0.024992006, 0.02413172, 0.025585402, 0.14711273, 0.0009433553, 0.082829006, -0.08550096, 0.031845223, -0.021640275) * inp_0_0_1;
result3 += M4(0.13317253, -0.1773227, 0.069683515, -0.062820196, -0.132651, 0.22238003, -0.15049596, -0.14053519, -0.1953743, -0.31396723, 0.19547622, 0.09879975, -0.070646785, -0.24801955, -0.06661288, -0.07386374) * inp_0_1_1;
result3 += M4(-0.023832645, -0.06890217, -0.02271733, -0.061990146, 0.028613089, 0.43251, 0.0015032064, 0.23960596, 0.04496337, -0.039601058, 0.10589893, 0.09921791, 0.0694232, -0.021629777, -0.08209238, -0.32568154) * inp_0_2_1;
result3 += M4(-0.019684972, -0.17369469, -0.035898644, -0.009288769, -0.029961757, 0.28030127, -0.047418542, 0.1050209, 0.012742063, 0.012955064, 0.10846161, 0.017202027, -0.007071718, -0.13051221, -0.059489317, -0.010704965) * inp_0_0_2;
result3 += M4(0.030396469, -0.0085416185, 0.010889212, -0.013288528, -0.11988267, 0.23979446, -0.08275844, -0.07391667, -0.017446905, 0.035077866, 0.065961614, 0.108566545, 0.011839677, 0.107098676, -0.21068384, -0.04293339) * inp_0_1_2;
result3 += M4(0.032374904, -0.06064427, 0.042649727, -0.041691136, -0.034122627, -0.027580267, 0.04937551, 0.07984096, -0.0026640114, -0.051669076, -0.0088173095, -0.021853855, -0.0006762643, -0.018843781, 0.034812227, -0.036094137) * inp_0_2_2;
const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0];
const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1];
const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2];
const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0];
const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1];
const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2];
const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0];
const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1];
const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.049737405, 0.10112139, 0.15198193, 0.055590257, 0.14161181, -0.009554299, 0.05187236, 0.007295027, -0.076030694, -0.008848272, -0.032388974, -0.031260557, 0.0023497243, -0.011150315, 0.117461964, 0.011355564) * inp_1_0_0;
result0 += M4(0.049602464, 0.12393386, 0.07494285, 0.013518429, -0.00062100356, -0.30270538, 0.21470521, -0.12667775, 0.04928282, 0.26048595, -0.19169326, 0.102354474, 0.015559531, -0.21064574, 0.24859385, -0.08383248) * inp_1_1_0;
result0 += M4(-0.041198667, -0.047608078, -0.12736973, -0.067202985, -0.030117298, -0.07227502, 0.052990768, -0.07245678, 0.072775185, 0.149006, -0.012968183, 0.070384994, -0.036099825, -0.17070374, -0.09094623, -0.23726371) * inp_1_2_0;
result0 += M4(0.07570894, -0.019841881, 0.053823378, 0.08053692, -0.19421548, -0.023310207, -0.00587786, -0.059943005, -0.0067059323, 0.0054926104, -0.01987329, -0.109774485, -0.038503513, 0.27981672, -0.032750774, 0.033647776) * inp_1_0_1;
result0 += M4(-0.2040691, -0.50750333, -0.25517917, -0.041274745, -0.077208094, -0.10966754, -0.25866443, 0.03609157, 0.44166267, 0.024327517, 0.008248632, 0.14844674, -0.257685, 0.2327391, -0.23297633, -0.31173524) * inp_1_1_1;
result0 += M4(0.17179568, -0.18574522, -0.14215833, 0.0921146, -0.10469169, -0.09989844, 0.014709461, -0.29928666, 0.20280173, 0.073017, 0.029359704, 0.22120892, 0.2955338, 0.09198686, 0.06208465, 0.14668238) * inp_1_2_1;
result0 += M4(0.106726326, 0.07787966, 0.050393373, -0.071895614, -0.12616977, -0.026866462, -0.124319114, -0.022309849, 0.29465798, -0.011388022, 0.035920814, -0.08112228, 0.06610995, -0.090453535, 0.012587257, -0.03502615) * inp_1_0_2;
result0 += M4(0.09085307, -0.01851332, -0.06552974, 0.119773336, -0.2650174, 0.09117819, -0.006581445, 0.007982912, -0.08942961, -0.036977448, 0.3574564, 0.115335606, 0.15192772, -0.13126537, 0.21937312, -0.0866423) * inp_1_1_2;
result0 += M4(-0.08212599, 0.08564393, 0.10571549, 0.037520695, 0.17252308, 0.20790944, -0.1953515, -0.14376622, -0.103681706, -0.122653864, 0.04001299, 0.0901387, -0.023518613, 0.09323124, 0.07081224, 0.04092316) * inp_1_2_2;
result1 += M4(-0.020023866, 0.05511347, 0.02629812, 0.07336269, 0.012964031, -0.013091053, -0.06035449, -0.0766252, -0.020045916, 0.0012118748, -0.008933977, 0.030894501, 0.060210135, 0.028999412, -0.046427708, -0.31539044) * inp_1_0_0;
result1 += M4(0.10327783, -0.089026466, -0.05779666, -0.3186047, 0.15567823, -0.014601195, 0.013896689, 0.2891833, -0.026302965, 0.01657755, 0.021771517, 0.027450055, -0.12184151, -0.09281342, 0.031317703, -0.46122685) * inp_1_1_0;
result1 += M4(0.05281817, -0.060926266, 0.03465716, 0.1537782, -0.00406323, -0.031619772, 0.029534522, 0.038000755, -0.10006288, -0.036024965, -0.0043251277, 0.065014035, -0.16962057, -0.012664665, 0.006357872, -0.22239052) * inp_1_2_0;
result1 += M4(0.11518227, 0.010263358, 0.08577697, 0.15312295, -0.037677236, -0.0027213697, -0.11902089, -0.19166042, -0.017873341, 0.087266244, 0.14162566, 0.109701104, 0.08876657, 0.16271667, -0.03934269, -0.2638168) * inp_1_0_1;
result1 += M4(0.14694956, 0.24107741, -0.064176224, 0.012601089, -0.24566709, 0.046524867, -0.044068787, -0.38319376, -0.09396184, 0.14992373, 0.047297783, 0.18897937, 0.29115647, 0.06750328, -0.05164348, 0.048152927) * inp_1_1_1;
result1 += M4(0.028561851, -0.07966852, 0.019684726, 0.060895246, 0.13620286, -0.027948124, 0.008325096, 0.15856534, 0.00037458312, -0.03720846, -0.04055448, 0.22735646, 0.11170028, -0.07271811, -0.021446977, -0.8544288) * inp_1_2_1;
result1 += M4(-0.09848077, 0.019949809, 0.037518136, 0.039713357, 0.02826462, -0.031607497, 0.07404682, -0.1543524, 0.1183806, 0.026495025, 0.14806303, 0.05435128, -0.09303162, 0.0050084465, 0.02500928, -0.11671158) * inp_1_0_2;
result1 += M4(0.01732424, -0.14889592, -0.04405508, -0.009738755, -0.1330518, 0.050765615, -0.08840394, -0.3742453, 0.4446187, -0.11536998, -0.00874284, 0.1185657, 0.034900803, -0.020656813, -0.040750742, 0.1721268) * inp_1_1_2;
result1 += M4(0.03909118, -0.04768464, 0.024626907, 0.08413739, -0.21506998, -0.064118676, 0.040168203, 0.20975374, 0.049888425, -0.08201531, 0.024820967, 0.14323507, -0.01613754, 0.032754418, 0.048710797, -0.16260536) * inp_1_2_2;
result2 += M4(0.014555774, -0.05387529, 0.07489625, -0.037802383, 0.11082838, 0.22475928, -0.02731996, -0.020853342, -0.085412845, -0.0072837793, -0.030785799, 0.0207054, 0.10435998, -0.053322036, 0.045852542, -0.072835155) * inp_1_0_0;
result2 += M4(-0.044397313, 0.035971496, -0.039311487, -0.048572432, 0.024876634, 0.045701887, 0.0051326402, -0.07839732, -0.16601965, 0.077138126, -0.031825293, 0.048639063, -0.035221197, 0.1193912, -0.061341498, -0.22058457) * inp_1_1_0;
result2 += M4(-0.07963994, -0.0012402748, -0.09748513, -0.13840656, 0.08465801, 0.07826156, -0.048214708, 0.14418165, 0.0048163394, 0.0049762996, -0.046877004, -0.105099805, -0.0898626, 0.043998107, -0.04787935, -0.17147085) * inp_1_2_0;
result2 += M4(-0.03007813, -0.04507198, 0.04373128, 0.046295237, -0.14763202, 0.08955579, -0.0056225783, -0.17248668, -0.03410238, -0.21272641, 0.16527392, 0.05150794, -0.0008284313, 0.34322238, 0.18438488, -0.08285268) * inp_1_0_1;
result2 += M4(0.20539062, -0.052982114, 0.11531658, 0.004405453, -0.23253845, 0.25590232, -0.006042095, -0.37196597, 0.37283424, -0.114811875, 0.076772586, 0.44651106, 0.06591493, -0.01390104, -0.049379475, -0.124592274) * inp_1_1_1;
result2 += M4(-0.06954386, 0.025619017, -0.013459233, 0.11084479, -0.0122944955, -0.029727878, 0.027424242, -0.0711348, -0.038871937, 0.18157594, -0.07843295, 0.08314225, 0.049545646, 0.014560142, -0.014511459, 0.10481229) * inp_1_2_1;
result2 += M4(-0.0067635993, -0.0426838, 0.009092639, 0.045384463, -0.055559993, 0.1834391, -0.010972788, -0.058796592, 0.016764998, -0.14589033, 0.03710905, -0.19244063, 0.08801586, 0.048219733, 0.0032665506, -0.11597082) * inp_1_0_2;
result2 += M4(0.11009294, -0.11232908, -0.18222374, 0.0069267782, -0.23742944, 0.16188273, 0.039160475, -0.14444447, 0.041798852, 0.11060181, -0.056890566, 0.06563856, 0.09489458, -0.32361597, 0.00944493, -0.13721743) * inp_1_1_2;
result2 += M4(0.090349786, 0.04376149, -0.04210093, 0.024956677, 0.09916894, 0.05401307, -0.039633594, 0.04372982, -0.045141205, 0.08186336, -0.052114937, 0.11175199, -0.038679104, 0.19140874, 0.032928012, 0.07058188) * inp_1_2_2;
result3 += M4(-0.006075063, -0.018356796, 0.056341976, 0.061644454, -0.003693901, 0.088303156, -0.025287738, 0.102778904, -0.024020348, 0.008624734, 0.03060497, 0.003500091, 0.008914277, 0.08248106, 0.03027586, 0.022001492) * inp_1_0_0;
result3 += M4(0.030211737, 0.1920699, -0.035096638, 0.09076857, 0.061769173, 0.22886829, -0.01100735, 0.15141578, 0.08333679, -0.08026299, 0.021761127, -0.0956161, 0.08128157, 0.06965095, -0.054878283, 0.061419416) * inp_1_1_0;
result3 += M4(-0.014367132, 0.13236003, -0.014388146, -0.016444584, 0.060558107, 0.1479671, -0.051986463, 0.27006805, -0.014165216, -0.008474633, -0.033131737, -0.15365377, -0.063046716, 0.076039515, -0.030319618, 0.18705176) * inp_1_2_0;
result3 += M4(0.08690382, 0.10524188, 0.098085724, 0.0073540076, -0.0010277773, -0.106429204, 0.012025196, -0.08451286, -0.0014571212, -0.0047601513, 0.13999857, 0.17007957, -0.08780816, 0.13444522, 0.04313614, -0.1345045) * inp_1_0_1;
result3 += M4(-0.06625476, -0.05198299, 0.07787109, 0.06424893, 0.09623473, -0.21509515, 0.06602832, -0.40384206, 0.042008884, -0.3242389, 0.0004638634, 0.07529427, 0.2183538, 0.44943228, 0.18759978, 0.18637761) * inp_1_1_1;
result3 += M4(0.017288215, -0.0053434055, -0.05398195, -0.30934304, 0.09737048, 0.23400407, 0.017283117, 0.13071308, 0.098832235, 0.029988274, -0.056879498, -0.0709281, 0.0053742863, -0.038387857, -0.09361794, -0.24800858) * inp_1_2_1;
result3 += M4(-0.04654279, -0.08282567, -0.07984369, 0.02731204, -0.049747776, -0.37062362, -0.012547069, -0.07941997, -0.033091046, 0.21559149, -0.024537416, 0.044424098, 0.035754018, 0.13048185, 0.023078835, 0.07034805) * inp_1_0_2;
result3 += M4(0.08840687, 0.08042513, -0.059584785, 0.10899964, -0.05955278, 0.0074485806, 0.03477998, -0.0349439, 0.057696942, 0.18947934, -0.016750978, 0.04807282, -0.014760053, 0.06442668, -0.06439979, 0.035887294) * inp_1_1_2;
result3 += M4(-0.092143014, 0.004501364, -0.06596536, -0.07849936, 0.08872182, 0.16008253, -0.02249607, 0.105323866, 0.081439696, 0.04969625, -0.054679964, 0.018016027, -0.10262612, 0.2330462, 0.023691272, -0.03993842) * inp_1_2_2;
const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0];
const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1];
const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2];
const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0];
const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1];
const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2];
const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0];
const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1];
const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.07830172, -0.14876914, 0.05355828, -0.017940922, -0.019273747, 0.14990099, -0.11393343, 0.07979009, -0.0015779808, -0.01751936, 0.11896217, 0.09300908, -0.18659098, -0.121288, -0.10224859, 0.08513331) * inp_2_0_0;
result0 += M4(-0.06617709, -0.06332952, 0.085182324, -0.06225419, -0.068945736, -0.047913596, 0.0679214, -0.042801455, -0.2090096, -0.33409768, -0.34005722, -0.18613161, 0.25908467, -0.09217444, -0.16051349, -0.0657742) * inp_2_1_0;
result0 += M4(-0.1226092, -0.1602081, 0.047278337, -0.115120985, -0.04447372, -0.124471955, 0.060112022, -0.10595812, -0.08988814, -0.078760855, 0.035831973, -0.14604607, -0.0865866, -0.10393967, -0.04495893, 0.104952656) * inp_2_2_0;
result0 += M4(-0.04553624, 0.004493914, -0.03215308, -0.07242546, -0.2099704, 0.13326094, -0.05061192, 0.07261988, 0.19333044, -0.0036887063, -0.058196995, 0.06439614, -0.015342901, 0.1046101, -0.026241194, 0.0026343958) * inp_2_0_1;
result0 += M4(-0.04640111, 0.02269332, -0.13698405, 0.14231233, -0.2353856, 0.11762217, -0.21256813, -0.0751768, -0.28383654, 0.08840888, -0.35885394, 0.07443314, 0.006475096, 0.075548895, -0.13544, 0.007391659) * inp_2_1_1;
result0 += M4(-0.0061011375, -0.18857023, -0.1331054, -0.1458119, -0.056649227, 0.2125942, 0.0035952234, -0.2520607, -0.061908383, 0.08528804, -0.1401447, -0.17498317, 0.055922613, -0.2542001, -0.053608503, -0.10309074) * inp_2_2_1;
result0 += M4(0.0013440554, 0.09742524, -0.07804046, -2.9276303e-05, 0.09091256, -0.04144601, 0.19149931, 0.11628538, 0.06605791, -0.027023803, 0.20933603, -0.0013714015, -0.1825846, 0.051553044, 0.07532552, 0.0611219) * inp_2_0_2;
result0 += M4(-0.14012764, 0.088257074, -0.0017159806, -0.014765264, -0.18646921, 0.083673865, -0.00708201, -0.08717221, 0.06615527, 0.008008079, 0.08269794, 0.07934124, -0.022100735, 0.06695116, 0.037599433, 0.03254533) * inp_2_1_2;
result0 += M4(0.026773917, 0.069848076, -0.09850413, -0.10729503, -0.013395189, 0.021682922, -0.02786287, -0.14085256, 0.10214859, 0.022021992, 0.13136691, -0.0068947654, -0.00386047, 0.22761689, -0.5240749, -0.116791986) * inp_2_2_2;
result1 += M4(-0.0022912854, 0.014696039, -0.045634188, -0.32560205, 0.06622815, -0.028060323, -0.00054672034, 0.05995792, 0.015599163, -0.14182657, -0.119303025, -0.31783292, -0.08163518, 0.1998592, 0.014395973, 0.36548176) * inp_2_0_0;
result1 += M4(-0.048939884, -0.014542668, -0.04633463, -0.0024297945, 0.021747867, -0.005321564, 0.0006820998, 0.04477135, -0.08045946, 0.018998336, -0.012030636, -0.37954047, 0.19400491, -0.1777233, 0.027039776, -0.35942712) * inp_2_1_0;
result1 += M4(0.22468618, 0.009416585, 0.068244815, 0.013901826, 0.0013728689, 0.006522658, 0.013258042, 0.06934019, 0.14028855, -0.052762188, 0.04244879, 0.12911086, -0.012612758, 0.063661866, -0.019271184, 0.49719647) * inp_2_2_0;
result1 += M4(-0.07641639, 0.06576701, -0.04090497, -0.07621283, 0.037623473, 0.12585929, -0.0034381796, 0.06110379, -0.25403705, -0.17175984, -0.14418678, -0.13508902, -0.05494865, -0.04467614, -0.022754882, -0.13877377) * inp_2_0_1;
result1 += M4(-0.022023944, 0.0694346, -0.0928517, -0.030216185, -0.046700295, -0.20443448, -0.042605206, -0.3497664, -0.28156304, -0.046425324, -0.069200635, -0.2907517, -0.041153204, 0.2339898, 0.056259148, 0.3236588) * inp_2_1_1;
result1 += M4(-0.1934648, 0.082691304, 0.025272142, -0.2449607, 0.113218695, 0.005864238, 0.009141561, -0.25729316, -0.16493188, -0.030178424, 0.026396386, 0.10509887, -0.07728693, 0.030472185, 0.007334793, -0.24442962) * inp_2_2_1;
result1 += M4(-0.049236957, 0.061303, -0.0476163, -0.04529243, 0.160712, -0.019567957, -0.085775815, -0.012528159, 0.01934386, -0.062015988, -0.10854266, 0.29481542, -0.050939184, 0.011357999, 0.022786815, -0.16671933) * inp_2_0_2;
result1 += M4(-0.1895148, -0.004369672, -0.026504187, -0.31326336, -0.03075505, -0.039938275, -0.1568032, -0.08793934, -0.19416727, -0.01838946, 0.021547195, -0.01991532, -0.011946745, 0.022138476, -0.071378626, 0.32779557) * inp_2_1_2;
result1 += M4(-0.048454516, 0.0101790745, 0.010456961, -0.12427452, -0.029380482, -0.00675534, 0.024718262, -0.11232896, -0.005622325, -0.042526126, 0.038992226, 0.105863325, -0.039813906, -0.08115853, 0.035461422, -0.0035903116) * inp_2_2_2;
result2 += M4(-0.04402709, -0.016180942, 0.0891615, -0.024753463, 0.026478985, -0.060945697, -0.038198218, 0.07520962, -0.11705836, 0.3297686, -0.3305377, -0.03645195, 0.09425081, -0.1378984, 0.14152278, 0.14905073) * inp_2_0_0;
result2 += M4(-0.036260195, -0.038402468, -0.014645692, -0.09586455, -0.028859043, 0.13312396, -0.033565793, -0.006808677, -0.19537334, 0.20457137, -0.019814363, -0.1478949, -0.03796106, 0.14760232, 0.10321775, 0.18156669) * inp_2_1_0;
result2 += M4(0.07246825, -0.12365076, 0.017575905, -0.030126406, 0.046405137, -0.027133245, -0.00728452, 0.023818508, -0.011183579, 0.17990333, -0.090246476, -0.056757174, 0.021047695, -0.055925988, -0.090673156, -0.10315814) * inp_2_2_0;
result2 += M4(-0.053926427, 0.12874521, 0.055412356, 0.07707581, 0.11041836, -0.0619052, 0.11376377, 0.0047456403, 0.07408073, 0.30795145, -0.09270666, 0.18595006, -0.09417252, -0.008349854, -0.045618307, 0.0026119053) * inp_2_0_1;
result2 += M4(-0.18726636, -0.049225733, -0.014870134, -0.04986034, -0.17504306, -0.0101219565, -0.18615387, -0.18480326, -0.09888477, 0.26136908, -0.1285738, 0.018871862, -0.082627825, -0.18695119, 0.038688343, -0.19229518) * inp_2_1_1;
result2 += M4(-0.1357095, -0.2116362, 0.11381856, -0.03507191, -0.003802864, 0.0058168387, -0.0027301705, -0.025808165, 0.1166466, 0.20676197, -0.039956033, 0.123297445, -0.17349635, -0.02343101, 0.15615699, -0.03733561) * inp_2_2_1;
result2 += M4(-0.09785833, -0.1301683, 0.058012683, -0.14668626, 0.11043156, -0.021580258, -0.0048840144, 0.051045064, 0.017120682, 0.060549524, -0.0581592, 0.059453953, 0.13603266, 0.09581823, 0.06997952, 0.14956342) * inp_2_0_2;
result2 += M4(0.03921401, -0.011373782, -0.02715269, 0.033428404, 0.14793101, 0.120102376, -0.02810595, 0.045744553, 0.12669022, 0.082077585, -0.06789836, 0.11513189, 0.067867525, 0.039381277, 0.030606287, -0.050590288) * inp_2_1_2;
result2 += M4(0.060713027, -0.07761676, -0.020310812, -0.1408103, 0.04719172, -0.11227698, -0.004746477, -0.00029776423, 0.0612426, 0.059729498, -0.0038103021, 0.029575326, -0.049457733, 0.12310257, -0.10137025, -0.049271993) * inp_2_2_2;
result3 += M4(-0.05995501, -0.19377929, 0.011020564, -0.0137210265, 0.06509773, -0.03555212, 0.009308156, -0.0384802, 0.06821294, 0.51575565, -0.14969237, 0.01820171, -0.051772907, 0.08119263, 0.091751784, 0.03777193) * inp_2_0_0;
result3 += M4(-0.023581011, -0.056972954, -0.062301133, -0.005267148, -0.04656849, -0.12911879, -0.056384224, -0.20316291, 0.020328935, -0.19311786, -0.017756406, -0.440162, -0.046479993, -0.04894829, -0.12064701, 0.009520059) * inp_2_1_0;
result3 += M4(0.065435186, 0.046228252, 0.015604604, 0.12556326, 0.0311201, 0.03474904, 0.007671514, 0.13301536, 0.147046, 0.32736132, -0.029793039, 0.16100106, -0.019186867, 0.0764082, 0.095556155, 0.0154143665) * inp_2_2_0;
result3 += M4(-0.021057187, -0.23164107, 0.04121273, -0.057586726, -0.015876006, -0.025681451, 0.10902072, 0.028581731, 0.012099319, 0.38269964, -0.065280735, 0.017670808, -0.010285842, 0.18524677, -0.087604806, -0.03439786) * inp_2_0_1;
result3 += M4(0.11392782, -0.29091293, 0.10342652, -0.23618536, 0.11477608, 0.053516373, -0.09443937, -0.09684282, 0.09109838, 0.45194867, -0.046550203, 0.0221495, -0.042682752, 0.102678895, 0.29369763, 0.00925415) * inp_2_1_1;
result3 += M4(-0.004839339, -0.15727241, 0.048287038, 0.0029870898, -0.05756318, -0.049316205, -0.0038349917, -0.0034320785, 0.13156709, 0.20430067, 0.030107941, 0.128813, -0.0044505526, -0.12501612, -0.11940773, -0.06513706) * inp_2_2_1;
result3 += M4(-0.010287529, -0.12021754, 0.044335917, -0.062519714, 0.0047769775, 0.14337285, -0.0041972697, 0.0021912442, -0.039687414, 0.27661455, -0.11983723, 0.110354885, 0.017496211, -0.005899736, 0.12120136, 0.0201866) * inp_2_0_2;
result3 += M4(0.029648883, -0.08350448, 0.0023131538, -0.053223442, -0.07777787, -0.06163523, -0.07151345, -0.09511577, -0.0013567068, 0.22802375, 0.0126903765, 0.09104845, -0.03168009, 0.04610355, -0.09529103, -0.0415571) * inp_2_1_2;
result3 += M4(0.01713689, -0.08970735, 0.03395826, 0.07288721, 0.009608083, 0.17656006, 0.0058848923, 0.058268953, 0.015873602, 0.25157657, -0.03667608, 0.14882235, 0.08391907, 0.16336252, 0.0404145, -0.17297803) * inp_2_2_2;
const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0];
const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1];
const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2];
const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0];
const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1];
const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2];
const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0];
const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1];
const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.64978004, -0.7055976, 0.37329084, 0.42248994, 0.005646127, -0.14189062, -0.01521882, 0.25290447, -0.002311906, 0.057981193, -0.012354303, 0.031552535, -0.116451494, -0.31628877, 0.06812718, 0.002035635) * inp_3_0_0;
result0 += M4(0.08526251, -0.10687228, 0.1018455, -0.048811555, 0.0972552, 0.12168895, 0.23065677, 0.07628282, 0.07211858, 0.097696766, 0.2023464, -0.06609914, -0.05843905, -0.60055965, 0.053053044, 0.104710914) * inp_3_1_0;
result0 += M4(0.015588831, -0.10835923, -0.005832112, 0.015941625, 0.016038898, -0.11295594, 0.22500065, -0.6465217, 0.07011706, 0.049850166, 0.019633831, 0.023681784, 0.10936587, -0.15829137, 0.038289092, 0.12973686) * inp_3_2_0;
result0 += M4(-0.81747675, 0.0060281423, -0.37481412, -0.16429435, -0.022257434, -0.021219831, 0.19469346, -0.06816004, -0.04769545, 0.008818083, -0.060993325, -0.07576861, 0.18285233, 0.23343377, 0.09489507, -0.15429786) * inp_3_0_1;
result0 += M4(-0.2869166, 0.13430862, 0.12610464, 0.15046954, -0.03273977, -0.056424983, -0.061575256, 0.10581605, 0.014637298, -0.22314495, -0.4518202, 0.118180245, -0.44551808, -0.014786073, -0.21566299, 0.15018561) * inp_3_1_1;
result0 += M4(-0.07718609, -0.017327398, -0.0066560586, -0.10367238, 0.03314044, 0.14459963, 0.19663914, -0.029582703, -0.019116811, 0.11255097, 0.11420194, -0.07190823, -0.049284514, 0.026102819, 0.072750315, -0.06288428) * inp_3_2_1;
result0 += M4(-0.4639331, -0.010496345, -0.92964953, -0.05647325, 0.09655988, -0.03287657, 0.020075938, -0.0403688, -0.03797208, -0.011555577, 0.036433052, 0.00097384065, -0.06417242, 0.062704034, -0.036490288, -0.048273157) * inp_3_0_2;
result0 += M4(0.052856382, -0.11946056, -0.21658902, 0.1663539, 0.015798254, -0.02364451, -0.039495207, 0.032014485, -0.13387467, 0.04934571, -0.045255907, 0.050074626, -0.009264434, -0.122095585, -0.26536715, 0.072435774) * inp_3_1_2;
result0 += M4(-0.039749853, 0.024842054, -0.06380302, 0.016700828, 0.031295385, -0.018516634, 0.0606098, 0.06819722, 0.092773035, 0.07673667, 0.096040696, -0.06490305, 0.06999165, 0.071195774, 0.008237743, 0.0533785) * inp_3_2_2;
result1 += M4(-0.186994, -0.13882937, -0.2792112, -0.5172941, -0.06437249, -0.029983457, -0.120821126, -2.0890954, -0.005852748, 0.020830693, 0.015395274, 0.042236257, 0.0089487685, -0.06811956, 0.017523056, 0.14868736) * inp_3_0_0;
result1 += M4(0.13994963, 0.037573565, -0.024332019, 0.029830357, -0.36677074, -0.18800744, -0.46785566, -1.2694392, -0.2427815, 0.03442274, -0.009058491, 0.049773645, 0.15166819, 0.007386017, 0.019380799, -0.09367345) * inp_3_1_0;
result1 += M4(0.0324228, 0.012651934, 0.003177646, 0.10822968, -0.5002241, -0.3129791, -0.26208407, -0.8329386, -0.03229942, 0.07636274, -0.0065100994, 0.020053167, 0.0797911, -0.0016059112, -0.0054755905, -0.020783868) * inp_3_2_0;
result1 += M4(-0.17041302, -0.011512464, -0.29641855, -1.1348844, -0.04297159, 0.11039547, 0.33416325, -0.025935512, 0.022003662, -0.024068726, -0.035436515, -0.105234675, -0.086429894, -0.23458219, -0.017305259, -0.10222359) * inp_3_0_1;
result1 += M4(-0.13581301, 0.049839467, -0.054643936, -0.22698303, -0.18105572, 0.036455046, 0.527013, -0.07911771, 0.42024934, -0.2547043, 0.15371004, 0.020823417, -0.52504796, 0.10181446, 0.042308375, -0.45486203) * inp_3_1_1;
result1 += M4(0.06337127, 0.055027306, 0.023444772, -0.213856, -0.01096344, -0.009638957, 0.13013501, 0.13603643, 0.013382096, 0.036267877, -0.05823589, 0.12503316, -0.10146856, -0.089142695, 0.017534975, 0.10561296) * inp_3_2_1;
result1 += M4(-0.6477063, -0.052642237, -0.19078413, -1.1455024, 0.04815835, -0.051643535, -0.0006776971, 0.1060261, 0.0126540335, 0.012136044, -0.10264911, -0.0018114962, -0.08852105, -0.0043487516, -0.02821457, 0.14296642) * inp_3_0_2;
result1 += M4(-0.143665, -0.1344808, -0.047664102, 0.0981339, 0.038641457, -0.0051126746, 0.05908141, 0.061254892, -0.20713891, 0.103753574, 0.13513431, -0.12371602, -0.23276167, -0.020618634, 0.15698904, -0.10238242) * inp_3_1_2;
result1 += M4(-0.11796208, -0.06686781, 0.037864454, -0.15586178, 0.051201712, -0.05574015, 0.011004961, 0.04386166, 0.11692864, 0.008844962, -0.07634434, 0.017237084, 0.0016323748, 0.010188957, -0.041119553, 0.002554004) * inp_3_2_2;
result2 += M4(-0.103635855, 0.21784326, -0.13587059, -0.35419613, 0.20600216, 0.47627842, -0.2870881, -0.930401, 0.044500142, -0.042541455, 0.094047874, -0.03281978, 0.045493197, -0.031918686, -0.1088684, 0.002809345) * inp_3_0_0;
result2 += M4(0.19249105, -0.051852692, 0.08068763, -0.046794835, 0.39253223, -0.20681797, -0.3071967, -0.70802903, -0.031074798, -0.10585034, 0.28703815, -0.0992385, 0.0103970645, -0.0064417487, -0.06456235, 0.15826654) * inp_3_1_0;
result2 += M4(0.06473846, -0.028811192, -0.016735923, 0.10896172, 0.28018892, 0.017665058, -0.15745583, -0.1784335, 0.046376154, -0.048424784, 0.11238771, 0.08294912, 0.040740512, 0.06497799, -0.026949983, 0.060919166) * inp_3_2_0;
result2 += M4(-0.8633351, 0.8283246, -0.036326714, -0.7995669, 0.05532366, -0.04401733, 0.03010207, -0.07525483, -0.04994537, 0.07407706, 0.054821197, -0.030883543, -0.10867963, 0.267614, -0.18325415, 0.0035117737) * inp_3_0_1;
result2 += M4(-0.09937999, 0.28001788, -0.06138162, -0.12432357, 0.080671236, 0.22956274, 0.12058039, 0.16250442, -0.32428458, -0.23500323, 0.2286432, -0.116187744, -0.14772466, 0.18380985, 0.007997263, -0.31045377) * inp_3_1_1;
result2 += M4(-0.117416434, -0.008269394, 0.054047816, -0.09334604, 0.08437487, -0.043212064, -0.11157846, 0.00706703, 0.10470417, 0.055826023, -0.03200874, -0.06579435, -0.015056697, 0.06340144, -0.052412342, -0.009344275) * inp_3_2_1;
result2 += M4(-0.89309275, 0.45231202, 0.005553009, -0.2271485, -0.014126794, -0.05748891, -0.0326996, -0.03566514, -0.02492587, 0.022299992, 0.039326653, -0.0064354045, 0.02715479, 0.0040139225, 0.009149871, 0.01476765) * inp_3_0_2;
result2 += M4(-0.16695513, -0.10379552, -0.04809947, -0.024803383, -0.027351547, 0.010618637, -0.013406221, 0.028449306, 0.16490756, 0.037394505, -0.003649042, 0.13043085, -0.09352414, 0.07740424, 0.013147284, 0.011387607) * inp_3_1_2;
result2 += M4(0.039393626, -0.039682057, -0.027382568, -0.030978914, -0.00033440083, 0.027630033, 0.010305286, 0.060036305, 0.009641742, 0.03387769, -0.008292754, -0.052675962, 0.04750279, -0.0022538097, -0.03782374, 0.015602302) * inp_3_2_2;
result3 += M4(-0.11789011, 0.44516036, -0.08934431, 0.220267, 0.12198885, -0.6329441, -0.15433398, 0.17256717, 0.03643419, 0.005992591, 0.022825183, 0.014848481, -0.0030650853, 0.12992474, -0.06241627, -0.007614445) * inp_3_0_0;
result3 += M4(0.1392299, -0.004387685, -0.011434133, 0.13943672, 0.4175717, 0.0046960246, -0.16086748, 0.46190843, -0.07758773, -0.06420011, 0.070704944, 0.004813976, -0.0067026247, -0.0053799874, -0.04917083, 0.1063254) * inp_3_1_0;
result3 += M4(-0.060307685, 0.03610157, -0.00715225, 0.14505748, 0.057170462, -0.26744834, -0.06521344, 0.2117836, -0.009516656, -0.1678915, 0.05200416, 0.17440742, -0.011559588, 0.055006467, -0.032087192, -0.021654543) * inp_3_2_0;
result3 += M4(0.15943098, -0.7433741, 0.17446794, -0.44427413, 0.11725368, -0.12007593, 0.16977297, 0.011650246, -0.058553025, 0.028326806, -0.10134037, 0.004153015, -0.07997054, 0.05444323, -0.14236689, -0.12852179) * inp_3_0_1;
result3 += M4(0.3903258, -0.08046317, 0.103695065, 0.2229703, 0.4978261, -0.47582284, 0.5576808, 0.07237802, 0.2307845, 0.2831375, 0.39819437, -0.026871437, -0.02375542, -0.10765991, 0.022902295, -0.0893218) * inp_3_1_1;
result3 += M4(0.052341223, 0.061019912, 0.07044633, -0.14360698, 0.25965774, -0.4483095, -0.027038181, 0.0057507213, -0.10209962, -0.1035324, -0.06031837, 0.061010994, 0.037079018, 0.0726551, -0.015500315, -0.05850454) * inp_3_2_1;
result3 += M4(0.08071034, -0.8508103, 0.13581967, -0.44484496, 0.008995087, 0.023074625, -0.040651105, 0.01799218, -0.016711365, -0.059008274, -0.054008543, 0.010594087, 0.00041932653, 0.0015985828, -0.015563423, -0.037431866) * inp_3_0_2;
result3 += M4(0.19429405, 0.0619476, -0.1947009, -0.015263614, 0.016195027, 0.015985524, 0.008769321, 0.02907986, 0.05927154, 0.069897935, 0.13867302, -0.01332996, -0.025319148, -0.13105705, -0.0071523706, -0.040623024) * inp_3_1_2;
result3 += M4(-0.01497422, -0.04198167, -0.002937042, 0.0068572527, -0.01890894, 0.007862905, -0.0062713735, -0.03638882, -0.06070135, 0.037883688, -0.0064867814, 0.0411706, -0.057592593, -0.045405235, -0.003021456, -0.084143095) * inp_3_2_2;
const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2);
imageStore(out_image, output_base + ivec2(0, 0), max(result0, V4(0.0)));
imageStore(out_image, output_base + ivec2(1, 0), max(result1, V4(0.0)));
imageStore(out_image, output_base + ivec2(0, 1), max(result2, V4(0.0)));
imageStore(out_image, output_base + ivec2(1, 1), max(result3, V4(0.0)));
}
//!DESC ArtCNN C4F16 DS (Conv2D-4-ReLU)
//!COMPUTE 24 32 12 16
//!HOOK LUMA
//!BIND conv2d_3
//!SAVE conv2d_4
//!WIDTH LUMA.w 2.0 *
//!HEIGHT LUMA.h 2.0 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
# define V4 f16vec4
# define M4 f16mat4
# define F float16_t
#else
# define V4 vec4
# define M4 mat4
# define F float
#endif
const ivec2 ksize = ivec2(3, 3);
const ivec2 offset = ksize / 2;
const ivec2 wg_size = ivec2(gl_WorkGroupSize);
const ivec2 isize = wg_size + ksize - 1;
shared V4 inp[4][isize.y][isize.x];
void hook() {
const uvec2 local_xy = gl_LocalInvocationID.xy;
ivec2 base = ivec2(gl_WorkGroupID) * wg_size;
for (uint y = local_xy.y; y < isize.y; y += wg_size.y) {
for (uint x = local_xy.x; x < isize.x; x += wg_size.x) {
const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2);
inp[0][y][x] = V4(conv2d_3_mul * texelFetch(conv2d_3_raw, input_base + ivec2(0, 0), 0));
inp[1][y][x] = V4(conv2d_3_mul * texelFetch(conv2d_3_raw, input_base + ivec2(1, 0), 0));
inp[2][y][x] = V4(conv2d_3_mul * texelFetch(conv2d_3_raw, input_base + ivec2(0, 1), 0));
inp[3][y][x] = V4(conv2d_3_mul * texelFetch(conv2d_3_raw, input_base + ivec2(1, 1), 0));
}
}
barrier();
V4 result0 = V4(-0.008426555, -0.00608675, 0.015372099, -0.017764276);
V4 result1 = V4(-0.0028048248, -0.0015283623, 0.0020479837, -0.0020652146);
V4 result2 = V4(0.00010571977, -0.07778373, -0.0116359, 0.004983804);
V4 result3 = V4(-0.00149783, 0.0037423728, -0.008396466, -0.006738096);
const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0];
const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1];
const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2];
const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0];
const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1];
const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2];
const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0];
const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1];
const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.049150884, 0.08303821, 0.012033905, -0.050011367, 0.0020335198, 0.038214095, 0.040487107, -0.03879806, 0.005820402, 0.04119077, 0.029286033, -0.08306024, -0.0025097895, 0.10817701, -0.05270257, 0.045387577) * inp_0_0_0;
result0 += M4(-0.024534283, -0.123805664, -0.12625104, 0.19290835, -0.012097858, 0.028951729, -0.016953299, 0.0059751193, -0.002781773, 0.040795483, -0.029265823, 0.11695778, 0.02120979, -0.054219384, -0.017283525, -0.0056273555) * inp_0_1_0;
result0 += M4(0.03221165, -0.013001583, 0.05105026, 0.032833066, 0.0038700192, -0.010910044, 0.016625457, -0.011530757, -0.013329594, -0.0071691833, 0.020649964, -0.023414345, -0.011355357, 0.014325664, -0.0038959065, -0.006348593) * inp_0_2_0;
result0 += M4(0.011664604, 0.009803041, -0.09092676, 0.15226963, -0.006475794, 0.03587541, -0.06814583, 0.06952799, -0.04129393, -0.005290738, -0.03422334, 0.06247801, 0.03988757, 0.22598296, 0.082593344, -0.10963729) * inp_0_0_1;
result0 += M4(-0.005369066, 0.07645678, 0.3038982, -0.23668298, -0.07865444, 0.008021137, -0.049542636, 0.028636122, 0.091397695, 0.007837717, 0.09681184, -0.12683915, -0.031565387, -0.054583948, -0.17562395, 0.13913758) * inp_0_1_1;
result0 += M4(0.011882371, 0.0072891493, -0.1607509, 0.14571878, 0.029746724, 0.013717824, 0.009265695, -0.004600145, -0.050382476, 0.0063097286, 0.009816309, -0.021377675, 0.0056368685, 0.014222139, 0.060489733, -0.026733067) * inp_0_2_1;
result0 += M4(0.0071429755, -0.20079894, 0.012684972, 0.042572815, -0.044874936, -0.061423592, 0.03596551, -0.04179123, 0.008989061, -0.022877404, -0.0010687895, 0.018489586, -0.022968484, 0.17141557, 0.06674847, -0.012953668) * inp_0_0_2;
result0 += M4(-0.074000455, 0.1140714, -0.08493611, 0.10659857, 0.14503445, 0.020435661, 0.05438315, -0.019376434, -0.11986935, 0.013349634, -0.03127411, 0.057553403, -0.0978607, -0.09611534, -0.08649995, 0.11466242) * inp_0_1_2;
result0 += M4(-0.02161664, -0.008538941, -0.03418239, -0.005687312, -0.122034654, 0.030773161, -0.0010687078, 0.00909646, 0.0046407483, 0.005907978, -0.041347902, 0.04246942, 0.026435863, 0.03583877, 0.03428033, -0.04170504) * inp_0_2_2;
result1 += M4(0.0078585325, -0.05996815, -0.022563439, -0.06463917, -0.0064566745, 0.058760103, -0.011402986, 0.028585859, -0.032048915, 0.087861136, -0.0032572711, 0.04040367, -0.085849166, 0.0030982697, 0.010833698, -0.02255308) * inp_0_0_0;
result1 += M4(-0.045727197, -0.05950175, 0.008893502, -0.18198222, -0.019911386, 0.022098675, 0.0014515361, 0.06689043, -0.024244215, 0.04516908, -0.027911257, -0.12396394, 0.04867298, 0.032395583, 0.007539635, 0.069002435) * inp_0_1_0;
result1 += M4(0.018299026, 0.0117934365, -0.010762547, 0.00023430059, 0.011959791, 0.034315705, -0.002402146, 0.040339895, 0.0034737564, 0.027308892, -0.0034999792, 0.06104032, -0.041968938, 0.007523146, 0.010161941, 0.038289234) * inp_0_2_0;
result1 += M4(-0.002173211, -0.08541823, -0.041780178, -0.041376557, 0.041082446, -0.09464818, -0.0037029267, -0.081314795, 0.016914576, 0.13190606, 0.04237886, 0.052297175, -0.14287877, -0.019695375, 0.060547326, -0.07931451) * inp_0_0_1;
result1 += M4(-0.027099535, 0.102475405, 0.06828852, 0.24934609, 0.016280547, 0.01390727, 0.00061969925, -0.31006145, 0.04003824, 0.398926, 0.0077802837, 0.38100955, 0.07592722, 0.039221898, 0.021819592, -0.085333474) * inp_0_1_1;
result1 += M4(-0.0029919604, 0.03372558, -0.07449223, 0.11334248, -0.018319916, -0.01791459, 0.0009454129, 0.0063748835, -0.0072452947, 0.042601515, -0.0068102847, 0.024755985, -0.0053090374, 0.0022485254, 0.040401448, -0.0030272396) * inp_0_2_1;
result1 += M4(-0.04202046, 0.08017681, 0.050020546, -0.018225204, -0.035582356, 0.08675299, -0.03960666, 0.1534292, -0.02559914, -0.0829763, -0.04531911, -0.023071459, 0.015945915, -0.13558877, 0.16028292, -0.020069852) * inp_0_0_2;
result1 += M4(-0.0065235347, -0.1342791, -0.0008180927, -0.12993091, 0.0148595, 0.19743621, 0.00071265805, 0.40621808, -0.016882312, -0.37665656, -0.025039185, 0.05541135, -0.008819757, -0.06528289, -0.10738381, 0.006010138) * inp_0_1_2;
result1 += M4(-0.014865434, 0.018772328, -0.025438642, 0.07760517, 0.0029619993, 0.09237267, 0.007121208, 0.28030843, -0.0045525124, -0.005558696, -0.009678157, -0.037318688, -0.0060138237, -0.002889905, 0.012129418, -0.05804243) * inp_0_2_2;
result2 += M4(-0.022364201, -0.013249184, 0.014853851, 0.00080365554, 0.0060181576, 0.048146565, 0.014607722, 0.016596831, -0.0183556, 0.056102104, -0.00052671734, -0.041792676, -0.018434923, -0.02822732, 0.016246246, -0.09330346) * inp_0_0_0;
result2 += M4(-0.034384638, -0.07264316, 0.0048400126, -0.017245, -0.04574911, -0.10659211, -0.049507152, 0.010289987, 0.009845357, 0.018282808, 0.084556624, 0.053067964, 0.047609176, 0.018970646, -0.046951596, 0.12136056) * inp_0_1_0;
result2 += M4(0.064278424, -0.098603316, -0.045026373, 0.14673443, 0.0110972235, 0.066848904, 0.004796281, 0.026504219, 0.019734928, -0.019358668, -0.17578258, 0.035338067, -0.023462994, -0.08917895, 0.06494865, -0.040515177) * inp_0_2_0;
result2 += M4(-0.03300244, -0.0130630415, 0.011616013, -0.0044976925, 0.059372265, 0.034085125, -0.02934885, -0.0889128, -0.02434373, -0.025111675, -0.0015805602, 0.06150025, 0.12625213, 0.058361962, -0.15754679, 0.1131245) * inp_0_0_1;
result2 += M4(-0.051687285, 0.040105425, -0.042874604, 0.33462095, 0.056855943, 0.04666625, 0.03622229, 0.015373705, 0.16100606, -0.041350003, -0.09312386, 0.054633576, -0.16607627, 0.040797215, 0.18893753, -0.097198226) * inp_0_1_1;
result2 += M4(0.028004581, -0.015539259, -0.22522146, 0.0060853674, -0.048761923, -0.048834134, -0.28062484, 0.056633484, 0.04163052, -0.019175977, -0.08420383, -0.028913291, -0.002224595, -0.07248951, -0.1351111, 0.101979166) * inp_0_2_1;
result2 += M4(-0.059391137, -0.09777779, -0.010915842, 0.08154052, -0.027239826, -0.0999652, 0.017582547, 0.10848965, 0.055354934, 0.04829804, -0.03856575, -0.0045682085, -0.075407736, -0.01699219, 0.0902257, -0.048990272) * inp_0_0_2;
result2 += M4(0.05914576, 0.017374162, 0.04711798, 0.07290516, -0.07408, -0.07172962, -0.05045581, -0.020704951, 0.056072317, -0.013344145, 0.014590832, 0.09366182, -0.024296649, -0.054654602, -0.06599339, 0.07888074) * inp_0_1_2;
result2 += M4(0.013118569, -0.038554475, 0.056193497, 0.09734985, 0.058845464, 0.068595126, 0.090914205, -0.009718755, 0.024079375, 0.01061387, 0.018581096, 0.033399493, -0.0077493726, -0.039792363, 0.010018722, -0.048118595) * inp_0_2_2;
result3 += M4(0.040209252, -0.026553592, -0.042522084, 0.018986344, -0.0036692854, 0.004334352, 0.012089633, 0.0131459525, -0.021956816, 0.1315891, 0.03481177, -0.028497085, 0.032782964, 0.11643782, 0.065594785, 0.10531411) * inp_0_0_0;
result3 += M4(0.1165321, 0.07589202, 0.08236476, 0.006405895, 0.033018623, -0.045625623, -0.045705937, 0.022749389, 0.1261274, 0.0033127721, 0.1008741, 0.0032506906, 0.0022236253, 0.08464684, 0.27013272, 0.007771924) * inp_0_1_0;
result3 += M4(0.12612556, -0.06447687, 0.05410633, 0.00016651677, 0.0023512023, 0.075208336, 0.07294793, 0.007787609, -0.024997905, -0.051295586, -0.021743614, -0.013990702, -0.018744811, 0.091843784, -0.010463005, -0.00018233173) * inp_0_2_0;
result3 += M4(0.07365277, -0.28903717, 0.26424924, 0.19585352, 0.14000684, -0.15104769, 0.027192613, -0.0023709072, 0.018775968, -0.021467654, 0.14627346, 0.18203463, -0.046538375, 0.014291119, 0.18974608, 0.099733375) * inp_0_0_1;
result3 += M4(0.38158882, 0.29611287, -0.16693959, 0.08341537, -0.08217879, 0.032737907, -0.040266223, 0.009462242, 0.088758506, 0.11121866, -0.24215022, -0.123734735, -0.010545846, -0.31716895, 0.4755067, 0.03863355) * inp_0_1_1;
result3 += M4(-0.050887097, -0.15354572, 0.06841218, -0.017394107, 0.045365237, 0.027251005, 0.019162906, 0.0054504545, 0.04566615, 0.06732857, 0.10730817, 0.043945577, 0.0013263884, 0.13601455, -0.12844922, -0.044564318) * inp_0_2_1;
result3 += M4(0.06725607, -0.11217208, 0.087947935, 0.07439899, -0.104916416, -0.11723395, -0.028964618, 0.052976683, 0.03999117, -0.028815921, 0.07611735, -0.026506374, 0.055216532, 0.21016432, 0.01633367, 0.080003835) * inp_0_0_2;
result3 += M4(-0.09182148, 0.082572475, 0.058990464, 0.108496144, 0.11612998, -0.009283795, 0.03823256, -0.06595171, 0.036401995, -0.035394445, -0.054898217, 0.004169619, -0.11469271, 0.02436147, 0.09900298, 0.037545457) * inp_0_1_2;
result3 += M4(-0.063864306, 0.012776135, -0.019585809, -0.02203825, -0.0074706925, 0.00024170175, -0.0020833344, 0.0197678, -0.0136811, 0.05918462, 0.015717145, 0.013089661, 0.03335363, 0.08093602, -0.01813918, -0.008561933) * inp_0_2_2;
const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0];
const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1];
const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2];
const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0];
const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1];
const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2];
const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0];
const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1];
const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.022620026, -0.01327496, -0.018181378, 0.04291668, 0.0023275688, 0.04389994, 0.011092448, -0.012143834, 0.038579885, 0.62080353, -0.06904402, 0.0893757, 0.022484886, 0.06868525, 0.018686157, -0.053071123) * inp_1_0_0;
result0 += M4(0.05813249, -0.054660797, 0.16666593, -0.14256336, -0.050821535, -0.07752234, -0.16446769, 0.22290903, -0.036485523, 0.040691316, 0.30419165, -0.27348974, 0.0038400025, -0.020716436, -0.060080424, 0.04764196) * inp_1_1_0;
result0 += M4(-0.014677769, 0.013217832, 0.057844646, -0.055169865, 0.0033487824, 0.037252087, 0.025515193, 0.0063637146, -0.1259608, -0.08265291, -0.1548423, 0.36920395, -0.01885184, 0.025629159, -0.0040633455, -0.022334332) * inp_1_2_0;
result0 += M4(0.028262679, -0.13026789, -0.040962823, 0.027758371, -0.059275705, -0.102889016, -0.077182, 0.106376484, 0.0048567164, 0.2970851, -0.011338717, -0.020883067, -0.0016620158, 0.12083735, 0.032132026, -0.08941088) * inp_1_0_1;
result0 += M4(0.015686521, -0.03632428, -0.14787531, 0.08351627, -0.09814197, 0.114231825, -0.20883533, 0.21958128, 0.1684584, 0.10849257, 0.0143906055, -0.04515439, 0.1269198, -0.12782094, -0.008432858, 0.004856888) * inp_1_1_1;
result0 += M4(0.09946998, 0.041347824, -0.08354351, 0.08815269, -0.044631567, -0.041491847, -0.07028814, 0.05412051, 0.10032194, 0.107704975, -0.070754066, 0.0972406, -0.027598878, 0.033939812, 0.05288882, -0.083937734) * inp_1_2_1;
result0 += M4(-0.055530038, -0.12487986, 0.0002808986, -0.020966293, -0.07799559, -0.21576436, -0.025372665, 0.0050066435, -0.008635724, 0.26010534, -0.015682472, -0.0026390448, 0.04842233, 0.19143379, -0.009159703, -0.012553214) * inp_1_0_2;
result0 += M4(0.19082817, 0.026858827, 0.010448402, -0.0062468736, 0.15747243, 0.11308306, 0.00602183, -0.02033222, 0.0560767, 0.012797307, 0.025911804, -0.001760403, -0.07928981, -0.042633023, -0.03221251, 0.025901975) * inp_1_1_2;
result0 += M4(-0.000717464, -0.006014153, 0.005190413, -0.01235481, -0.04434364, -0.023538467, 0.020146336, -0.02010874, -0.017244585, -0.04207766, 0.04001201, -0.0541728, 0.030088598, 0.07799774, 0.0027739797, -0.005752545) * inp_1_2_2;
result1 += M4(-0.039079234, -0.01061953, -0.0035817276, 0.11568597, -0.08901245, 0.019681716, 0.005750874, 0.041182578, -0.097447924, 0.18440036, -0.023536533, 0.15858142, 0.07145393, -0.02615318, 0.005340458, 0.047621462) * inp_1_0_0;
result1 += M4(0.22495309, -0.034155764, 0.07078434, 0.14927644, -0.22218378, -0.07318315, 0.0058430852, -0.21889053, 0.15596004, 0.21190634, -0.008688967, 0.21138738, 0.0030142656, -0.04250895, 0.0068484037, -0.13113923) * inp_1_1_0;
result1 += M4(-2.0481179e-05, 0.027475659, 0.0075741364, 0.055654224, -0.09165779, 0.017131073, -0.0050730384, -0.06332306, -0.04585, 0.0027711522, 0.0506858, -0.029632602, -0.046465766, 0.0021791956, -0.03159896, -0.11156554) * inp_1_2_0;
result1 += M4(-0.049355168, 0.0044603003, 0.016708039, -0.038491063, 0.044376597, -0.023473237, 0.06602814, -0.017010847, -0.018081142, -0.06254764, 0.105830394, -0.03734744, -0.061663393, 0.02977158, -0.008808717, -0.11525575) * inp_1_0_1;
result1 += M4(-0.07880728, 0.0991995, -0.20954509, -0.17399926, -0.26611617, -0.13118474, 0.27420774, -0.011622579, -0.11214057, -0.4080341, -0.027038977, -0.4004163, 0.046804074, 0.015074709, 0.010166618, 0.010747146) * inp_1_1_1;
result1 += M4(0.029214008, 0.09886194, 0.008267249, 0.086701736, -0.049656343, -0.16645259, 0.101058625, -0.010884626, 0.010018297, -0.028117293, 0.10005749, 0.06882886, -0.04031949, -0.059592918, 0.03857011, 0.027322678) * inp_1_2_1;
result1 += M4(0.020888817, 0.050819844, 0.049289692, 0.024094107, 0.018319238, 0.041710917, -0.04065574, 0.011622537, 0.017747907, 0.05181506, 0.028695958, 0.026020106, -0.023893584, -0.12155769, 0.05525344, -0.013230433) * inp_1_0_2;
result1 += M4(-0.0024397685, 0.3499193, 0.058017172, 0.23077789, 0.01184294, 0.03937722, 0.1694573, 0.048050348, 0.0050289696, 0.24493644, 0.05948066, 0.24590576, -0.011640065, -0.2008774, -0.014614097, -0.07029619) * inp_1_1_2;
result1 += M4(-0.00539391, 0.07612528, -0.0075564296, 0.061175168, -0.014973727, 0.028482888, 0.06390409, 0.07168227, -0.0023132476, -0.015594459, 0.008530318, -0.0033192455, 0.011050624, -0.035543885, 0.040238176, -0.030256292) * inp_1_2_2;
result2 += M4(0.021471538, -0.09850521, -0.025392812, 0.022848705, -0.019976025, -0.103127845, -0.003921275, 0.021711862, 0.0342323, 0.022990294, -0.01190668, 0.12412443, -0.004483523, 0.024666967, -0.008162571, -0.00874651) * inp_1_0_0;
result2 += M4(0.30154854, -0.025987314, -0.025388924, 0.08813571, -0.26051033, -0.09790321, -0.12128715, -0.21326691, -0.17002036, -0.02613252, 0.02510786, 0.066083886, 0.07025742, -0.005285561, 0.04968494, -0.07117679) * inp_1_1_0;
result2 += M4(0.13845839, -0.0335208, 0.36684504, 0.043384336, -0.09438671, -0.04504794, -0.16000237, 0.08285503, 0.087093025, 0.066606, -0.058267154, 0.07617475, -0.11356545, 0.053113904, 0.12596144, -0.015543503) * inp_1_2_0;
result2 += M4(0.17756566, -0.0006699291, -0.016469292, -0.059206545, 0.048780378, -0.06036686, 0.007196549, -0.027418237, -0.00023978966, -0.07722639, 0.038196407, 0.04246414, 0.030720234, -0.007863836, 0.0006818092, -0.030686336) * inp_1_0_1;
result2 += M4(0.3078429, -0.081423186, 0.019449547, 0.0032560404, 0.21689391, -0.07842903, -0.14349711, 0.1685552, 0.13458614, 0.039602347, -0.08584586, -0.021086972, 0.04326235, -0.054115333, 0.05798604, -0.13014658) * inp_1_1_1;
result2 += M4(0.06498943, -0.086946845, 0.05251322, 0.009698596, 0.059840333, -0.10438388, 0.16757676, -0.04400854, 0.011354857, 0.03151137, 0.09117436, 0.10245809, 0.06644416, 0.0058932444, -0.04768499, -0.056727793) * inp_1_2_1;
result2 += M4(-0.024726087, -0.03572822, -0.0029814835, -0.013115334, -0.052180223, -0.08267553, 0.016829582, 0.020023298, -0.058056474, -0.083976805, -0.03556371, -0.015571186, 0.045359172, 0.051526003, 0.0007805793, -0.016840192) * inp_1_0_2;
result2 += M4(0.14000556, -0.034591094, -0.040579926, 0.06224335, 0.03379367, -0.040835015, -0.05913732, -0.015605768, -0.0076182503, -0.044957284, 0.015172679, 0.024903005, 0.014372602, 0.026607422, -0.015194611, 0.019344516) * inp_1_1_2;
result2 += M4(0.022330536, -0.09619411, 0.0011024416, -0.003842784, 0.05433146, 0.022143684, 0.0057521216, -0.026110109, -0.0052812425, -0.016573504, -0.05022548, -0.088225864, -0.024511667, 0.03860204, -0.02007638, -0.02116371) * inp_1_2_2;
result3 += M4(-0.0132755935, -0.015579417, -0.04340575, 0.07382461, 0.02273824, -0.023590509, 0.039535116, -0.020950135, 0.03226639, -0.4095456, 0.2760161, -0.058276474, -0.02063578, 0.19306506, -0.15992817, 0.0823071) * inp_1_0_0;
result3 += M4(-0.016031329, -0.1749272, 0.13842008, -0.08440001, 0.16516167, -0.07927805, -0.051492058, 0.026846396, -0.046929114, 1.0037713, -0.32727426, 0.22876357, -0.05126102, -0.05051552, 0.18941402, -0.0112335365) * inp_1_1_0;
result3 += M4(0.05071907, 0.028737139, -0.09987869, 0.027525974, -0.052988265, 0.13088825, -0.064435005, 0.00020091378, 0.23576446, 0.6250477, 0.3584848, 0.06366445, -0.05879213, -0.039108362, -0.14976116, 0.012957173) * inp_1_2_0;
result3 += M4(0.05227246, -0.01307796, 0.037732925, -0.110685445, 0.022667404, -0.07803258, 0.11074173, 0.07299939, -0.0773058, -0.18408875, 0.21162948, -0.028747616, 0.008178176, 0.12275557, -0.09961481, -0.12878387) * inp_1_0_1;
result3 += M4(-0.016670937, -0.12284226, -0.19469082, 0.079835355, -0.1918625, -0.24832599, -0.18991998, -0.17906106, 0.14227316, 0.311541, 0.0972453, 0.1792504, -0.02943, -0.17458557, 0.14336902, 0.018938327) * inp_1_1_1;
result3 += M4(-0.09515898, -0.12812407, 0.08365541, -0.01114714, 0.008249364, 0.052085567, 0.014467139, -0.04992895, -0.081930816, 0.18790627, 0.09079781, -0.0024972733, 0.071153775, 0.15428342, -0.14747834, 0.009520206) * inp_1_2_1;
result3 += M4(-0.042183597, -0.014994091, 0.08093629, 0.055007707, -0.06690945, -0.13523485, 0.028103815, 0.03372316, -0.014526776, -0.09204054, 0.116618514, 0.2201747, 0.027195483, 0.0014581153, 0.021532962, -0.102800645) * inp_1_0_2;
result3 += M4(-0.06537036, 0.04932205, -0.07995993, -0.09449995, -0.014847251, 0.12263274, -0.01210368, -0.004844193, 0.04247423, 0.09640001, -0.04244972, 0.052659232, 0.018430978, 0.0024422226, 0.07842791, 0.12178166) * inp_1_1_2;
result3 += M4(0.0008514792, -0.09858568, 0.051041268, 0.03289633, -0.00683587, -0.03806706, 0.037325554, -0.02217423, 0.016620057, 0.028475462, 0.045836117, 0.05448259, 0.021301929, 0.16057958, 0.018034654, -0.04381985) * inp_1_2_2;
const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0];
const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1];
const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2];
const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0];
const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1];
const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2];
const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0];
const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1];
const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.06914195, 0.13339214, 0.048398618, -0.12811656, 0.021253617, -0.36309642, 0.018277615, -0.028090471, 0.03661727, -0.036048584, 0.010660018, -0.034270763, 0.015104975, -0.15772496, -0.02071043, -0.0045651104) * inp_2_0_0;
result0 += M4(0.030586412, 0.026632411, 0.19549118, -0.20182693, -0.028451914, 0.020268882, -0.09259671, -0.024433767, -0.013178127, -0.05355112, 0.018274756, -0.030340966, 0.012110066, -0.06680609, 0.101139, -0.1564674) * inp_2_1_0;
result0 += M4(-0.024503978, -0.0013736278, 0.005488263, 0.0012488114, 0.026574386, 0.04773289, -0.0125016775, -0.09893556, 0.006143325, 0.049946632, 0.06725519, -0.098342024, -0.0041975807, -0.0040963376, -0.011283104, -0.056529332) * inp_2_2_0;
result0 += M4(0.034050535, 0.22817062, -0.037159316, 0.05455461, -0.019964907, -0.15749495, -0.0098566655, -0.05521167, -0.062018666, 0.18009211, 0.10512735, -0.102831826, 0.103150815, -0.02711431, -0.11689084, 0.09794336) * inp_2_0_1;
result0 += M4(-0.064001545, -0.1760742, -0.14141054, 0.2979168, 0.0040153014, -0.14978859, -0.0468201, -0.06465487, -0.008661776, -0.10349149, 0.27369124, -0.37374756, 0.05493842, 0.103665985, 0.076477915, 0.035448242) * inp_2_1_1;
result0 += M4(0.066968516, 0.046631306, 0.100027256, -0.0695818, -0.08668963, -0.021459226, -0.06689473, -0.07044926, -0.01727822, -0.014256105, 0.21263537, -0.17862949, 0.07852968, 0.0036043774, -0.07873951, 0.0794069) * inp_2_2_1;
result0 += M4(0.016434139, 0.176921, 0.03046453, -0.0027281933, 0.036648605, -0.328887, -0.005089097, -0.022565803, 0.1319457, 0.33265725, 0.01906483, -0.028372983, -0.06404304, 0.09938218, -0.030138487, -0.010661682) * inp_2_0_2;
result0 += M4(-0.009668426, -0.10699222, 0.04481441, -0.08269405, -0.24650784, 0.00788138, -0.015949186, -0.0031860343, -0.22258663, -0.13550116, 0.110215284, -0.084069595, 0.37387764, 0.0044653243, 0.06622237, -0.08521602) * inp_2_1_2;
result0 += M4(0.065998, 0.053278346, 0.018090721, -0.005278992, -0.10324106, 0.014011967, -0.043487675, 0.033378452, 0.02550825, -0.0054437267, -0.0023925824, 0.0026046822, 0.033575617, -0.055714846, -0.0210072, -0.00492163) * inp_2_2_2;
result1 += M4(-0.042199537, 0.06514403, 0.0041182763, 0.10419434, -0.066554256, 0.053522147, -0.012046035, 0.07695172, 0.026147608, 0.0022100087, 0.0014933374, 0.020186525, -0.024421744, 0.013735968, 0.012807708, 0.024805086) * inp_2_0_0;
result1 += M4(0.090034455, 0.053199038, -0.031491235, 0.30642694, -0.09002187, -0.05888926, -0.036953535, -0.24115825, -0.01967388, 0.06827584, 0.023875365, 0.17267382, 0.17968073, 0.0328792, -0.018938016, 0.10217199) * inp_2_1_0;
result1 += M4(-0.0070945737, -0.029887404, 0.019907847, 0.080578774, -0.0104916375, 0.031485423, -0.0040368116, -0.20609824, -0.01288717, -0.030881308, -0.00923019, -0.039783157, 0.043159645, 0.034918122, 0.015641898, 0.049612198) * inp_2_2_0;
result1 += M4(0.09977873, -0.06861798, -0.016068403, 0.042247154, -0.023489943, -0.14908704, -0.011956723, -0.12897724, 0.054896604, 0.0053481786, -0.07075523, -0.029364835, 0.10753287, -0.04370973, 0.06913493, -0.010281068) * inp_2_0_1;
result1 += M4(0.011263082, -0.1430765, -0.09116641, 0.15478596, 0.0005909401, -0.21261545, -0.038970474, -0.39987388, 0.019126404, 0.08268185, -0.0087345075, -0.078335196, -0.09388122, -0.15557027, -0.17419119, -0.020753648) * inp_2_1_1;
result1 += M4(-0.019960165, 0.04416159, -0.0032977522, 0.05851758, 0.009656801, -0.37775734, -0.042743668, -0.36597484, 0.013834739, 0.15288833, 0.00076176226, 0.09931899, 0.015045023, -0.062259644, -0.0570378, -0.12763566) * inp_2_2_1;
result1 += M4(0.007477576, 0.34166184, -0.011222693, 0.14065164, -0.020381102, -0.02349622, 0.0079839425, 0.006651996, -0.045783587, -0.005913802, 0.016870081, 0.020984847, 0.01145587, -0.021422416, -0.07780442, -0.034530077) * inp_2_0_2;
result1 += M4(-0.0046627065, 0.23707089, 0.028185658, -0.13930853, -0.020990362, -0.6822837, -0.036652133, -0.109677136, -0.012757348, -0.096634015, 0.02238962, -0.04221185, 0.0256179, 0.3560137, 0.13947178, 0.094775066) * inp_2_1_2;
result1 += M4(-0.006740598, 0.062456362, 0.009803291, -0.1394946, -0.04064796, -0.327026, -0.029296402, -0.08911293, -0.010727414, -0.14023723, 0.0072535616, -0.21302187, 0.0070622046, 0.11500551, -0.019963272, 0.12894768) * inp_2_2_2;
result2 += M4(0.008546879, -0.096371375, 0.019234747, 0.114618495, -0.06848686, -0.10632745, -0.003148084, 0.14322796, 0.004925617, -0.018583924, 0.016421888, 0.037403155, 0.06778088, -0.013342923, 0.018716635, -0.013551148) * inp_2_0_0;
result2 += M4(0.12394422, -0.040184684, -0.042171814, -0.061231904, -0.08118375, -0.07678735, -0.019878611, -0.34045586, 0.035549898, -0.07728549, 0.010788201, 0.040298194, 0.08166958, -0.05873602, 0.14200775, 0.07314623) * inp_2_1_0;
result2 += M4(0.090622835, -0.03058409, -0.02521208, 0.042029995, -0.07446186, -0.08055385, -0.5850632, -0.13793841, 0.0074929795, -0.04676867, 0.009400757, -0.03624027, 0.12717111, 0.059104852, -0.036297746, -0.081366666) * inp_2_2_0;
result2 += M4(0.11128533, -0.050807245, -0.026892664, 0.03843996, -0.07177549, -0.09760189, 0.004527165, -0.077354014, -0.00365311, -0.06801688, -0.0007698148, 0.00021632586, 0.10842108, -0.062850595, -0.03260353, -0.082710534) * inp_2_0_1;
result2 += M4(0.09407412, -0.012899483, -0.0030194717, 0.16151932, -0.15870965, 0.06328759, 0.009220904, -0.17043744, -0.0006868065, -0.038474597, 0.13184194, 0.07412256, 0.21668606, -0.09531466, -0.01679192, -0.050235253) * inp_2_1_1;
result2 += M4(0.064208165, 0.053557184, 0.13550778, -0.08410364, -0.08188253, -0.01510885, -1.1613963, -0.3922998, -0.021475751, -0.079009496, -0.42976186, 0.025112515, -0.008877652, -0.054485682, 0.4526215, -0.007519804) * inp_2_2_1;
result2 += M4(-0.019313168, -0.052006915, 0.00818925, 0.09272176, 0.030670542, -0.10598806, 0.0073383003, 0.009938494, -0.0034374336, -0.097410575, -0.0007062396, -0.0387707, -0.14739253, -0.012480915, 0.00084915553, 0.015645193) * inp_2_0_2;
result2 += M4(-0.08226901, -0.110561535, -0.01162811, -0.15771443, -0.010890763, -0.097089745, 0.028644335, -0.04562119, -0.1156834, 0.01567409, 0.13972273, -0.13550776, 0.08110466, 0.009772899, -0.017626889, -0.040904697) * inp_2_1_2;
result2 += M4(-0.033033088, -0.086606935, -0.041472204, -0.0043669054, -0.008811727, -0.08178123, -0.05344508, 0.07810757, -0.012216374, -0.0008189531, -0.022766385, -0.047102883, 0.07632525, -0.005419123, 0.1542713, -0.07334915) * inp_2_2_2;
result3 += M4(-0.21432555, -0.0049800696, -0.20435005, -0.15326726, 0.036426637, 0.10189043, 0.09616878, 0.086482376, -0.029009927, -0.014128022, 0.009796791, 0.029672232, -0.010774949, -0.12251822, 0.03800453, 0.039074153) * inp_2_0_0;
result3 += M4(-0.016606344, -0.04257638, 0.19731708, 0.08791594, -0.018101793, -0.5529762, -0.40477806, -0.13289483, -0.03224688, -0.109685324, 0.011456146, -0.032067716, -0.027908076, 0.0810277, 0.14634816, -0.046152223) * inp_2_1_0;
result3 += M4(0.052996196, 0.090979554, -0.11875185, 0.0024985601, -0.09077908, -0.120611824, -0.06547517, 0.013026569, -0.07795859, 0.073894024, -0.09333571, 0.018070828, 0.004168487, -0.12703654, -0.09890005, -0.019814925) * inp_2_2_0;
result3 += M4(0.15073748, 0.07157663, -0.32704955, -0.13619503, -0.024163775, 0.08876866, 0.06455796, -0.15121347, -0.0059654503, 0.20711628, -0.06989593, -0.07744863, 0.017520549, -0.45670873, 0.07212162, 0.18249337) * inp_2_0_1;
result3 += M4(0.064401545, -0.020970412, 0.28348637, 0.087353006, -0.18860021, -0.6594638, -0.38629526, -0.17161407, -0.24099971, -0.124352954, -0.022617377, 0.035923474, -0.009142153, 0.43985838, -0.13837199, 0.14951207) * inp_2_1_1;
result3 += M4(0.020992033, -0.017877584, -0.18158714, -0.0011831733, 0.104558416, -0.1421867, -0.062443722, 0.067995004, 0.18223514, 0.0539283, -0.06239333, 0.04832435, -0.09337277, -0.23916928, 0.023411114, -0.030298226) * inp_2_2_1;
result3 += M4(0.041208994, 0.18213409, -0.08683558, 0.10761209, -0.021152928, 0.11039553, 0.03062778, 0.04999987, 0.019212931, 0.13926001, -0.033697374, -0.021196678, -0.1009084, -0.16542406, -0.049563635, -0.005799675) * inp_2_0_2;
result3 += M4(0.07444076, 0.007324226, 0.089972325, -0.06849839, 0.08805609, -0.09015601, -0.042139903, -0.033460326, 0.18303896, 0.0517709, 0.02929259, -0.03966305, 0.018097894, 0.17557548, 0.00048785465, -0.00889272) * inp_2_1_2;
result3 += M4(-0.029477533, 0.035944257, -0.039134536, -0.007325171, -0.11243466, -0.050041996, 0.053124238, -0.0051070033, -0.037979253, 0.05194133, -0.008782816, -0.010822968, 0.01546747, -0.14223203, 0.022589792, -0.012450892) * inp_2_2_2;
const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0];
const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1];
const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2];
const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0];
const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1];
const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2];
const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0];
const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1];
const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.016517546, 0.14071716, 0.055979695, -0.14923728, -0.013732567, 0.023582976, 0.008029366, 0.023603883, -0.010227326, -0.16249846, -0.018786658, 0.049133487, 0.03820013, 0.11328664, -0.057667863, -0.016381772) * inp_3_0_0;
result0 += M4(-0.0018407269, 0.06507868, -0.058316037, 0.07867878, 0.0037703225, -0.011257417, 0.028475052, -0.043415193, -0.030690897, 0.05359556, -0.068271086, 0.08866126, -0.036519725, -0.10291551, -0.026662095, 0.09532737) * inp_3_1_0;
result0 += M4(-0.0026858298, -0.0064280527, 0.009976274, 0.005079816, 0.00053144136, 0.031115668, 0.018778846, -0.020872941, 0.041437767, -0.022737948, -0.063349344, 0.020602591, 0.030174792, 0.06016311, -0.017268896, 0.037420183) * inp_3_2_0;
result0 += M4(0.11391104, -0.5418659, 0.106175594, 0.007830642, -0.064672254, -0.25390816, -0.04000317, 0.01172606, 0.035846617, -0.31394276, -0.016624335, -0.0030710492, -0.03197066, 0.15553272, 0.1203197, -0.22074579) * inp_3_0_1;
result0 += M4(0.073533505, 0.07670912, 0.15732332, -0.21829577, -0.3632317, -0.040219955, -0.11275347, -0.09020691, 0.22591062, 0.096453294, -0.10771133, 0.13995649, 0.15587366, -0.09109616, 0.075334035, 0.07299529) * inp_3_1_1;
result0 += M4(0.018969523, -0.048446, -0.052626546, 0.01348503, 0.036349174, 0.049467426, -0.039968934, 0.052235637, 0.024635078, -0.036596164, -0.16531141, 0.19605955, -0.08996959, 0.036513206, 0.011171901, -0.020447344) * inp_3_2_1;
result0 += M4(0.21644916, -0.28860408, -0.025285212, 0.00018547813, 0.06411445, -0.14097448, -0.014758448, -0.009142428, -0.0076014777, -0.16426326, 0.018447733, -0.0059310007, -0.32009697, 0.121759884, -0.0683219, -0.19933851) * inp_3_0_2;
result0 += M4(0.076206155, 0.15219428, 0.02398777, -0.02999749, -0.26963413, -0.022204816, -0.015889864, -0.008959731, -0.24361457, 0.035508446, -0.07435188, 0.082117595, -0.26088983, -0.1894151, -0.08925359, 0.057186298) * inp_3_1_2;
result0 += M4(-0.0650706, -0.03136949, -0.027383223, 0.06334687, -0.1275961, 0.08010305, 0.05650764, -0.022922458, -0.016520739, -0.003769084, -0.0058191377, -0.008453305, 0.13237013, 0.030589337, 0.024197489, -0.04839925) * inp_3_2_2;
result1 += M4(0.090376996, 0.032160677, -0.011271607, -0.051918563, -0.03846735, -0.032626696, 0.0026298899, 0.08346017, 0.08271624, -0.10497325, -0.0024514908, -0.09737481, 0.04699478, -0.025576802, -0.030513506, -0.18892516) * inp_3_0_0;
result1 += M4(-0.009049112, -0.009827358, -0.039982107, 0.10312807, 0.027232036, -0.053808045, 0.014220078, 0.11374512, 0.30233118, -0.18168451, -0.033631276, -0.23642822, 0.026098134, -0.039475795, 0.00010665599, -0.3187771) * inp_3_1_0;
result1 += M4(0.005020725, 0.027630454, -0.009424575, 0.010143711, 0.01388194, 0.037936732, -0.011521707, 0.2608571, 0.09862385, 0.017104909, 0.0011325767, -0.024842555, -0.054478083, -0.061899375, 0.0022155785, -0.20320337) * inp_3_2_0;
result1 += M4(-0.028083554, 0.058884908, -0.076393485, 0.14114946, -0.0175197, -0.0010038827, 0.020489998, -0.016080735, -0.041764557, 0.060056854, -0.030255709, 0.014763931, -0.033417743, 0.15704143, -0.004872463, 0.32666832) * inp_3_0_1;
result1 += M4(-0.15793063, 0.14707209, 0.02822298, 0.039801963, -0.025024747, 0.17166516, -0.013794821, -0.641853, 0.2861079, 0.14766458, -0.27688196, 0.23992361, -0.0015891942, 0.0791987, 0.009331789, 0.36340135) * inp_3_1_1;
result1 += M4(-0.0113426475, -0.011241314, -0.015015709, -0.00024118423, -0.007866718, 0.031480733, 0.015936514, -0.4048075, 0.09881601, -0.09281386, -0.10672593, -0.069426954, 0.022721149, 0.09510447, 0.07507336, 0.36284536) * inp_3_2_1;
result1 += M4(-0.029554367, 0.10454818, 0.07746192, -0.023122355, 0.023307635, -0.14831541, -0.0001424677, -0.06524427, -0.01365356, -0.12203374, -0.014507703, -0.066484444, -0.015388855, -0.83199894, 0.040152762, -1.0670595) * inp_3_0_2;
result1 += M4(-0.015179961, -0.03430511, 0.16251066, 0.017875576, 0.022566544, -0.37600192, -0.03590636, -0.036391556, 0.047104016, -0.16936892, -0.28877383, -0.18139152, -0.0025123227, -0.2371731, -0.013042876, -0.3796641) * inp_3_1_2;
result1 += M4(-0.009914548, -0.034025755, 0.03151179, 0.0124371275, -0.0031826585, 0.0340399, 0.015427581, 0.02087651, 0.024921117, 0.061125282, -0.12019245, 0.004533588, -0.026575055, -0.008458912, -0.0030413829, -0.105576664) * inp_3_2_2;
result2 += M4(0.1025674, -0.06884527, -0.032975577, 0.16163243, -0.013918836, -0.035420865, -0.015059215, -0.13011861, -0.031375922, -0.017945528, 0.0022855666, -0.07604169, -0.0058852425, -0.093399666, -0.024488239, -0.08205088) * inp_3_0_0;
result2 += M4(-0.030722225, -0.07298012, 0.056347545, 0.047832392, -0.058571827, 0.038954154, -0.0420291, 0.14690499, 0.23894222, 0.00640773, 0.04961179, -0.05923924, 0.08763642, 0.04150139, -0.08312161, 0.07129397) * inp_3_1_0;
result2 += M4(0.022593182, -0.06735383, 0.22949359, -0.0059790215, 0.05046319, 0.06704688, -0.089458, -0.042153675, 0.1007029, -0.016089652, 0.23093168, -0.06334278, -0.044351403, -0.0317905, 0.20557153, 0.08849354) * inp_3_2_0;
result2 += M4(0.11986098, -0.013886524, 0.096399754, -0.017085223, -0.047992036, -0.10555099, 0.013526586, 0.06203824, -0.055617083, -0.012490696, -0.027646562, 0.012154294, -0.013802101, -0.042253494, -0.02861624, -0.15358444) * inp_3_0_1;
result2 += M4(-0.0060851173, -0.04776609, 0.28700003, -0.03461084, -0.032389536, 0.022912111, 0.028368754, -0.35953093, -0.1931182, 0.051011663, 0.072094835, -0.11615581, -0.049488205, 0.023023918, 0.10924505, -0.056530826) * inp_3_1_1;
result2 += M4(0.016539758, -0.06942417, -0.2764368, -0.061891455, -0.14943123, 0.009037495, -1.1346684, 0.0932072, -0.09891529, 0.043350488, -0.113299035, 0.024940245, 0.029970074, 0.054982573, -0.32145932, 0.034403335) * inp_3_2_1;
result2 += M4(0.09185862, -0.07626141, -0.027023315, 0.035493936, 0.017172612, 0.07152003, -0.0076461053, 0.0076034605, 0.047696777, 0.018364482, 0.020047182, -0.030043533, -0.15779461, -0.08001165, 0.047990307, -0.45145544) * inp_3_0_2;
result2 += M4(0.11439273, -0.022457212, 0.11767088, -0.071477026, -0.05590855, -0.03884055, 0.004808932, 0.10818936, -0.08204393, 0.018739952, -0.012666444, 0.09295012, -0.0036205878, 0.020579195, 0.04758364, 0.02905984) * inp_3_1_2;
result2 += M4(0.025066156, 0.0025355474, 0.076510616, 0.077349946, -0.033585873, -0.10505919, -0.036480796, -0.06836807, -0.099729896, 0.0007604975, -0.12785755, 0.05133283, -0.03571459, 0.0768302, 0.19786789, -0.13260569) * inp_3_2_2;
result3 += M4(-0.05136503, 0.13771406, -0.114014626, 0.064138405, 0.039557356, -0.0004163289, -0.021641951, -0.113257185, 0.02445102, 0.18312773, -0.14075582, -0.034481775, 0.0882804, -0.048382476, -0.03211333, 0.023749832) * inp_3_0_0;
result3 += M4(0.07260956, 0.05485739, -0.033338796, 0.0036388054, 0.06580903, 0.008388936, -0.1870041, 0.043054212, -0.019263102, -0.34647432, 0.20840128, -0.030387072, 0.077651076, 0.31734568, 0.23560731, 0.034042668) * inp_3_1_0;
result3 += M4(0.025370283, -0.067337096, 0.076694235, -0.004587968, -0.03568763, -0.050417345, 0.11035511, -0.012519302, -0.044633765, -0.08265241, -0.102170475, -0.08103162, 0.033459354, 0.3513106, -0.13261169, -0.0063433284) * inp_3_2_0;
result3 += M4(0.107587904, 0.20308128, 0.01880237, -0.22812884, 0.052069347, 0.03613893, 0.06806117, -0.27468088, -0.015811145, 0.04221028, -0.16322091, -0.146384, -0.042499647, 0.04306909, -0.22742802, -0.24797286) * inp_3_0_1;
result3 += M4(-0.1034172, -0.04162875, -0.663259, 0.0011299119, -0.30165112, -0.3667824, -0.51198894, 0.05885436, 0.12635992, -0.22895315, 0.278809, 0.1799213, 0.10070451, -0.0026272922, 0.22361255, 0.05674787) * inp_3_1_1;
result3 += M4(0.010102244, -0.21231534, 0.12898694, 0.054293495, 0.060909696, 0.08775321, 0.056001425, 0.0037596873, -0.08909185, -0.14365669, 0.029197007, -0.020237122, -0.046196915, 0.13361555, -0.1819643, -0.030644964) * inp_3_2_1;
result3 += M4(-0.060545325, -0.002060891, 0.0037631516, -0.24623048, -0.027565302, 0.11067175, 0.047710482, -0.2994418, 0.03014087, 0.07111164, -0.060236625, -0.11790484, -0.36170292, -0.30276245, -0.42436174, -0.61102) * inp_3_0_2;
result3 += M4(0.10219803, 0.19162507, -0.066527314, -0.117798224, 0.093707405, -0.16210306, -0.0021316912, 0.04660625, -0.14706184, -0.25934738, -0.027660824, 0.1517413, -0.21809323, -0.12002127, 0.1257683, -0.031414688) * inp_3_1_2;
result3 += M4(-0.048686214, -0.06841937, 0.042205945, -0.011840667, 0.06331203, 0.10386785, 0.06744185, 0.026435638, 0.03145269, -0.038988262, -0.031168215, 0.018948134, 0.045793254, 0.06672244, -0.012933256, -0.028462416) * inp_3_2_2;
const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2);
imageStore(out_image, output_base + ivec2(0, 0), max(result0, V4(0.0)));
imageStore(out_image, output_base + ivec2(1, 0), max(result1, V4(0.0)));
imageStore(out_image, output_base + ivec2(0, 1), max(result2, V4(0.0)));
imageStore(out_image, output_base + ivec2(1, 1), max(result3, V4(0.0)));
}
//!DESC ArtCNN C4F16 DS (Conv2D-5)
//!COMPUTE 24 32 12 16
//!HOOK LUMA
//!BIND conv2d_4
//!SAVE conv2d_5
//!WIDTH LUMA.w 2.0 *
//!HEIGHT LUMA.h 2.0 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
# define V4 f16vec4
# define M4 f16mat4
# define F float16_t
#else
# define V4 vec4
# define M4 mat4
# define F float
#endif
const ivec2 ksize = ivec2(3, 3);
const ivec2 offset = ksize / 2;
const ivec2 wg_size = ivec2(gl_WorkGroupSize);
const ivec2 isize = wg_size + ksize - 1;
shared V4 inp[4][isize.y][isize.x];
void hook() {
const uvec2 local_xy = gl_LocalInvocationID.xy;
ivec2 base = ivec2(gl_WorkGroupID) * wg_size;
for (uint y = local_xy.y; y < isize.y; y += wg_size.y) {
for (uint x = local_xy.x; x < isize.x; x += wg_size.x) {
const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2);
inp[0][y][x] = V4(conv2d_4_mul * texelFetch(conv2d_4_raw, input_base + ivec2(0, 0), 0));
inp[1][y][x] = V4(conv2d_4_mul * texelFetch(conv2d_4_raw, input_base + ivec2(1, 0), 0));
inp[2][y][x] = V4(conv2d_4_mul * texelFetch(conv2d_4_raw, input_base + ivec2(0, 1), 0));
inp[3][y][x] = V4(conv2d_4_mul * texelFetch(conv2d_4_raw, input_base + ivec2(1, 1), 0));
}
}
barrier();
V4 result0 = V4(0.01395028, 0.0065821023, 0.012151963, -0.011686396);
V4 result1 = V4(0.007567601, 0.00780126, -0.0045109824, -0.007215989);
V4 result2 = V4(0.011362012, 0.007443374, -0.00033980323, 0.0053856447);
V4 result3 = V4(-0.005549405, -0.0015714564, 0.032160565, -0.007952935);
const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0];
const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1];
const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2];
const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0];
const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1];
const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2];
const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0];
const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1];
const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.04433324, -0.30934793, -0.019607404, 0.030261282, -0.018949123, -0.017319785, 0.008104544, -0.061275356, 0.0892051, 0.0035568827, -0.08672504, 0.101586826, -0.22037439, -0.043921355, 0.13138391, -0.13110605) * inp_0_0_0;
result0 += M4(-0.47816843, -0.9615994, -0.19391547, -0.32461202, 0.008756141, 0.045115735, 0.051545907, -0.045708567, -0.08909632, -0.06526807, 0.076188534, -0.013099965, 0.03606462, 0.057630505, -0.009214407, 0.043997135) * inp_0_1_0;
result0 += M4(0.47563627, -0.280161, -0.59082097, -0.4076251, 0.15498635, 0.12713826, 0.07581696, -0.23896733, -0.047434475, -0.07778234, -0.04136143, -0.012498249, -0.024669673, 0.028776474, -0.019540703, 0.02970326) * inp_0_2_0;
result0 += M4(0.0025311834, 0.08429314, -0.02751702, 0.10693393, 0.06409706, 0.10670959, 0.08819416, -0.012393663, -0.096385166, -0.03015111, 0.026549073, -0.03299623, 0.07849467, 0.027503248, -0.124166965, -0.025030704) * inp_0_0_1;
result0 += M4(0.11860112, 0.20135011, 0.08890448, 0.24980232, 0.14992087, 0.11707773, 0.45380154, 0.13953088, 0.32592088, -0.5915128, 0.015282393, -0.07133254, -0.49290854, 0.60870075, -0.044992134, -0.0072802664) * inp_0_1_1;
result0 += M4(0.18988813, -0.07602612, -0.10958971, 0.021172883, -0.1447082, 0.19502747, -0.032675862, 0.034348235, -0.09252449, -0.1098991, 0.06714606, 0.1102915, 0.14396593, 0.12070807, -0.0020560354, -0.10562819) * inp_0_2_1;
result0 += M4(-0.00039583616, -0.0030759687, 0.01619969, -0.013135205, -0.046521176, 0.044488665, 0.050165277, -0.032086886, -0.03260413, 0.0046688225, 0.0904144, 0.012057313, 0.030909989, -0.0042196466, -0.15269883, -0.03254643) * inp_0_0_2;
result0 += M4(0.1458755, -0.13374996, 0.23108137, 0.043966096, 0.13703813, 0.1132725, -0.2642244, -0.029357087, 0.018464327, 0.06521073, 0.0034911786, -0.003175092, -0.2273866, 0.030390764, -0.32217333, -0.0023220342) * inp_0_1_2;
result0 += M4(-0.027185276, 0.0515764, -0.056141403, -0.0128990505, -0.13344292, 0.17378415, -0.014940973, -0.06286499, 0.10982317, 0.028587209, -0.02176531, 0.023871364, -0.24228382, 0.050106864, 0.023652764, -0.039771006) * inp_0_2_2;
result1 += M4(0.34712672, -0.0098370835, 0.09470268, 0.20812924, -0.079899415, -0.042337533, 0.05220067, -0.0062556257, 0.044850618, 0.04868146, 0.054386247, 0.0442831, -0.05443443, -0.11250331, 0.0743486, -0.036440123) * inp_0_0_0;
result1 += M4(-0.13551429, -0.47949037, -0.25163057, 1.4588873, -0.2618688, -0.0050164065, -0.124693274, -0.0072087143, 0.030833744, -0.009107516, -0.1920184, 0.04746545, 0.068699345, 0.083923385, 0.086738504, 0.070839144) * inp_0_1_0;
result1 += M4(-0.79023075, -0.22163849, 0.7317275, 0.30499616, -0.20667754, 0.0047827363, -0.4325253, 0.04111587, 0.023016142, -0.022039196, -0.04367467, 0.00072941754, -0.0066533266, 0.009458113, 0.019971604, 0.026077636) * inp_0_2_0;
result1 += M4(0.12929185, 0.025206685, 0.02453201, -0.02868119, -0.1695936, 0.045371633, 0.03151624, 0.0029184304, 0.0058167544, -0.034431692, 0.21680051, 0.009901954, -0.050775938, -0.033638615, -0.19902332, 0.07765978) * inp_0_0_1;
result1 += M4(0.22278197, -0.014939651, -0.1594548, -0.04149592, -0.10008319, 0.03752785, 0.13223262, 0.0071764635, 0.4431301, 0.13064747, -0.06436993, -0.029931527, -0.3746997, -0.13672735, -0.008084956, 0.05937435) * inp_0_1_1;
result1 += M4(0.08164402, -0.16788852, 0.122348204, 0.012865999, -0.31396744, -0.05209251, 0.26544192, -0.22905579, -0.062478557, -0.06737182, -0.14371452, 0.04542391, 0.0041427845, 0.09435157, 0.17900088, 0.06418221) * inp_0_2_1;
result1 += M4(0.012871258, 0.014489191, 0.0018181478, 0.03460854, -0.10525292, -0.028420236, 0.0689954, -0.11814124, 0.025643004, 0.044510037, 0.014700856, 0.022377685, 0.05428145, -0.10565834, -0.08092866, -0.035409313) * inp_0_0_2;
result1 += M4(-0.06336145, 0.07454592, 0.13445963, 0.26228073, -0.12794836, -0.12872271, -0.21301825, -0.1956007, 0.04870464, -0.18489268, -0.14667405, 5.4932196e-05, 0.038486242, 0.011874847, 0.019924153, -0.29784447) * inp_0_1_2;
result1 += M4(0.036447335, -0.019341623, -0.07831385, -0.048774704, -0.052167986, -0.08408824, -0.02755233, -0.19072807, -0.027387783, -0.014400503, -0.011924604, -0.059120234, 0.11964666, -0.0021738166, -0.11748631, -0.09871003) * inp_0_2_2;
result2 += M4(0.11703455, -0.102611825, -0.35409033, 0.09118818, 0.01059122, 0.005519184, -0.07329248, 0.002949439, 0.007941205, -0.027852476, -0.043033257, 0.049896203, 0.08555894, 0.015358487, -0.08260677, -0.013005677) * inp_0_0_0;
result2 += M4(-0.6476394, 0.38588038, -1.3343405, -0.41417348, -0.2255868, -0.02010253, 0.09241314, 0.014593691, -0.039904144, -0.016564416, -0.029044505, -0.048511557, 0.028547771, -0.0025979697, 0.0762609, 0.09834535) * inp_0_1_0;
result2 += M4(-0.49052814, 0.056413557, -0.5676665, -0.22379433, -0.40786058, 0.08250324, 0.15586972, 0.01715511, 0.06644455, 0.046034876, -0.007248874, -0.009505997, -0.033848297, 0.00085518736, 0.0003849163, -0.020166246) * inp_0_2_0;
result2 += M4(0.024183217, -0.03494115, 0.038555514, 0.037271716, -0.07995635, -0.01629828, 0.05459482, -0.041999448, 0.089576535, 0.046375655, 0.006594792, 0.020395597, -0.1162046, -0.028709436, -0.14379777, 0.04387677) * inp_0_0_1;
result2 += M4(-0.071287945, -0.12246213, -0.16479489, -0.13808286, -0.2935964, -0.13181207, -0.045625113, 0.20795263, 0.37708414, -0.15822177, -0.20106147, -0.009780382, -0.53788507, 0.2414624, -0.05973274, 0.3283384) * inp_0_1_1;
result2 += M4(-0.1487091, -0.015738461, -0.051169306, 0.009158522, -0.26141465, 0.011970764, -0.21271873, 0.07600736, -0.02648196, 0.06378587, 0.0014510988, -0.114893265, -0.062397745, -0.044534802, -0.039343227, 0.16827804) * inp_0_2_1;
result2 += M4(0.010892666, -0.0010121022, -0.017400589, 0.008613525, -0.062717736, -0.0008704752, 0.06922738, -0.026486395, 0.049217485, 0.00804201, 0.04713145, 0.11871004, -0.049205843, -0.061152153, -0.07604061, -0.14427046) * inp_0_0_2;
result2 += M4(0.080767654, 0.09453405, 0.07086401, -0.17155401, -0.1386538, -0.025193052, 0.058830705, -0.14837237, 0.10376343, 0.06635273, -0.035351768, 0.092449315, -0.14438231, -0.12554823, -0.0747217, -0.100939505) * inp_0_1_2;
result2 += M4(0.020551011, -0.019527929, -0.080956355, 0.04020304, -0.1558696, -0.048309315, 0.13586447, -0.12415751, -0.0771313, 0.03268083, -0.02930488, -0.090588465, 0.08030758, -0.032881863, 0.05989439, 0.14983097) * inp_0_2_2;
result3 += M4(0.019916425, 0.35349602, -0.21760419, 0.02043824, 0.08198874, 0.011211055, -0.030096965, -0.05543191, 0.08560613, -0.03158526, -0.058780435, 0.063328415, -0.050161794, -0.0545731, 0.07270706, 0.05900001) * inp_0_0_0;
result3 += M4(-0.23795165, 0.8867181, -0.17214118, -0.0033921483, 0.22161698, 0.23158649, -0.12959984, -0.06797948, 0.042269494, 0.026784351, 0.0993987, 0.011002696, -0.24272658, -0.018443204, -0.15973149, 0.0014442406) * inp_0_1_0;
result3 += M4(-0.17531027, 0.43418616, 0.21419275, -0.07490437, -0.20816508, 0.13784343, 0.05782101, -0.22117929, 0.07595252, 0.06726523, -0.01713722, -0.032841545, -0.018017935, -0.0034928168, -0.005843548, 0.06873073) * inp_0_2_0;
result3 += M4(-0.01735134, 0.06708095, -0.047688134, 0.14313872, -0.02874161, 0.08689343, 0.02455023, -0.058861915, 0.16053586, -0.3325411, 0.01931066, 0.047842104, -0.13670774, 0.23300892, -0.010744747, 0.09484576) * inp_0_0_1;
result3 += M4(0.12113347, -0.14444041, -0.26822078, -0.007002285, -0.099445365, 0.5832463, -0.030744467, -0.07622306, 0.35461396, 0.15368922, -0.08527222, 0.23248303, -0.4177148, -0.15132843, 0.1372978, -0.14088772) * inp_0_1_1;
result3 += M4(-0.10032556, 0.06599154, -0.008100918, 0.14165796, 0.13962142, 0.39759603, 0.035154916, -0.20961851, 0.15421328, 0.09280186, -0.1341424, 0.23205732, -0.26475805, -0.10161829, 0.17543395, -0.16569301) * inp_0_2_1;
result3 += M4(0.015489465, 0.030407025, 0.02151981, -0.015985487, 0.09717049, 0.08364499, -0.019779408, -0.060567826, 0.13557653, 0.046264514, 0.038622156, -0.031850986, -0.14568934, -0.111910254, -0.06629498, 0.060896296) * inp_0_0_2;
result3 += M4(-0.013125205, -0.042486425, -0.0017159008, -0.01465818, 0.08101548, 0.1541928, 0.032798346, 0.028340371, 0.15190595, -0.12541929, -0.11517373, 0.14399916, 0.017949024, 0.18108523, 0.12920754, -0.083492994) * inp_0_1_2;
result3 += M4(-0.0260839, -0.03662534, 0.0049144444, -0.020341257, 0.14725992, 0.262397, -0.055221, -0.056870162, 0.044548903, -0.009148573, -0.012424286, 0.081322506, -0.024946842, 0.010074277, -0.045597643, -0.100952886) * inp_0_2_2;
const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0];
const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1];
const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2];
const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0];
const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1];
const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2];
const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0];
const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1];
const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.0016376107, 0.04418381, 0.018416466, -0.032251563, 0.045267593, 0.046299595, -0.08337987, 0.074308276, 0.014973271, 0.011457272, -0.07693699, 0.045082904, 0.051090363, 0.043971736, -0.053418554, -0.0044536386) * inp_1_0_0;
result0 += M4(0.18070771, 0.0880964, -0.13393182, -0.04980005, -0.20718266, 0.2817004, 0.32588348, 0.1588594, -0.096096136, -0.08210464, 0.15566641, 0.08778902, 0.13905242, 0.06825806, -0.21518244, 0.019504327) * inp_1_1_0;
result0 += M4(0.0862682, 0.07934565, 0.06029321, 0.058548186, 0.14514361, 0.15352027, -0.08202211, -0.05416882, -0.1955908, -0.14754409, -0.1500139, 0.062272184, 0.0036627334, -0.08192547, 0.032839853, -0.0041061505) * inp_1_2_0;
result0 += M4(-0.035778448, 0.027298277, 0.05679968, 0.011586446, -0.013915618, 0.11245289, 0.0027865614, 0.030278265, 0.028308209, -0.029788535, -0.11702745, 0.0007593352, -0.12175346, -0.09008297, -0.069474615, -0.022602713) * inp_1_0_1;
result0 += M4(0.33729637, 0.14766468, 0.0004279741, 0.08741905, 0.34406614, 0.02189864, 0.3096278, 0.06886554, 0.2830226, -0.21215144, 0.21326433, -0.07781056, 0.6273201, -0.44468457, -0.1008788, 0.20175454) * inp_1_1_1;
result0 += M4(0.06514143, 0.015138876, 0.0735439, -0.13259205, -0.112534694, 0.009678357, 0.073149085, -0.104590565, -0.062321343, -0.07125341, 0.012969008, 0.070195496, -0.08405447, -0.032121487, 0.07454308, -0.045267295) * inp_1_2_1;
result0 += M4(0.006980058, 0.08551382, 0.0130883735, -0.055671692, -0.030491665, 0.040129695, 0.005051748, -0.025458617, -0.050356347, -0.010710973, -0.010255012, 0.008337867, 0.010363146, -0.07952984, 0.12598729, -0.04402661) * inp_1_0_2;
result0 += M4(0.16607855, -0.004628897, 0.14962466, 0.09544177, 0.19295298, -0.08094273, 0.11492926, 0.04040103, 0.0083949445, 0.062942185, 0.06609854, -0.067068785, -0.0531171, -0.08519246, 0.0491457, -0.0046483604) * inp_1_1_2;
result0 += M4(0.11253927, -0.011753323, 0.0317407, 0.015425581, 0.056358892, -0.03703146, 0.079916306, 0.013374863, 0.020464856, -0.04798798, 0.063625626, 0.016364284, 0.047736663, 0.001240566, -0.104791686, -0.007213498) * inp_1_2_2;
result1 += M4(-0.048892293, -0.0016895633, -0.054062095, -0.05033464, 0.20214903, 0.10922346, -0.21368922, 0.073440604, 0.1548385, 0.08508246, -0.0550112, 0.014852642, -0.021215001, 0.045128003, -0.09171434, 0.0434569) * inp_1_0_0;
result1 += M4(-0.013846851, 0.027015246, 0.14232251, -0.08138198, -0.014802629, -0.119032316, -0.19455938, -0.048088416, 0.20590763, 0.10958295, -0.10980467, -0.08077034, -0.038193833, -0.0141978655, 0.17298211, -0.14289042) * inp_1_1_0;
result1 += M4(-0.066466, -0.026178662, 0.011325674, -0.09042784, -0.10325891, 0.12546091, 0.24681449, -0.0127473455, 0.19440009, 0.040502317, 0.08401932, -0.09425828, 0.09652641, -0.0022368426, -0.006988943, 0.01717286) * inp_1_2_0;
result1 += M4(-0.12925148, 0.056142695, 0.09619448, 0.016679639, -0.019147959, 0.04923745, 0.018890468, -0.117187366, 0.028826408, 0.00019683268, -0.124236435, 0.06304489, 0.07234993, -0.03972888, 0.19439316, -0.116609156) * inp_1_0_1;
result1 += M4(-0.34345233, -0.060656484, -0.1703353, 0.15918487, 0.07467788, 0.124416575, -0.21442682, 0.0875728, 0.017356545, 0.36736152, 0.3423775, 0.25321603, -0.1957414, 0.3090228, 0.27570242, -0.30467036) * inp_1_1_1;
result1 += M4(-0.09502587, -0.23923069, -0.09740708, -0.06331116, 0.12335112, 0.08920381, 0.14416678, 0.21749333, 0.07559629, 0.1538962, 0.124155246, 0.10908504, -0.01970376, -0.21346018, -0.18239044, 0.13173732) * inp_1_2_1;
result1 += M4(-0.094079375, 0.008323873, 0.017495435, -0.016697304, -0.026271947, -0.020201435, 0.017528843, -0.06705365, 0.024196004, -0.028722025, 0.0057443823, -0.04099056, -0.024084605, 0.06079788, 0.072390676, 0.15712123) * inp_1_0_2;
result1 += M4(0.057896603, -0.01272784, -0.034067515, 0.16940719, -0.029683094, 0.12598687, 0.08020216, 0.06677987, -0.024581907, 0.06330901, -0.0495738, -0.12378197, -0.21068422, -0.1449024, 0.09650767, 0.14918226) * inp_1_1_2;
result1 += M4(-0.055808272, -0.034356758, 0.03666993, 0.09297725, 0.012146311, 0.04050517, 0.082005486, 0.054449543, 0.035838615, 0.0076070502, 0.020874036, 0.07727114, -0.03986964, -0.0077101523, -0.03537288, -0.16568208) * inp_1_2_2;
result2 += M4(-0.023893623, 0.014568515, 0.07279229, -0.031187922, 0.12558657, 0.047214657, 0.1302151, 0.035285953, 0.16465363, -0.088947885, 0.03162694, -0.04268931, -0.041664187, -0.033252705, 0.1091403, -0.000906777) * inp_1_0_0;
result2 += M4(0.11554042, -0.059794463, 0.025738278, 0.07010563, -0.26750675, 0.26928082, 0.062315974, -0.10696478, 0.11878098, -0.12687051, -0.07938461, -0.2719398, 0.0901063, -0.119751416, 0.013658087, -0.016877592) * inp_1_1_0;
result2 += M4(-0.16768712, -0.07679274, 0.008305664, 0.00035504435, -0.038529668, -0.024499305, 0.06500538, -0.045323525, 0.2233601, 0.11118758, -0.030800506, -0.10866327, 0.040455326, 0.027263762, -0.1213889, -0.020765929) * inp_1_2_0;
result2 += M4(-0.016228698, 0.051774442, 0.08743907, 0.122332305, 0.12878774, 0.013231771, 0.1591276, 0.14813463, 0.017823376, 0.0070531494, 0.01908442, -0.072460294, 0.0106890155, -0.07672781, -0.054004386, -0.015249666) * inp_1_0_1;
result2 += M4(0.13823275, -0.111700855, 0.113897614, 0.008054929, -0.0756263, 0.11682932, 0.05073707, -0.14780103, -0.02603403, 0.122327365, -0.057440188, 0.047574002, 0.4208064, -0.12783289, 0.23596571, -0.17464106) * inp_1_1_1;
result2 += M4(-0.11276901, -0.02463375, 0.05596699, -0.041173775, 0.067430876, -0.048416927, -0.041648146, 0.027802143, -0.010897514, -0.03407467, -0.047799025, 0.02479644, -0.048392862, -0.007054906, -0.042132903, 0.082318105) * inp_1_2_1;
result2 += M4(-0.029634967, -0.03099543, 0.065607, 0.052358083, 0.0028135607, 0.009478322, 0.007809492, 0.0124815125, -0.024742588, 0.008628597, -0.010915512, 0.021331806, -0.0047137253, -0.022866264, -0.007359046, -0.019199308) * inp_1_0_2;
result2 += M4(-0.0091483835, 0.050958242, 0.050561897, 0.026821652, -0.03139413, -0.0032960896, 0.09513675, 0.091377236, -0.037217177, -0.0496832, 0.08573999, -0.0075563747, 0.057049926, 0.114524655, 0.092588775, -0.21798187) * inp_1_1_2;
result2 += M4(0.019939622, 0.030009292, 0.005827011, -0.088758014, -0.0050637703, -0.03326621, 0.014994981, 0.009656956, 0.05785172, 0.011509317, 0.041455902, 0.010476758, -0.019323664, 0.057290174, -0.03208818, -0.046859454) * inp_1_2_2;
result3 += M4(0.010078791, 0.0040093944, -0.0016739339, -0.07252935, -0.018757781, 0.0665508, -0.08365014, 0.012366922, -0.10560476, -0.11387421, 0.007362235, 0.15012632, 0.032568876, 0.054302923, 0.04161736, 0.037362747) * inp_1_0_0;
result3 += M4(0.1393239, -0.01066668, -0.06942221, -0.058312386, -0.52086353, 0.12847647, 0.07659496, 0.048937015, -0.21464114, 0.15772283, -0.009344592, 0.00035884077, 0.39051142, -0.073981814, -0.011149113, 0.004779808) * inp_1_1_0;
result3 += M4(0.0041307714, -0.03836952, -0.07102645, -0.0010038959, -0.2956029, -0.08339994, -0.13669825, -0.14419535, -0.04396794, 0.009956943, -0.11004949, 0.19482571, 0.024726436, -0.02601701, 0.067196324, -0.021496652) * inp_1_2_0;
result3 += M4(0.16747338, 0.08903557, 0.009989838, -0.034240507, -0.06908799, -0.03671675, -0.025689468, -0.011710149, -0.16475086, -0.29600996, 0.056616165, 0.09624344, 0.049963195, -0.19912632, -0.00789292, 0.051318042) * inp_1_0_1;
result3 += M4(0.5922931, -0.3027519, -0.121487364, 0.013492411, -0.7221203, 0.16692896, -0.21351363, 0.09712736, -0.26743603, -0.09775876, 0.3405607, 0.0074669113, 0.8095766, -0.1818658, 0.09682229, -0.05489126) * inp_1_1_1;
result3 += M4(0.35872802, 0.07574915, 0.11818489, -0.1978576, 0.023001319, 0.0156246945, 0.046600163, -0.24248385, -0.083860636, -0.0348795, -0.04175005, -0.04835038, 0.2740649, 0.11672172, 0.08131361, 0.099900916) * inp_1_2_1;
result3 += M4(0.0132511975, 0.04190394, 0.017307356, 0.0016951828, -0.0016898573, 0.029923253, -0.014688712, -0.018923704, 0.031798244, 0.023648607, -0.015831789, -0.017212909, 0.11876047, 0.08933502, 0.04528834, -0.07726626) * inp_1_0_2;
result3 += M4(0.13892137, -0.025030078, -0.10700245, 0.11385877, -0.34615183, -0.12660114, -0.040673252, 0.07458839, -0.06667318, 0.13905504, 0.024421861, -0.07740549, 0.58731407, 0.062160797, 0.083908804, -0.05578882) * inp_1_1_2;
result3 += M4(0.0599366, 0.03434349, 0.008178948, 0.033050038, -0.004620483, 0.040905178, 0.014756692, 0.025343752, -0.083791226, 0.0026124115, -0.027233075, 0.028960045, -0.05423346, -0.034510847, -0.018611327, 0.030766467) * inp_1_2_2;
const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0];
const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1];
const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2];
const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0];
const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1];
const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2];
const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0];
const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1];
const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.03367397, 0.004955521, -0.016970068, 0.06673195, 0.009355184, 0.08356851, -0.0830814, -0.034629308, -0.19357824, 0.094940275, 0.1851535, 0.013345822, 0.0031097203, 0.12260663, 0.028696135, -0.056471433) * inp_2_0_0;
result0 += M4(0.015336329, -0.08685047, -0.01983874, 0.0028089203, -0.026509136, -0.0078182565, -0.037361912, -0.057676114, -0.17771417, 0.03843416, -0.012054058, 0.1373443, 0.19629753, 0.011548353, -0.15321258, 0.060278885) * inp_2_1_0;
result0 += M4(-0.13334405, 0.0030734485, 0.03806739, 0.039976466, -0.043648906, 0.038453277, 0.048915327, 0.075921044, 0.024935283, -0.012876379, -0.06518824, -0.029208533, 0.11525847, 0.010409365, 0.019654553, -0.0022349597) * inp_2_2_0;
result0 += M4(-0.06899935, -0.06844628, 0.11052727, -0.010607096, -0.024746615, -0.01025243, -0.01542427, 0.012205415, -0.67881477, 0.17816395, 0.19609864, -0.6781782, 0.14687361, -0.23993501, -0.009093189, -0.06694573) * inp_2_0_1;
result0 += M4(-0.08483916, -0.15767601, 0.19031785, -0.018506326, -0.030218232, -0.0069330186, 0.020285944, 0.010299774, -0.10406135, 0.15469338, -0.07484232, 0.19089906, -0.14954455, 0.22627302, -0.10807202, 0.009100819) * inp_2_1_1;
result0 += M4(0.078837514, 0.00021540889, -0.12550807, 0.0003196667, 0.040017225, 0.019446313, -0.071674034, 0.00792833, -0.09518339, 0.014569225, 0.14609228, -0.0039291983, 0.06934331, 0.22336255, 0.01869001, 0.039774764) * inp_2_2_1;
result0 += M4(0.038735867, 0.03279128, -0.048070673, -0.022425463, 0.0029233946, -0.014015049, 0.07338304, 0.06793871, -0.69280076, -0.027776822, -0.5787596, -0.34164727, -0.018627115, -0.06840073, -0.014732753, 0.039361794) * inp_2_0_2;
result0 += M4(-0.11793571, 0.14667195, -0.22204193, -0.024433017, -0.054434747, 0.038390335, 0.03863144, -0.04875465, 0.17164896, -0.05279606, -0.047196895, 0.19982989, 0.08283955, 0.092994675, 0.0087308455, 0.054372437) * inp_2_1_2;
result0 += M4(-0.032415263, 0.013621299, -0.023688937, -0.039860632, 0.071460254, 0.027984425, -0.016813882, -0.025208268, 0.02517769, -0.038453706, -0.07076285, 0.01895231, 0.20643787, -0.1392302, 0.041754097, -0.01814964) * inp_2_2_2;
result1 += M4(0.03309468, 0.046680328, -0.017361686, 0.028748479, 0.05916199, 0.07562164, 0.015403191, -0.039588157, -0.12204847, -0.21717773, 0.1914142, -0.44947496, -0.23287378, -0.04640756, -0.09015168, -0.19684239) * inp_2_0_0;
result1 += M4(0.11599996, 0.030052545, -0.014835126, 0.06838162, -0.05756571, 0.006062099, -0.014347732, -0.03911651, 0.047447182, 0.042832803, 0.06241733, 0.27608177, 0.09064273, -0.040101595, 0.2555169, -0.16418557) * inp_2_1_0;
result1 += M4(-0.02419235, -0.009426276, -0.11180064, 0.041754447, 0.07264316, -0.08099346, -0.026263714, 0.07785717, -0.013967984, -0.014753905, 0.04424315, 0.030256154, 0.0035964116, 0.013196015, 0.030161176, 0.076376334) * inp_2_2_0;
result1 += M4(-0.013128813, -0.0019375453, 0.11065389, 0.025747303, 0.0033082368, 0.078519255, 0.0046614623, -0.07734559, 0.2066789, -0.3611957, -0.04244533, -1.1593539, 0.088824384, 0.0007283433, -0.21906462, 0.29266325) * inp_2_0_1;
result1 += M4(-0.09984787, -0.16692612, 0.06173877, -0.18107122, -0.077745914, -0.050486244, 0.00690943, -0.02725205, 0.100075886, 0.277084, -0.36800146, -0.26570296, 0.015802924, 0.28473464, -0.2662419, 0.8966091) * inp_2_1_1;
result1 += M4(-0.015611959, 0.025750604, 0.054060884, -0.024089126, -0.043856986, -0.08762735, -0.076457866, 0.0727998, 0.03281929, 0.04151155, -0.08858038, 0.053047176, -0.019439632, 0.06346063, -0.08573011, -0.10120102) * inp_2_2_1;
result1 += M4(-0.08917075, 0.018254248, -0.056461334, -0.03125975, 0.037349947, -0.010104153, -0.08756387, 0.008490562, -0.03155047, -0.41193518, -0.238409, -1.1670483, 0.13002962, -0.08180485, 0.006539007, -0.05915334) * inp_2_0_2;
result1 += M4(0.18846902, -0.13272147, -0.18107137, -0.21587192, 0.009955976, -0.06396942, 0.042282462, -0.060799226, 0.09556699, 0.08179318, 0.0018192269, -0.014460728, -0.0560781, 0.14868584, -0.053623088, 0.17516914) * inp_2_1_2;
result1 += M4(0.067292854, -0.024338104, -0.04716455, 0.0038853094, -0.04316462, -0.031911686, 0.00451295, -0.037436306, 0.0027649174, -0.033629492, 0.050836034, -0.054897793, -0.09030146, -0.030816583, 0.18178256, 0.23854676) * inp_2_2_2;
result2 += M4(-0.0191218, 0.02578176, 0.012845668, -0.0014110291, -0.024882175, 0.002006865, 0.058649056, -0.007853318, 0.08129406, -0.034603693, 0.3006553, 0.051315684, -0.18125251, -0.02556182, 0.208122, -0.10058585) * inp_2_0_0;
result2 += M4(0.10039137, -0.107209496, -0.08728659, 0.050417755, -0.084910944, -0.04915987, 0.06691687, 0.063604385, -0.0067039593, 0.084450945, 0.14096242, 0.0390521, 0.044615787, -0.007923734, -0.21635495, 0.055454694) * inp_2_1_0;
result2 += M4(0.024615983, 0.053081527, 0.0907406, -0.062819384, -0.02434799, -0.0725949, 0.05970685, 0.083336666, -0.029300079, -0.0021091357, -0.10784396, 0.014476069, -0.086587705, -0.028169328, -0.103807375, 0.0503975) * inp_2_2_0;
result2 += M4(0.022107514, -0.05401999, -0.11234728, -0.04456762, 0.078263946, -0.02827358, -0.044524886, -0.042158484, 0.062327847, -0.36321545, 0.5115321, -0.18938217, -0.08885805, -0.11274382, -0.15955922, -0.05460782) * inp_2_0_1;
result2 += M4(-0.087270774, 0.20033208, 0.16234896, -0.065063685, 0.051716108, 0.026100453, 0.09072499, 0.07851956, -0.16862313, -0.08362344, -0.32730272, 0.2886622, 0.64446616, 0.2340717, 0.078835286, -0.029053995) * inp_2_1_1;
result2 += M4(-0.10026621, -0.023536421, -0.1466159, 0.16795388, -0.029497758, 0.07651104, -0.083846316, -0.078125596, 0.07051365, 0.017051721, 0.02380231, 0.021501211, -0.08276928, -0.08695348, -0.06571158, -0.06696451) * inp_2_2_1;
result2 += M4(0.043329757, 0.019451503, 0.07634555, -0.013175747, 0.023546318, -0.05415269, 0.0025704878, 0.026056489, -0.0141649805, -0.17071009, -0.037061125, 0.15926516, -0.010465945, -0.009644939, -0.08619944, 0.03409356) * inp_2_0_2;
result2 += M4(-0.002864816, -0.021328177, -0.16046545, 0.11063928, -0.05466926, 0.08127464, -0.038838558, 0.040927414, -0.14630155, -0.030549934, 0.056934025, -0.19465277, -0.15504836, -0.13393627, 0.015714021, -0.018829752) * inp_2_1_2;
result2 += M4(0.041143205, -0.0006696454, -0.05296108, 0.049408454, 0.07941648, -0.01817859, 0.039160665, -0.053440265, -0.019312521, 0.01141179, -0.0015072722, 0.0073392987, 0.0064619537, 0.029002776, 0.030924479, -0.16848028) * inp_2_2_2;
result3 += M4(0.00934467, -0.028761666, 0.05205137, 0.011321586, 0.07397775, -0.07510053, -0.015689628, -0.07902938, -0.10326314, -0.07201862, -0.029787773, 0.27010682, 0.039849095, 0.027436383, -0.0036015534, -0.106832854) * inp_2_0_0;
result3 += M4(0.13964432, 0.007885594, -0.07711363, 0.088266574, 0.08123728, -0.07935315, -0.055594068, 0.03989034, -0.13511023, 0.01785281, -0.057945237, 0.11958117, 0.28188315, -0.21982828, -0.031706702, -0.01849271) * inp_2_1_0;
result3 += M4(0.0076257703, 0.07507208, 0.015869806, 0.04663544, -0.022402735, -0.048168007, 0.09301184, 0.04674196, 0.06118175, -0.001469739, 0.054137208, 0.006774731, 0.024191013, -0.045037907, 0.036243077, -0.03390384) * inp_2_2_0;
result3 += M4(0.010451828, 0.03562101, -0.0026917288, -0.015555403, -0.07420954, -0.0048680333, -0.033141132, 0.069092624, -0.77683336, -0.45575392, 0.057898767, 0.3605913, -0.08671824, 0.11298135, -0.02363535, -0.0024719827) * inp_2_0_1;
result3 += M4(-0.17492872, -0.06332532, 0.22328846, -0.052229743, -0.07745754, 0.016334863, 0.046069533, 0.039033964, 0.22167075, -0.091329426, -0.2825681, 0.22879286, 0.19904256, 0.3474097, -0.131275, -0.02867377) * inp_2_1_1;
result3 += M4(-0.0853529, -0.039215922, 0.047701504, 0.08230745, 0.08728966, 0.023341816, -0.009881441, 0.03707891, -0.011491406, -0.010269515, -0.0050232736, -0.018099744, 0.117701866, 0.0008237787, -0.14760907, -0.1304188) * inp_2_2_1;
result3 += M4(0.01679131, -0.057586852, 0.039325777, 0.026128648, 0.02153866, -0.035776317, -0.05210149, -0.01610461, 0.12026099, 0.28740254, -0.16887982, 0.062023044, 0.048616905, 0.0366784, -0.049557764, 0.09082544) * inp_2_0_2;
result3 += M4(0.008196659, 0.0018037477, -0.057358243, 0.03153498, -0.030755378, -0.080460116, -0.070740156, -0.054368824, -0.018436505, -0.062058937, 0.020381283, 0.3834264, -0.26532388, -0.066348284, 0.0021169232, 0.14001232) * inp_2_1_2;
result3 += M4(-0.029737344, -0.03701547, 0.009346815, -0.014839427, -0.041464727, -0.07154386, -0.057015166, 0.09529744, -0.025237298, 0.0054849256, -0.0070810267, 0.08165059, 0.038535096, 0.08105229, 0.075974286, 0.071346454) * inp_2_2_2;
const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0];
const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1];
const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2];
const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0];
const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1];
const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2];
const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0];
const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1];
const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.16644306, -0.035057098, -0.12157634, 0.11306945, 0.14130205, 0.0039898325, -0.07697552, 0.10784457, -0.052189652, -0.011013664, 0.0031201546, -0.031559516, -0.020045629, -0.021701578, 0.002141703, 0.012055381) * inp_3_0_0;
result0 += M4(-0.15526633, 0.073672384, 0.074667335, -0.08710986, -0.30000848, -0.17840266, 0.14377336, 0.089547984, 0.1975691, 0.16842985, -0.12137952, -0.03332323, -0.15182708, -0.08177667, 0.09279292, -0.037882905) * inp_3_1_0;
result0 += M4(-0.02005877, 0.058328114, 0.059232496, -0.063152365, -0.1301231, -0.13257313, -0.07552929, -0.047728643, 0.030808622, 0.081534214, 0.06554894, 0.04234586, 0.025147643, -0.06249573, -0.13709989, 0.027330032) * inp_3_2_0;
result0 += M4(-0.030382136, 0.21447782, 0.15407604, -0.058116764, 0.08670508, -0.23932059, 0.16281562, -0.06382178, -0.16279238, 0.20909464, -0.18001153, 0.052851424, -0.05697547, -0.07327904, -0.004949468, 0.03162752) * inp_3_0_1;
result0 += M4(0.3414116, -0.61770344, 0.1558964, 0.016474921, -0.23069206, -0.6924885, -0.3129354, -0.26350647, 0.27220887, 0.5864989, 0.34620813, 0.2026871, -0.3634287, -0.18862167, -0.38150045, 0.18375765) * inp_3_1_1;
result0 += M4(-0.3372528, -0.07923849, -0.08041237, 0.023882333, -0.16811112, -0.055011213, -0.022712177, 0.11298466, 0.252188, 0.078244835, 0.018938042, -0.035289, 0.02975196, -0.5770487, 0.009413067, -0.2243029) * inp_3_2_1;
result0 += M4(-0.033971287, 0.0072710146, 0.107491, -0.12359023, -0.09892334, -0.18267483, 0.1809045, 0.06655833, 0.11662278, 0.070645146, -0.20154457, -0.074266955, 0.049277037, 0.05770428, -0.023393335, 0.026336156) * inp_3_0_2;
result0 += M4(0.1841683, -0.22356603, 0.13052042, 0.0010768842, -0.07311667, -0.078415, -0.17228259, -0.001806311, 0.19744264, 0.12130616, 0.17077604, 0.022643626, -0.052795503, -0.15781237, 0.23897426, 0.03440706) * inp_3_1_2;
result0 += M4(-0.08940987, 0.033106912, -0.018629894, 0.0142039275, 0.17827255, -0.09245035, 0.050241273, 0.027314352, -0.06826859, 0.05904875, 0.091773875, 0.009904262, -0.020289123, 0.04161051, -0.11870938, -0.032069366) * inp_3_2_2;
result1 += M4(0.13931245, 0.13357759, 0.05683982, 0.051751614, 0.08830506, 0.06469639, 0.016617883, 0.09594639, 0.012662456, 0.025687862, 0.0026467643, 0.07016312, 0.057798427, -0.027685536, 0.057647858, -0.048384294) * inp_3_0_0;
result1 += M4(-0.05646788, -0.02786155, -0.22029462, -0.07177842, 0.16167124, 0.010990841, -0.14173204, 0.17305823, 0.057108935, 0.13614143, 0.012516593, -0.047728207, 0.13683511, 0.0013704462, 0.26512238, 0.20797841) * inp_3_1_0;
result1 += M4(-0.07176599, 0.029066803, 0.0076347836, 0.0004243537, 0.0430203, -0.035209145, 0.050050832, 0.11828719, 0.07840696, 0.07972769, -0.00095862505, -0.075652204, 0.2281031, 0.124481566, 0.24412982, 0.19236475) * inp_3_2_0;
result1 += M4(0.025473516, 0.15713707, 0.06924362, -0.22305149, 0.3824524, -0.043992527, -0.2010713, -0.021672921, -0.25155294, -0.02565692, 0.14274368, -0.1019504, 0.15507515, 0.007414248, 0.043017827, 0.06495543) * inp_3_0_1;
result1 += M4(-0.14306925, -0.27841488, 0.16326474, -0.8566833, 0.8259283, 0.16435339, 0.07307114, 0.0914285, -0.7882596, -0.07623266, -0.05142348, -0.43100038, 0.4820904, -0.023251116, -0.09204129, -0.4768521) * inp_3_1_1;
result1 += M4(0.09010776, -0.08710201, -0.048785966, -0.09215178, -0.046835195, 0.03659466, -0.014068586, -0.05228069, -0.14433868, -0.008870675, 0.042336613, -0.088613056, 0.45286247, -0.17640555, -0.080095805, 0.074249946) * inp_3_2_1;
result1 += M4(-0.121689714, 0.12684813, 0.1055287, 0.044909477, 0.19141753, 0.048897713, 0.16739455, -0.066546634, -0.197523, -0.041926194, -0.1730024, 0.15023331, 0.070079654, 0.07318071, -0.07310828, 0.08883942) * inp_3_0_2;
result1 += M4(0.047770213, 0.0070671123, -0.0018569828, 0.08216581, 0.02155187, -0.051451694, -0.15553425, 0.052017488, -0.052235592, 0.14444523, 0.18792108, 0.29715925, 0.16235797, 0.12126266, 0.21943007, 0.17191148) * inp_3_1_2;
result1 += M4(0.15731409, 0.102909066, -0.00995533, -0.07604744, -0.1746066, -0.012574824, 0.16382663, 0.14200048, 0.037363105, 0.09319999, -0.08845049, 0.107910104, 0.015846873, -0.13121964, -0.1185025, -0.118911006) * inp_3_2_2;
result2 += M4(0.09844146, -0.054858677, 0.041392706, 0.05586684, 0.07598541, -0.045845408, -0.048007082, 0.053539906, 0.0027045025, 0.060116973, -0.03570811, 0.018558847, 0.054018278, -0.0069160345, 0.016897714, 0.03611916) * inp_3_0_0;
result2 += M4(0.07722095, 0.044590272, 0.1817677, -0.047585487, 0.023525866, 0.04335006, 0.0036553734, -0.055594847, 0.19933303, -0.056402426, 0.13191842, 0.088675804, 0.10178346, 0.12052464, -0.105208404, 0.16816963) * inp_3_1_0;
result2 += M4(-0.0026368387, -0.011667112, 0.075791426, -0.016086938, 0.16818987, 0.0696738, -0.040691096, 0.022239426, 0.01491426, -0.0152, 0.08395112, -0.04727915, 0.27544174, -0.106875554, -0.098951474, 0.13090116) * inp_3_2_0;
result2 += M4(-0.027667163, -0.086723015, 0.33884516, -0.20415695, -0.0879539, -0.111877136, 0.13601276, -0.098280184, 0.08669889, 0.020694671, -0.10154733, -0.011684432, -0.014513835, -0.017062092, -0.074072495, -0.03180873) * inp_3_0_1;
result2 += M4(-0.48736796, -0.12489261, 0.1846, -0.5280808, 0.3288903, 0.13460009, 0.6403741, 0.052614044, -0.32939786, -0.14921, -0.4225364, -0.30070633, -0.14579426, -0.052529942, -0.04376128, -0.23098278) * inp_3_1_1;
result2 += M4(0.13661823, 0.07786372, 0.099365555, -0.06277859, 0.11860524, 0.08526258, 0.22625804, -0.26704168, -0.048613362, -0.10089358, -0.16364989, -0.037246317, 0.18462856, 0.058234435, -0.017916108, 0.035389666) * inp_3_2_1;
result2 += M4(-0.019709798, -0.10721726, 0.07919262, 0.09555229, -0.010393931, -0.012128053, -0.105832525, 0.10907842, 0.14557905, 0.07817808, 0.08156662, -0.024414817, 0.10886676, -0.02077107, -0.020455858, 0.008248778) * inp_3_0_2;
result2 += M4(0.13610224, 0.14481463, 0.16658245, -0.19091593, 0.11535887, -0.025586318, -0.15114129, 0.062294755, -0.056542534, -0.031073904, -0.0024925661, -0.024240607, 0.17367578, 0.15741837, -0.06596407, 0.29024726) * inp_3_1_2;
result2 += M4(-0.011189812, -0.039269995, -0.025777966, 0.2476806, -0.025474181, 0.037494306, 0.0873178, -0.22946621, 0.0430167, -0.03350419, -0.05473827, 0.14684229, 0.021706732, 0.021085832, -0.12844822, 0.005003961) * inp_3_2_2;
result3 += M4(-0.010733908, 0.0010083024, -0.06777939, 0.05866145, 0.013987795, 0.07277142, -0.05165053, 0.1242785, -0.019626781, -0.05269047, 0.089257315, -0.030492688, -0.022420658, -0.06326788, 0.003614426, 0.058830246) * inp_3_0_0;
result3 += M4(0.06339451, 0.09002405, 0.09927776, 0.105067976, -0.1158787, -0.052120317, 0.012087008, 0.1591537, -0.0026880412, 0.039610647, 0.033085097, -0.03163883, -0.3394691, -0.08510625, -0.007524416, 0.035931513) * inp_3_1_0;
result3 += M4(-0.17280442, -0.02175394, -0.044594508, -0.116763026, 0.0480362, 0.07687507, 0.053081494, 0.020414354, -0.10011681, -0.083895296, -0.14718145, -0.085888855, -0.23986945, -0.12136883, -0.04684818, 0.052544445) * inp_3_2_0;
result3 += M4(-0.17455642, 0.09546489, -0.008906962, -0.0799891, -0.2286928, 0.17393862, -0.14875084, -0.060299385, 0.24233137, -0.060611103, 0.028200531, 0.0070000933, -0.069805525, -0.10491969, -0.03995117, 0.14509979) * inp_3_0_1;
result3 += M4(-0.08729054, -0.23557802, -0.05761843, 0.11311374, -0.4705635, 0.7757905, -0.2938702, 0.14479445, 0.4146954, -0.5671021, 0.33452195, -0.21263033, -0.008569114, -0.13444878, -0.056517236, 0.042605005) * inp_3_1_1;
result3 += M4(0.058765132, 0.0967748, 0.07720379, 0.039823867, -0.12851177, 0.10840062, -0.24199952, 0.09727965, 0.25378698, 0.04484832, 0.15671138, -0.09593852, -0.078835055, -0.15202752, 0.24547085, 0.0070273615) * inp_3_2_1;
result3 += M4(-0.07681354, 0.13068143, 0.06912294, -0.06168184, 0.028865712, 0.18237995, -0.062165674, 0.012142556, 0.0056257467, -0.41251314, 0.13120456, 0.023562398, -0.17263316, -0.11485861, 0.02774734, 0.102712154) * inp_3_0_2;
result3 += M4(-0.010986593, -0.057189908, 0.005797272, 0.03908175, -0.15044941, -0.028906818, -0.012308817, 0.15605815, 0.052073818, -0.04500662, 0.07036311, -0.095073424, 0.05863848, -0.20374425, -0.0048110425, -0.07146307) * inp_3_1_2;
result3 += M4(-0.19316322, -0.13513108, -0.04471579, 0.08757269, 0.042311065, 0.12776858, 0.023822773, 0.14305982, -0.12566763, -0.13009103, -0.01556481, -0.11520073, 0.13395476, -0.012108829, 0.021564491, -0.14514107) * inp_3_2_2;
const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(2, 2);
imageStore(out_image, output_base + ivec2(0, 0), result0);
imageStore(out_image, output_base + ivec2(1, 0), result1);
imageStore(out_image, output_base + ivec2(0, 1), result2);
imageStore(out_image, output_base + ivec2(1, 1), result3);
}
//!DESC ArtCNN C4F16 DS (Conv2D-6)
//!COMPUTE 12 16 12 16
//!HOOK LUMA
//!BIND conv2d
//!BIND conv2d_5
//!SAVE conv2d_6
//!WIDTH LUMA.w 1.0 *
//!HEIGHT LUMA.h 1.0 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
# define V4 f16vec4
# define M4 f16mat4
# define F float16_t
#else
# define V4 vec4
# define M4 mat4
# define F float
#endif
const ivec2 ksize = ivec2(3, 3);
const ivec2 offset = ksize / 2;
const ivec2 wg_size = ivec2(gl_WorkGroupSize);
const ivec2 isize = wg_size + ksize - 1;
shared V4 inp[4][isize.y][isize.x];
void hook() {
const uvec2 local_xy = gl_LocalInvocationID.xy;
ivec2 base = ivec2(gl_WorkGroupID) * wg_size;
for (uint y = local_xy.y; y < isize.y; y += wg_size.y) {
for (uint x = local_xy.x; x < isize.x; x += wg_size.x) {
const ivec2 input_base = (base + ivec2(x,y) - offset) * ivec2(2, 2);
inp[0][y][x] = V4(conv2d_5_mul * texelFetch(conv2d_5_raw, input_base + ivec2(0, 0), 0) + conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(0, 0), 0));
inp[1][y][x] = V4(conv2d_5_mul * texelFetch(conv2d_5_raw, input_base + ivec2(1, 0), 0) + conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(1, 0), 0));
inp[2][y][x] = V4(conv2d_5_mul * texelFetch(conv2d_5_raw, input_base + ivec2(0, 1), 0) + conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(0, 1), 0));
inp[3][y][x] = V4(conv2d_5_mul * texelFetch(conv2d_5_raw, input_base + ivec2(1, 1), 0) + conv2d_mul * texelFetch(conv2d_raw, input_base + ivec2(1, 1), 0));
}
}
barrier();
V4 result0 = V4(0.07464532, 0.07390118, 0.07932574, 0.07740004);
const V4 inp_0_0_0 = inp[0][local_xy.y + 0][local_xy.x + 0];
const V4 inp_0_1_0 = inp[0][local_xy.y + 0][local_xy.x + 1];
const V4 inp_0_2_0 = inp[0][local_xy.y + 0][local_xy.x + 2];
const V4 inp_0_0_1 = inp[0][local_xy.y + 1][local_xy.x + 0];
const V4 inp_0_1_1 = inp[0][local_xy.y + 1][local_xy.x + 1];
const V4 inp_0_2_1 = inp[0][local_xy.y + 1][local_xy.x + 2];
const V4 inp_0_0_2 = inp[0][local_xy.y + 2][local_xy.x + 0];
const V4 inp_0_1_2 = inp[0][local_xy.y + 2][local_xy.x + 1];
const V4 inp_0_2_2 = inp[0][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.107434526, -0.061474796, -0.040092945, -0.0459723, 0.02761501, 0.01745644, 0.014482912, 0.0012696184, -0.061499584, -0.032264862, -0.048902947, -0.021928083, 0.14782473, 0.1002026, 0.073698446, 0.08206034) * inp_0_0_0;
result0 += M4(-0.21699734, -0.28028283, -0.035895456, -0.021996958, 0.015112384, 0.032103192, -0.0639872, 0.020970946, -0.196755, -0.28698945, 8.651186e-05, -0.016814556, 0.024635803, 0.12802911, 0.057709377, 0.009329917) * inp_0_1_0;
result0 += M4(-0.02673682, -0.07315494, -0.022984, -0.067974426, -0.1403615, -0.13398142, -0.11284074, -0.14634001, -0.07184698, 0.0023350518, -0.055745855, 0.028456453, 0.08811762, 0.046707124, 0.058221996, 0.033369727) * inp_0_2_0;
result0 += M4(0.22360633, -0.023897279, 0.02986799, 0.055481493, 0.046479363, -0.03696558, 0.2653081, 0.022556303, 0.029489953, 0.0171766, 0.11842895, -0.01765957, 0.16629258, 0.11176335, 0.15456629, 0.111050345) * inp_0_0_1;
result0 += M4(0.09095651, 0.28040722, -0.064491756, -0.11531522, -0.22851443, 0.13162698, -0.19715798, 0.3505701, -0.08218627, 0.10475915, -0.025233084, -0.028647343, 0.19340141, 0.19143164, 0.14294787, 0.22350201) * inp_0_1_1;
result0 += M4(0.016548377, 0.11346367, 0.055276267, 0.04460949, 0.04593663, -0.088350855, 0.03431234, -0.13139, 0.028174222, 0.0011747417, 0.007646534, 0.15010545, 0.15213431, 0.17651626, 0.14111905, 0.21193625) * inp_0_2_1;
result0 += M4(-0.0074117705, 0.008487716, 0.037963413, 0.024158146, -0.021835687, -0.01533567, -0.062308576, -0.023030387, 0.0599024, 0.025585424, 0.0949247, 0.048458036, 0.098259225, 0.034685653, 0.17735419, 0.008515868) * inp_0_0_2;
result0 += M4(-0.041114856, -0.070740454, 0.122555494, 0.086333975, 0.017477524, -0.010050296, 0.035781797, -0.080852926, 0.041086763, 0.027439564, -0.11653388, 0.07662215, 0.043302838, 0.06700814, 0.06754964, 0.17169318) * inp_0_1_2;
result0 += M4(-0.017194813, -0.011334355, -0.014161258, 0.066991776, 0.08990405, 0.069721244, 0.10751855, 0.010132857, -0.0051579652, 0.00568024, -0.02566956, -0.11493607, 0.062435575, 0.11594131, 0.07325794, 0.10697202) * inp_0_2_2;
const V4 inp_1_0_0 = inp[1][local_xy.y + 0][local_xy.x + 0];
const V4 inp_1_1_0 = inp[1][local_xy.y + 0][local_xy.x + 1];
const V4 inp_1_2_0 = inp[1][local_xy.y + 0][local_xy.x + 2];
const V4 inp_1_0_1 = inp[1][local_xy.y + 1][local_xy.x + 0];
const V4 inp_1_1_1 = inp[1][local_xy.y + 1][local_xy.x + 1];
const V4 inp_1_2_1 = inp[1][local_xy.y + 1][local_xy.x + 2];
const V4 inp_1_0_2 = inp[1][local_xy.y + 2][local_xy.x + 0];
const V4 inp_1_1_2 = inp[1][local_xy.y + 2][local_xy.x + 1];
const V4 inp_1_2_2 = inp[1][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.083234064, -0.01736622, -0.036758095, -0.04624929, -0.07172715, -0.119262755, -0.0222609, -0.026985189, -0.026658798, 0.036979225, 0.03812808, 0.0029649562, 0.08972136, 0.11921047, 0.03170066, 0.036108654) * inp_1_0_0;
result0 += M4(0.022280466, -0.15311444, -0.15682934, -0.05723694, 0.24173974, 0.27569678, 0.2574501, 0.15145889, 0.058440883, -0.055165514, 0.04120775, 0.05850623, -0.0373792, -0.14673825, 0.0058482066, 0.014320311) * inp_1_1_0;
result0 += M4(-0.09235279, 0.025638962, -0.04072422, -0.034978464, 0.0373231, 0.17699297, 0.05004326, 0.19857855, -0.026124245, 0.090998806, -0.006861609, 0.06986869, 0.003798819, -0.085976705, 0.0034036732, -0.037157945) * inp_1_2_0;
result0 += M4(0.0063244975, -0.06491175, 0.093155615, -0.027621726, -0.27442387, -0.1863451, -0.29814664, -0.29802597, 0.1179918, 0.02857419, -0.02652872, 0.07792494, -0.0051430045, 0.08910532, 0.15716837, 0.13776807) * inp_1_0_1;
result0 += M4(0.19929896, 0.020554777, 0.22380742, 0.04840272, 0.12036366, 0.12263616, -0.14700954, 0.04919207, -0.082653165, 0.0010076371, -0.080292076, -0.105691075, 0.1047072, -0.14630923, -0.137801, -0.010218593) * inp_1_1_1;
result0 += M4(0.062929705, 0.13665918, 0.016087245, 0.06565361, -0.041692965, 0.011779583, -0.07814502, -0.11809729, 0.012785327, -0.11189223, 0.01410198, 0.03994371, 0.033155203, 0.05410498, 0.020141244, -0.040550947) * inp_1_2_1;
result0 += M4(-0.012242995, -0.0067502, -0.04036773, 0.023715463, -0.12033609, -0.07752748, -0.19127072, -0.09910811, 0.001066824, -0.00021270462, -0.029544279, -0.004624266, -0.026621554, -0.0022408469, -0.054897767, -0.012781671) * inp_1_0_2;
result0 += M4(0.0052375845, 0.06512375, 0.09097809, -0.03978876, 0.0018423167, -0.040242784, 0.17026952, 0.07727061, -0.03142935, -0.001241966, 0.020182231, -0.07429692, -0.021974515, -0.01685353, -0.04211016, -0.15381584) * inp_1_1_2;
result0 += M4(0.026886392, -0.0138538405, 0.044098742, 0.03426663, 0.0031622655, -0.0036655362, 0.03818804, 0.11073062, 0.0492121, 0.0004361181, 0.047706895, -0.13048817, -0.0010547969, -0.009558771, 0.015013705, 0.048843324) * inp_1_2_2;
const V4 inp_2_0_0 = inp[2][local_xy.y + 0][local_xy.x + 0];
const V4 inp_2_1_0 = inp[2][local_xy.y + 0][local_xy.x + 1];
const V4 inp_2_2_0 = inp[2][local_xy.y + 0][local_xy.x + 2];
const V4 inp_2_0_1 = inp[2][local_xy.y + 1][local_xy.x + 0];
const V4 inp_2_1_1 = inp[2][local_xy.y + 1][local_xy.x + 1];
const V4 inp_2_2_1 = inp[2][local_xy.y + 1][local_xy.x + 2];
const V4 inp_2_0_2 = inp[2][local_xy.y + 2][local_xy.x + 0];
const V4 inp_2_1_2 = inp[2][local_xy.y + 2][local_xy.x + 1];
const V4 inp_2_2_2 = inp[2][local_xy.y + 2][local_xy.x + 2];
result0 += M4(0.021643935, 0.035881847, 0.016666686, 0.036577456, -0.1662777, -0.09977182, -0.03908879, -0.040154546, 0.02468217, 0.08562714, 0.003477804, 0.013376654, 0.15883322, -0.0008079863, 0.0038057019, 0.025690475) * inp_2_0_0;
result0 += M4(-0.15558125, -0.053722274, -0.007429018, -0.034054186, -0.17369546, -0.10761962, 0.0035728202, 0.0065433285, 0.0035669033, -0.15924114, -0.012128298, -0.009583443, -0.17912212, 0.06641109, -0.07176044, -0.13502866) * inp_2_1_0;
result0 += M4(-0.024374478, -0.11947236, -0.042391077, -0.09398808, -0.0020263772, 0.008831307, -0.022480149, -0.007933876, 0.057767935, 0.0631978, 0.062013224, 0.051570114, 0.00020819916, 0.05376932, 0.012365956, 0.043214906) * inp_2_2_0;
result0 += M4(0.021821465, 0.061372053, 0.030329496, 0.073883995, -0.24928251, -0.09148485, -0.33853588, -0.111346275, 0.037134554, 0.10227044, 0.050301112, 0.15772362, 0.13018247, 0.024757927, 0.1436202, -0.027260313) * inp_2_0_1;
result0 += M4(-0.056964792, -0.22059062, -0.31152007, -0.25050268, -0.3495639, -0.3077987, -0.167267, -0.13496529, 0.031248473, -0.1437078, -0.07952797, -0.26769456, -0.007219653, -0.124543585, -0.006938436, 0.07118011) * inp_2_1_1;
result0 += M4(-0.11743163, -0.03421903, -0.06631086, -0.042185992, 0.3704885, 0.0001417263, 0.38115436, 0.08162762, -0.09297784, -0.12730032, -0.05578877, -0.12742087, -0.047140025, -0.05407684, -0.00036818674, 0.034250893) * inp_2_2_1;
result0 += M4(0.030308314, 0.014844215, 0.07084848, 0.010995604, -0.10634963, -0.03476981, -0.15406945, -0.012248272, 0.018516662, 0.018256461, 0.030250294, 0.05309553, -0.012794727, 0.0031848373, 0.006447016, 0.001344918) * inp_2_0_2;
result0 += M4(-0.014160697, -0.03532994, 0.13144474, -0.00026352296, 0.04772014, 0.0071790908, -0.14690927, -0.13488056, 0.017247368, 0.075154245, 0.07095803, -0.11632203, -0.0047745123, -0.05720327, -0.020320535, -0.063812315) * inp_2_1_2;
result0 += M4(0.010836789, 0.03654803, 0.0137605835, -0.008241026, 0.10062013, 0.120556265, 0.12962195, 0.07804546, 0.017024945, 0.026084676, -0.004509266, 0.07278677, -0.00497006, 0.040066175, -0.005818619, 0.06232713) * inp_2_2_2;
const V4 inp_3_0_0 = inp[3][local_xy.y + 0][local_xy.x + 0];
const V4 inp_3_1_0 = inp[3][local_xy.y + 0][local_xy.x + 1];
const V4 inp_3_2_0 = inp[3][local_xy.y + 0][local_xy.x + 2];
const V4 inp_3_0_1 = inp[3][local_xy.y + 1][local_xy.x + 0];
const V4 inp_3_1_1 = inp[3][local_xy.y + 1][local_xy.x + 1];
const V4 inp_3_2_1 = inp[3][local_xy.y + 1][local_xy.x + 2];
const V4 inp_3_0_2 = inp[3][local_xy.y + 2][local_xy.x + 0];
const V4 inp_3_1_2 = inp[3][local_xy.y + 2][local_xy.x + 1];
const V4 inp_3_2_2 = inp[3][local_xy.y + 2][local_xy.x + 2];
result0 += M4(-0.056638226, -0.014636025, -0.039229833, -0.023937698, 0.0071998225, 0.006270476, 0.03453649, 0.008485455, 0.023115309, 0.016761675, 0.018807046, 0.008262102, -0.112472914, -0.08804051, -0.053496294, -0.059561256) * inp_3_0_0;
result0 += M4(-0.048097163, -0.083740085, -0.007153653, -0.005329671, 0.025819454, 0.035302766, -0.0507558, -0.020351013, -0.018624973, -0.046828322, -0.045398995, -0.03204218, -0.07163138, -0.0895047, 0.01680595, 0.010678103) * inp_3_1_0;
result0 += M4(0.026189093, 0.06621076, 0.018487725, 0.058483873, -0.16239485, 0.027597856, -0.081655666, -0.02271519, 0.03473658, 0.0637648, 0.033509936, 0.048784237, -0.0879195, -0.08722275, -0.052239154, -0.052761104) * inp_3_2_0;
result0 += M4(-0.05702285, -0.07530138, 0.050887365, -0.028957656, -0.039279997, 0.023512175, -0.07892729, 0.0539064, 0.049006574, -0.036440436, 0.016188024, 0.026841642, -0.061047584, -0.0049187806, -0.098480225, 0.030135173) * inp_3_0_1;
result0 += M4(0.245567, 0.30136076, -0.2306623, -0.06080821, 0.1491032, -0.2811624, 0.17079736, -0.13631457, -0.47227255, -0.36797953, -0.39324626, -0.35655284, 0.34119692, 0.30852947, 0.3328005, 0.2677234) * inp_3_1_1;
result0 += M4(-0.00081570714, -0.025666406, 0.036232222, -0.044221822, -0.035065267, 0.19009437, -0.115261525, 0.09050988, 0.00850944, -0.03743462, -0.021475121, -0.03522739, -0.09951341, -0.10976146, -0.09866085, -0.12479215) * inp_3_2_1;
result0 += M4(-0.035695568, -0.019111354, -0.059491113, -0.022139635, -0.010610637, 0.010300241, 0.015860146, 0.0015580617, 0.12600164, 0.055962678, 0.19334456, 0.051249225, -0.02728514, 0.0072604646, -0.04802921, 0.011995982) * inp_3_0_2;
result0 += M4(0.011924981, -0.015144949, 0.14138313, 0.078566924, 0.017163014, -0.02807699, 0.0028008996, -0.120849, 0.16702725, 0.17699935, -0.05710145, 0.055325154, 0.1390905, 0.05821379, 0.09878961, -0.0071945614) * inp_3_1_2;
result0 += M4(-0.030453999, -0.025468823, -0.027789716, -0.013781253, 0.018489737, 0.034405146, 0.06269092, 0.15312864, 0.10282099, 0.15343723, 0.09713119, 0.1130147, -0.020805998, 0.007987905, -0.035749104, -0.03274916) * inp_3_2_2;
const ivec2 output_base = ivec2(gl_GlobalInvocationID) * ivec2(1, 1);
imageStore(out_image, output_base + ivec2(0, 0), result0);
}
//!DESC ArtCNN C4F16 DS (Depth-To-Space)
//!COMPUTE 12 16 12 16
//!HOOK LUMA
//!BIND conv2d_6
//!WIDTH LUMA.w 2.0 *
//!HEIGHT LUMA.h 2.0 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w / 1.3 > OUTPUT.h LUMA.h / 1.3 > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
# define V4 f16vec4
# define M4 f16mat4
# define F float16_t
#else
# define V4 vec4
# define M4 mat4
# define F float
#endif
void hook() {
vec4 result = vec4(0.0, 0.0, 0.0, 1.0);
vec2 f0 = fract(conv2d_6_pos * conv2d_6_size);
ivec2 i0 = ivec2(f0 * vec2(2.0));
result.x = conv2d_6_tex((vec2(0.5) - f0) * conv2d_6_pt + conv2d_6_pos)[i0.y * 2 + i0.x];
imageStore(out_image, ivec2(gl_GlobalInvocationID), clamp(result, 0.0, 1.0));
}