///
/// Copyright (c) 2019 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

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

- On Android with arm64-v8a/arm64-v8.2-a architecture, 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:
        - arm64-v8a/arm64-v8.2-a architecture, and
        - Compiled using Android NDK >= r18b in debug mode.

*/
} // namespace
