[reference model] Add shape operators

- fixed up reshape conformance tests to use shape input instead of attribute
- fixed up tile conformance tests to use shape input instead of attribute
- fixed output and output rank of dim op
- allow rank 0 and rank 1 tensors for tosa.shape values (for shape = {})
- added initialization of rank 0 const_shape tensors (for shape = {})
- Update conformance tests to use new rescale attributes

Signed-off-by: Tai Ly <tai.ly@arm.com>
Signed-off-by: Won Jeon <won.jeon@arm.com>
Change-Id: I6cce0d2a9ab066fe20a2abf9d2cfde3eb3d8c18b
diff --git a/reference_model/src/ops/op_factory.cc b/reference_model/src/ops/op_factory.cc
index 34db903..af8332e 100644
--- a/reference_model/src/ops/op_factory.cc
+++ b/reference_model/src/ops/op_factory.cc
@@ -1,5 +1,5 @@
 
-// Copyright (c) 2020-2023, ARM Limited.
+// Copyright (c) 2020-2024, ARM Limited.
 //
 //    Licensed under the Apache License, Version 2.0 (the "License");
 //    you may not use this file except in compliance with the License.
@@ -26,6 +26,7 @@
 #include "image.h"
 #include "reduction.h"
 #include "scatter_gather.h"
+#include "shape.h"
 #include "tensor_ops.h"
 #include "type_conversion.h"
 
@@ -600,6 +601,19 @@
         case Op_WHILE_LOOP:
             return new OpWhileLoop(sgt, tsh, attribute, id);
 
+        case Op_CONST_SHAPE:
+            return new OpConstShape(sgt, id);
+        case Op_CONCAT_SHAPE:
+            return new OpConcatShape(sgt, id);
+        case Op_ADD_SHAPE:
+            return new OpAddShape(sgt, id);
+        case Op_SUB_SHAPE:
+            return new OpSubShape(sgt, id);
+        case Op_MUL_SHAPE:
+            return new OpMulShape(sgt, id);
+        case Op_DIV_SHAPE:
+            return new OpDivShape(sgt, id);
+
         // Ops not recognized
         default:
             goto done;