------ 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
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)
DEPTHWISE_CONV_2D            (FLOAT32,QUANT8_ASYMM)
DIV                          (FLOAT32,QUANT8_ASYMM)
DEQUANTIZE                   (FLOAT32,QUANT8_ASYMM)
FLOOR                        (FLOAT32)
FULLY_CONNECTED              (FLOAT32,QUANT8_ASYMM)
L2_NORMALIZATION             (FLOAT32)
L2_POOL_2D                   (FLOAT32,QUANT8_ASYMM)
LOCAL_RESPONSE_NORMALIZATION (FLOAT32)
LOGISTIC                     (FLOAT32,QUANT8_ASYMM)
LSTM                         (FLOAT32)
MAXIMUM                      (FLOAT32,QUANT8_ASYMM)
MAX_POOL_2D                  (FLOAT32,QUANT8_ASYMM)
MEAN                         (FLOAT32,QUANT8_ASYMM)
MINIMUM                      (FLOAT32,QUANT8_ASYMM)
MUL                          (FLOAT32,QUANT8_ASYMM)
PAD                          (FLOAT32,QUANT8_ASYMM)
PAD_V2                       (FLOAT32,QUANT8_ASYMM)
PRELU                        (FLOAT32,QUANT8_ASYMM)
QUANTIZE                     (FLOAT32,QUANT8_ASYMM)
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)
SOFTMAX                      (FLOAT32,QUANT8_ASYMM)
SPACE_TO_BATCH_ND            (FLOAT32,QUANT8_ASYMM)
SPACE_TO_DEPTH_ND            (FLOAT32,QUANT8_ASYMM)
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)

--- Unsupported operators ---

The following AndroidNN HAL 1.0 operations are currently not supported:

DEPTH_TO_SPACE
EMBEDDING_LOOKUP
HASHTABLE_LOOKUP
LSH_PROJECTION
RNN
SVDF

The following AndroidNN HAL 1.2 operations are currently not supported:

CONCATENATION

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.
