diff --git a/reference_model/include/operators.h b/reference_model/include/operators.h
index 6e21e95..6efb655 100644
--- a/reference_model/include/operators.h
+++ b/reference_model/include/operators.h
@@ -130,9 +130,7 @@
     tosa_status_t tosa_run_transpose_conv2d(tosa_tensor_t client_input,
                                             tosa_tensor_t client_weight,
                                             tosa_tensor_t client_bias,
-                                            const int32_t client_out_pad[4],
                                             const int32_t client_stride[2],
-                                            const int32_t client_out_shape[4],
                                             const int32_t client_input_zp,
                                             const int32_t client_weight_zp,
                                             const int32_t client_pad_len,
@@ -196,7 +194,7 @@
 
     tosa_status_t tosa_run_mul(tosa_tensor_t client_input1,
                                tosa_tensor_t client_input2,
-                               const uint8_t client_shift,
+                               const int32_t client_shift,
                                tosa_tensor_t client_output);
 
     tosa_status_t tosa_run_pow(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output);
@@ -288,8 +286,6 @@
                                  tosa_tensor_t client_output);
 
     tosa_status_t tosa_run_tile(tosa_tensor_t client_input1,
-                                const int32_t client_multiplies_len,
-                                const int32_t client_multiplies[],
                                 const int32_t client_multiples_len,
                                 const int32_t client_multiples[],
                                 tosa_tensor_t client_output);
@@ -323,7 +319,7 @@
                                    const int32_t client_multiplier_len,
                                    const int32_t client_multiplier[],
                                    const int32_t client_shift_len,
-                                   const uint8_t client_shift[],
+                                   const int32_t client_shift[],
                                    const bool client_scale32,
                                    const bool client_double_round,
                                    const bool client_per_channel);
diff --git a/reference_model/src/operators.cc b/reference_model/src/operators.cc
index e9d6cad..a0b5013 100644
--- a/reference_model/src/operators.cc
+++ b/reference_model/src/operators.cc
@@ -429,9 +429,7 @@
     tosa_status_t tosa_run_transpose_conv2d(tosa_tensor_t client_input,
                                             tosa_tensor_t client_weight,
                                             tosa_tensor_t client_bias,
-                                            const int32_t client_out_pad[4],
                                             const int32_t client_stride[2],
-                                            const int32_t client_out_shape[4],
                                             const int32_t client_input_zp,
                                             const int32_t client_weight_zp,
                                             const int32_t client_pad_len,
@@ -1032,7 +1030,7 @@
 
     tosa_status_t tosa_run_mul(tosa_tensor_t client_input1,
                                tosa_tensor_t client_input2,
-                               const uint8_t client_shift,
+                               const int32_t client_shift,
                                tosa_tensor_t client_output)
     {
         // Create operator attributes
@@ -2032,8 +2030,6 @@
     }
 
     tosa_status_t tosa_run_tile(tosa_tensor_t client_input1,
-                                const int32_t client_multiplies_len,
-                                const int32_t client_multiplies[],
                                 const int32_t client_multiples_len,
                                 const int32_t client_multiples[],
                                 tosa_tensor_t client_output)
@@ -2256,7 +2252,7 @@
                                    const int32_t client_multiplier_len,
                                    const int32_t client_multiplier[],
                                    const int32_t client_shift_len,
-                                   const uint8_t client_shift[],
+                                   const int32_t client_shift[],
                                    const bool client_scale32,
                                    const bool client_double_round,
                                    const bool client_per_channel)
diff --git a/scripts/operator_api/generate_api.py b/scripts/operator_api/generate_api.py
index 5038973..499eadb 100644
--- a/scripts/operator_api/generate_api.py
+++ b/scripts/operator_api/generate_api.py
@@ -16,7 +16,15 @@
     """
     Returns a list of the TOSA argument types from tosa.xml.
     """
-    argTypes = {"in_t", "out_t", "mul_t", "weight_t", "in_out_t"}
+    argTypes = {
+        "tensor_t",
+        "in_t",
+        "out_t",
+        "mul_t",
+        "weight_t",
+        "in_out_t",
+        "tensor_list_t",
+    }
     argTypesXml = tosaXml.getElementsByTagName("type")
     for argTypeXml in argTypesXml:
         argTypes.add(argTypeXml.getAttribute("name"))
@@ -182,7 +190,7 @@
     Return a list of TOSA operators as defined by tosa.xml.
     """
     operators = []
-    ignoreOps = ["while_loop", "cond_if", "const", "custom", "fft2d", "rfft2d"]
+    ignoreOps = ["while_loop", "cond_if", "const", "custom", "fft2d", "rfft2d", "erf"]
     opsXml = tosaXml.getElementsByTagName("operator")
     allSerializeArgs = getSerializeArgs()
     for opXml in opsXml:
@@ -227,7 +235,10 @@
     tosaTypeMap = {"bool_t": "bool", "uint6_t": "uint8_t", "mode_t": "tosa_mode_t"}
     for xmlArg in argsXml:
         argName = xmlArg.getAttribute("name").lower()
-        argType = xmlArg.getAttribute("type")
+        if xmlArg.getAttribute("tensor-element-type") == "resize_mode_t":
+            argType = "tosa_mode_t"
+        else:
+            argType = xmlArg.getAttribute("type")
         argShape = xmlArg.getAttribute("shape")
         argCategory = xmlArg.getAttribute("category")
         # Update argument type
diff --git a/scripts/operator_api/templates/operators_cc.j2 b/scripts/operator_api/templates/operators_cc.j2
index 3f2acb5..37a0af6 100644
--- a/scripts/operator_api/templates/operators_cc.j2
+++ b/scripts/operator_api/templates/operators_cc.j2
@@ -49,6 +49,8 @@
             return tosa::DType::DType_FP16;
         case tosa_datatype_fp32_t:
             return tosa::DType::DType_FP32;
+        case tosa_datatype_bool_t:
+            return tosa::DType::DType_BOOL;
         default:
             return tosa::DType::DType_UNKNOWN;
     }
diff --git a/thirdparty/specification b/thirdparty/specification
index 0205d99..8e14dcd 160000
--- a/thirdparty/specification
+++ b/thirdparty/specification
@@ -1 +1 @@
-Subproject commit 0205d99cbff58797bf6602ee5718d50c00d8309b
+Subproject commit 8e14dcd2f86e9a3b9c2283fb0f0325088565bbe7
