**File:** modules/gapi/src/backends/fluid/gfluidcore.cpp
**Change Type:** modified
**Context:** PR #18338: Univ Intrinsics implementation of Add, Sub, Absdiff kernels - Performance report: [AbsDiff_Add_Sub_perf_report.xlsx](https://github.com/ope...

**Code Changes:**
```diff
@@ -151,6 +151,348 @@ GAPI_FLUID_KERNEL(GFluidAddW, cv::gapi::core::GAddW, false)
 
 enum Arithm { ARITHM_ABSDIFF, ARITHM_ADD, ARITHM_SUBTRACT, ARITHM_MULTIPLY, ARITHM_DIVIDE };
 
+#if CV_SIMD
+CV_ALWAYS_INLINE void absdiff_store(short out[], const v_int16& a, const v_int16& b, int x)
+{
+    vx_store(&out[x], v_absdiffs(a, b));
+}
+
```

Review comment:
As practice has shown, this advice does not work: `/build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp: In function 'void cv::gapi::fluid::absdiff_simd(const T*, const T*, T*, int, int&)': /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/_gfluidcore.cpp:202:80: error: no matching function for call to 'absdiff_impl(const float*, const float*, float*, int&, int&)' reinterpret_cast<float*>(out), length, x); ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:156:20: note: candidate: template<class VT, class T> void cv::gapi::fluid::absdiff_impl(const T*, const T*, T*, int, int&) static inline void absdiff_impl(const T in1[], const T in2[], T out[], int length, int& x) ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:156:20: note: template argument deduction/substitution failed: /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:202:80: note: cannot convert 'reinterpret_cast<const float*>(in1)' (type 'const float*') to type 'const cv::hal_baseline::v_float32x4*' reinterpret_cast<float*>(out), length, x);_ ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp: In instantiation of 'void cv::gapi::fluid::run_arithm(cv::gapi::fluid::Buffer&, const cv::gapi::fluid::View&, const cv::gapi::fluid::View&, cv::gapi::fluid::Arithm, double) [with DST = unsigned char; SRC1 = short int; SRC2 = short int]': /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:459:9: required from here /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:415:25: error: no matching function for call to 'absdiff_simd(const short int*&, const short int*&, unsigned char*&, int&, int&)' absdiff_simd(in1, in2, out, length, x); ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:177:20: note: candidate: template<class T> void cv::gapi::fluid::absdiff_simd(const T*, const T*, T*, int, int&) static inline void absdiff_simd(const T in1[], const T in2[], T out[], int length, int& x) ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:177:20: note: template argument deduction/substitution failed: /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:415:25: note: deduced conflicting types for parameter 'T' ('short int' and 'unsigned char') absdiff_simd(in1, in2, out, length, x); ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp: In instantiation of 'void cv::gapi::fluid::run_arithm(cv::gapi::fluid::Buffer&, const cv::gapi::fluid::View&, const cv::gapi::fluid::View&, cv::gapi::fluid::Arithm, double) [with DST = unsigned char; SRC1 = float; SRC2 = float]': /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:460:9: required from here /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:415:25: error: no matching function for call to 'absdiff_simd(const float*&, const float*&, unsigned char*&, int&, int&)' /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:177:20: note: candidate: template<class T> void cv::gapi::fluid::absdiff_simd(const T*, const T*, T*, int, int&) static inline void absdiff_simd(const T in1[], const T in2[], T out[], int length, int& x) ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:177:20: note: template argument deduction/substitution failed: /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:415:25: note: deduced conflicting types for parameter 'T' ('float' and 'unsigned char') absdiff_simd(in1, in2, out, length, x); ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp: In instantiation of 'void cv::gapi::fluid::run_arithm(cv::gapi::fluid::Buffer&, const cv::gapi::fluid::View&, const cv::gapi::fluid::View&, cv::gapi::fluid::Arithm, double) [with DST = float; SRC1 = unsigned char; SRC2 = unsigned char]': /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:462:9: required from here /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:415:25: error: no matching function for call to 'absdiff_simd(const unsigned char*&, const unsigned char*&, float*&, int&, int&)' /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:177:20: note: candidate: template<class T> void cv::gapi::fluid::absdiff_simd(const T*, const T*, T*, int, int&) static inline void absdiff_simd(const T in1[], const T in2[], T out[], int length, int& x) ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:177:20: note: template argument deduction/substitution failed: /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:415:25: note: deduced conflicting types for parameter 'T' ('unsigned char' and 'float') absdiff_simd(in1, in2, out, length, x); ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp: In instantiation of 'void cv::gapi::fluid::run_arithm(cv::gapi::fluid::Buffer&, const cv::gapi::fluid::View&, const cv::gapi::fluid::View&, cv::gapi::fluid::Arithm, double) [with DST = float; SRC1 = short int; SRC2 = short int]': /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:463:9: required from here /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:415:25: error: no matching function for call to 'absdiff_simd(const short int*&, const short int*&, float*&, int&, int&)' /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:177:20: note: candidate: template<class T> void cv::gapi::fluid::absdiff_simd(const T*, const T*, T*, int, int&) static inline void absdiff_simd(const T in1[], const T in2[], T out[], int length, int& x) ^ /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:177:20: note: template argument deduction/substitution failed: /build/precommit_linux64/opencv/modules/gapi/src/backends/fluid/gfluidcore.cpp:415:25: note: deduced conflicting types for parameter 'T' ('short int' and 'float') absdiff_simd(in1, in2, out, length, x); ^ make[2]: *** [modules/gapi/CMakeFiles/opencv_gapi.dir/src/backends/fluid/gfluidcore.cpp.o] Error 1`