------ 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 and android.hardware.neuralnetworks@1.2
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 and 1.2 operations are currently supported:

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

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.
