------ 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 interface.
android.hardware.neuralnetworks@1.1 models available in Android P can be executed if they return true from the utility method compliantWithV1_0(model).

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.
