Bump FULLY_CONNECTED's supported version to v9.

New options and features introduced between v4 and v9:
v5: keep_num_dims: Not supported. Added check to FullyConnectedOperationParser to explicitly fail when flag is set.
v6: No bias provided: Was already supported in GPU, but the versioning not allowed to run these models.
v7: INT16 input/output. Integer input/output tensors are not supported.
v8: sparse_weight: Sparsity is not supported. Added check to ObjectReader::ReadTensor to reject sparse tensors.
v9: asymmetric_quantize_inputs: Controls on-the-fly quantization behavior with hybrid quant. Not relevant for GPU, as all operations are in floating-point.
PiperOrigin-RevId: 343320830
Change-Id: I4198173a83f1063099df18f531c478208f3594a6
diff --git a/tensorflow/lite/delegates/gpu/common/model_builder.cc b/tensorflow/lite/delegates/gpu/common/model_builder.cc
index ec39dbd..e21e287 100644
--- a/tensorflow/lite/delegates/gpu/common/model_builder.cc
+++ b/tensorflow/lite/delegates/gpu/common/model_builder.cc
@@ -858,7 +858,7 @@
   absl::Status IsSupported(const TfLiteContext* context,
                            const TfLiteNode* tflite_node,
                            const TfLiteRegistration* registration) final {
-    RETURN_IF_ERROR(CheckMaxSupportedOpVersion(registration, 4));
+    RETURN_IF_ERROR(CheckMaxSupportedOpVersion(registration, 9));
     const TfLiteFullyConnectedParams* tf_options;
     RETURN_IF_ERROR(RetrieveBuiltinData(tflite_node, &tf_options));
     if (tf_options->weights_format !=
@@ -870,6 +870,10 @@
       return absl::UnimplementedError(
           "FullyConnected doesn't support more than 2 runtime inputs.");
     }
+    if (tf_options->keep_num_dims == true) {
+      return absl::UnimplementedError(
+          "FullyConnected doesn't support keep_num_dims.");
+    }
     // TODO(eignasheva): check input shape
     return absl::OkStatus();
   }
diff --git a/tensorflow/lite/delegates/gpu/common/object_reader.h b/tensorflow/lite/delegates/gpu/common/object_reader.h
index 3c7d7f6..71f4a52 100644
--- a/tensorflow/lite/delegates/gpu/common/object_reader.h
+++ b/tensorflow/lite/delegates/gpu/common/object_reader.h
@@ -71,6 +71,9 @@
     }
 
     const TfLiteTensor* tflite_tensor = context_->tensors + tensor_idx;
+    if (tflite_tensor->sparsity != nullptr) {
+      return absl::InvalidArgumentError("Sparsity is not supported on GPU.");
+    }
     t->data.resize(NumElements(tflite_tensor));
     RETURN_IF_ERROR(CreateVectorCopyData(*tflite_tensor, &t->data[0]));