------ 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 and android.hardware.neuralnetworks@1.1 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 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)
CONV_2D                      (FLOAT32,QUANT8_ASYMM)
DEPTHWISE_CONV_2D*           (FLOAT32,QUANT8_ASYMM)
DIV                          (FLOAT32,QUANT8_ASYMM)
FLOOR                        (FLOAT32)
FULLY_CONNECTED              (FLOAT32,QUANT8_ASYMM)
L2_NORMALIZATION             (FLOAT32)
L2_POOL_2D                   (FLOAT32)
LOCAL_RESPONSE_NORMALIZATION (FLOAT32)
LOGISTIC                     (FLOAT32,QUANT8_ASYMM)
LSTM                         (FLOAT32)
MAX_POOL_2D                  (FLOAT32,QUANT8_ASYMM)
MEAN                         (FLOAT32,QUANT8_ASYMM)
MUL                          (FLOAT32,QUANT8_ASYMM)
PAD                          (FLOAT32,QUANT8_ASYMM)
RELU                         (FLOAT32,QUANT8_ASYMM)
RELU1                        (FLOAT32,QUANT8_ASYMM)
RELU6                        (FLOAT32,QUANT8_ASYMM)
RESHAPE                      (FLOAT32,QUANT8_ASYMM)
RESIZE_BILINEAR              (FLOAT32)
SOFTMAX                      (FLOAT32,QUANT8_ASYMM)
SPACE_TO_BATCH_ND            (FLOAT32,QUANT8_ASYMM)
SQUEEZE                      (FLOAT32,QUANT8_ASYMM)
STRIDED_SLICE                (FLOAT32,QUANT8_ASYMM)
SUB                          (FLOAT32,QUANT8_ASYMM)
TANH                         (FLOAT32)
TRANSPOSE                    (FLOAT32,QUANT8_ASYMM)

* Depthwise convolution only supports a value of 1 for the depth multiplier. In addition, the QUANT8_ASYMM version only supports 3x3 kernels.

--- Unsupported operators ---

The following AndroidNN 1.0 operations are currently not supported.

DEPTH_TO_SPACE
DEQUANTIZE
EMBEDDING_LOOKUP
HASHTABLE_LOOKUP
LSH_PROJECTION
RNN
SPACE_TO_DEPTH
SVDF

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.
