///
/// Copyright (c) 2019-2024 Arm Limited.
///
/// SPDX-License-Identifier: MIT
///
/// 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.
///
namespace arm_compute
{
/**
@page errata Errata

@tableofcontents

@section S7_1_errata Errata

- (COMPMID-7536) NEDepthwiseConvolutionLayer and NEPoolingLayer may produce wrong results with OpenMP® scheduler
    - Versions: >= v24.05 && < v24.08
    - Oses: All
    - Conditions:
        - Compile for any architecture with openmp=1 neon=1 option
        - Use NEDepthwiseConvolutionLayer and/or NEPoolingLayer with multiple threads
        - Number of threads provided is greater than the number of required threads computed by the operator

- (COMPMID-7191) Fix Memory violation in non-optimized Neon™ FP32 GeMM
    - Versions: >= v17.09 && < v24.07
    - Oses: Linux, Android, MacOS, Windows.
    - Conditions:
        - Compile the latest Arm Compute Library for armv8a
        - RHS with batches

- (COMPMID-7011) NELSTMLayer and CLSTMLayer crash when given a memory manager.
    - Versions: >= v18.11 && < 24.07
    - Oses: Linux, Android, MacOS, Windows.
    - Conditions:
        - Compile the latest Arm Compute Library for armv8a
        - Use NELSTMLayer or CLLSTMLayer with a memory manager

- (COMPMID-7109) Under certain conditions, Quantized GEMM may result in very few mismatches due to 16-bit accumulation overflow
    - Versions: >= v17.09
    - Oses: Linux, Android, MacOS, Windows.
    - Conditions:
        - Compile the latest Arm Compute Library for armv8a
        - Device without dot product support
        - In the matrix multiplication
            - Lhs matrix must have -128 values eight positions apart from each other in its row
            - Rhs matrix must have -128 values at the same positions as Lhs

- (COMPMID-6904) Fix out-of-bound memory write for non-optimized FP16 GeMM kernel.
    - Versions: >= v17.09 && < v24.06
    - Oses: Linux, Android, MacOS, Windows.
    - Conditions:
        - Compile the latest Arm Compute Library for armv8.2-a or multi_isa
        - Device with FP16 support
        - GeMM with beta coefficient != 0 or 1

- (COMPMID-6493) Crash when running Arm Compute Library compiled for SVE2 on a computer that support SVE only.
    - Versions: >= v21.02 && <=v23.08
    - OSs: Linux, Android.
    - Conditions:
        - Compile the latest Arm Compute Library for SVE2 (arch=armv8.6-a-sve2).
        - multi_isa = 0
        - Device with SVE but without SVE2 support.
    - Result:
        - Crash due to illegal instruction.
        - To run SVE only, build with arch="armv8.2-a-sve", arch="armv8.6-a-sve", or with multi_isa=1.

- (COMPMID-6404) Under certain conditions, CLTile may produce incorrect result.
    - Versions: >= v19.02 && < v23.08
    - OSs: Linux, Android.
    - Conditions:
        - The size of the lowest dimension of the input tensor is greater than 16 bytes.
        - The size of the lowest dimension of the input tensor is not a multiple of 16.
    - Result:
        - Incorrect result is produced.

- (COMPMID-6271) Under certain conditions, CLArgMinMaxLayer validation tests may fail
    - Versions Affected: >= v20.02 && < v23.08
    - OSs Affected: Linux
    - Conditions:
        - Backend: OpenCL
        - Axis == 0
    - Result:
        - Sporadic mismatches only on certain devices

- (COMPMID-5324) Issue identified with direct and depthwise convolutions for certain Arm® Mali™ DDK versions.
    - Versions Affected: < v22.08
    - Conditions:
        - Arm® Mali™ DDK Versions : >= r23p0 && <= r38p0
        - Mali™ GPUs: Bifrost GPU family with the exception of G71
        - Backend: OpenCL
        - Build options Include : "cl-fast-relaxed-math"
    - Result: Reduced accuracy issue, while using direct and depthwise convolutions fused with LU_BOUNDED_RELU activation.

- (COMPMID-5134) An issue has been identified when running the graph_deepspeech_v0_4_1 graph example.
    - Versions Affected: >= v21.08
    - Conditions:
        - Data type input: F32
        - Backend: OpenCL
    - Result: The execution of the graph_deepspeech_v0_4_1 could fail on OpenCL backend for systems with a small RAM. The issue is due to the extra temporary memory required to reshape the network weights

- (COMPMID-4013) Experimented performance regressions for some networks on OpenCL when using Arm® Mali™ DDK r8p0
    - Versions Affected: v21.05
    - OSs Affected: All
    - Conditions:
        - Arm® Mali™ DDK r8p0

- (COMPMID-5146) Under certain conditions, CLFullyConnectedLayer quantized tests may fail due to an issue in the test framework.
    - Versions Affected: v21.02
    - OSs Affected: Linux
    - Conditions:
        - armv7a architecture
        - release mode
        - asserts enabled

- (COMPMID-4367) Performance regression in Convolution Layer OpenCL backend on Mali™ G77 when QSYMM8_PER_CHANNEL is used as weights' data type.
    - Versions Affected: >= v20.11 && < v21.08
    - OSs Affected: All
    - Conditions:
        - Mali™ G77
        - Convolution Layer in use
        - OpenCL backend
        - Convolution Layer uses QSYMM8_PER_CHANNEL as the data type of its weight

- (COMPMID-4306) A wrong test configuration has been found in CLGEMMMatrixMultiplyReshapedOnlyRHS set of tests.
    - Versions Affected: >= v20.11 && < v21.05
    - Conditions:
        - Data type input: F32/F16
        - Fused bounded relu activation with coefficient 'a' being negative

- (COMPMID-5135) Under certain conditions, the validation test case 'CL/DirectConvolutionLayer/Float/FP32/RunSmall9x9\@InputShape=32x37x3x4:StrideX=1:StrideY=1:PadX=0:PadY=0:KernelSize=9:NumKernels=1:DataType=F32:ActivationInfo=LU_BOUNDED_RELU:DataLayout=NHWC' may fail.
    - Versions Affected: >= v20.08
    - Conditions:
        - The validation suite has to run in nightly mode and execute 40k+ test cases before the test mentioned above

- (COMPMID-5136) Under certain conditions, benchmark examples can hang when OpenCL profiling queues are enabled.
    - Versions Affected: >= v19.11
    - OSs Affected: Linux
    - Conditions:
        - Arm® Mali™ DDK r1p0 - r8p0, and
        - Linux kernel >= 4.4

- (COMPMID-5137) On Android with armv8a/armv8.2-a architecture, Arm® Neon™ validation tests can fail when compiled using Android Ndk
  >= r18b in debug mode (https://github.com/android/ndk/issues/1135).
    - Versions Affected: >= v19.11
    - OSs Affected: Android
    - Conditions:
        - armv8a/armv8.2-a architecture, and
        - Compiled using Android NDK >= r18b in debug mode.

- (COMPMID-4288) An issue has been identified with CLCast.
    - Versions Affected: >= v18.11 && < v21.05
    - Conditions:
        - Data type input: F32
        - Data type output: All integer types
        - Conversion policy: SATURATE
    - Result: OpenCL backend will always wrap around instead of saturating for out-of-range inputs

*/
} // namespace
