///
/// Copyright (c) 2021 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 data_type_support Data Type Support

@tableofcontents

@section data_type_support_supported_data_type Supported Data Types

Compute Library supports the following list of data types. More detailed information
can be found from the documentation of each operator since the data types supported
by each operator vary.

- BFLOAT16: 16-bit non-standard brain floating point
- QASYMM8: 8-bit unsigned asymmetric quantized
- QASYMM8_SIGNED: 8-bit signed asymmetric quantized
- QSYMM8_PER_CHANNEL: 8-bit signed symmetric quantized (Used for the weights)
- QSYMM8: 8-bit unsigned symmetric quantized
- QSYMM16: 16-bit unsigned symmetric quantized
- F32: 32-bit single precision floating point
- F16: 16-bit half precision floating point
- S32: 32-bit signed integer
*/
} // namespace
