------ ArmNN for Android NNAPI supported operations ------

This release of ArmNN for Android supports use as a driver for the Android Neural Networks API. It implements the
android.hardware.neuralnetworks@1.0, android.hardware.neuralnetworks@1.1, android.hardware.neuralnetworks@1.2 and
android.hardware.neuralnetworks@1.3
HAL interfaces.

For more information on the Android Neural Networks API, see https://developer.android.com/ndk/guides/neuralnetworks/index.html

For integration and usage documentation, please see README.md.

--- Support for Android Neural Networks HAL operations ---

The following AndroidNN HAL 1.0, 1.1, 1.2 and 1.3 operations are currently supported:

AndroidNN operator           Tensor type supported
ABS                          (FLOAT32)
ADD                          (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
ARGMAX                       (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
ARGMIN                       (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
AVERAGE_POOL_2D              (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
BATCH_TO_SPACE_ND            (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
CONCATENATION                (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
CONV_2D                      (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
DEPTH_TO_SPACE               (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
DEPTHWISE_CONV_2D            (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
DEQUANTIZE                   (FLOAT32 (output only), QUANT8_ASYMM and QUANT8_ASYMM_SIGNED (input only))
DIV                          (FLOAT32, QUANT8_ASYMM)
ELU                          (FLOAT32, QUANT8_ASYMM)
EQUAL                        (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
EXPAND_DIMS                  (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
FILL                         (FLOAT32, FLOAT16, INT32)
FLOOR                        (FLOAT32)
FULLY_CONNECTED              (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
GREATER                      (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
GREATER_EQUAL                (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
GROUPED_CONV_2D              (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
HARD_SWISH                   (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
INSTANCE_NORMALIZATION       (FLOAT32)
L2_NORMALIZATION             (FLOAT32)
L2_POOL_2D                   (FLOAT32, QUANT8_ASYMM)
LESS                         (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
LESS_EQUAL                   (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
LOCAL_RESPONSE_NORMALIZATION (FLOAT32)
LOGISTIC                     (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
LOG_SOFTMAX                  (FLOAT32)
LSTM                         (FLOAT32)
MAXIMUM                      (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
MAX_POOL_2D                  (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
MEAN                         (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
MINIMUM                      (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
MUL                          (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
NEG                          (FLOAT32)
NOT_EQUAL                    (FLOAT32, INT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
PAD                          (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
PAD_V2                       (FLOAT32, FLOAT16, QUANT8_ASYMM)
PRELU                        (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
QUANTIZE                     (FLOAT32 (input only), QUANT8_ASYMM and QUANT8_ASYMM_SIGNED (output only))
QUANTIZED_16BIT_LSTM         (QUANT8_ASYMM)
QUANTIZED_LSTM               (QUANT8_ASYMM)
RELU                         (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
RELU1                        (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
RELU6                        (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
RESHAPE                      (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
RESIZE_BILINEAR              (FLOAT32, QUANT8_ASYMM)
RESIZE_NEAREST_NEIGHBOR      (FLOAT32, QUANT8_ASYMM)
RSQRT                        (FLOAT32)
SOFTMAX                      (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
SPACE_TO_BATCH_ND            (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
SPACE_TO_DEPTH               (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
SQRT                         (FLOAT32)
SQUEEZE                      (FLOAT32, FLOAT16, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
STRIDED_SLICE                (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
SUB                          (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
TANH                         (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
TRANSPOSE                    (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)
TRANSPOSE_CONV_2D            (FLOAT32, QUANT8_ASYMM, QUANT8_ASYMM_SIGNED)

Where operations are not supported by the ArmNN Android NN Driver, the driver indicates this to the framework
appropriately and the framework implements those operations using a CPU implementation.

NOTE: By convention, only those tensor types have been listed above, which are fully supported across all
ArmNN backends.
    - FLOAT16 input tensors are partially supported on most HAL 1.2 operators on the GpuAcc and
    CpuRef backends, however not on CpuAcc.