------ 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)
AVERAGE_POOL_2D              (FLOAT32, QUANT8_ASYMM)
BATCH_TO_SPACE_ND            (FLOAT32, QUANT8_ASYMM)
CONCATENATION                (FLOAT32, QUANT8_ASYMM)
CONV_2D                      (FLOAT32, QUANT8_ASYMM, QUANT8_SYMM_PER_CHANNEL(only for weights))
DEPTH_TO_SPACE               (FLOAT32, FLOAT16, QUANT8_ASYMM)
DEPTHWISE_CONV_2D            (FLOAT32, QUANT8_ASYMM, QUANT8_SYMM_PER_CHANNEL(only for weights))
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, QUANT8_SYMM_PER_CHANNEL(only for weights))
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, QUANT8_ASYMM)
PAD_V2                       (FLOAT32, 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, 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, QUANT8_ASYMM)
SQRT                         (FLOAT32)
SQUEEZE                      (FLOAT32, 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,QUANT8_SYMM_PER_CHANNEL(only for weights))

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.
