1- /* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
1+ /* Copyright 2025 The TensorFlow Authors. All Rights Reserved.
22
33Licensed under the Apache License, Version 2.0 (the "License");
44you may not use this file except in compliance with the License.
@@ -110,44 +110,11 @@ void TestPackThreeInputsFloat(int* input1_dims_data, const float* input1_data,
110110 1e-5f , output_data);
111111}
112112
113- void TestPackTwoInputsQuantized (
114- int * input1_dims_data, const int8_t * input1_data, int * input2_dims_data,
115- const int8_t * input2_data, int axis, int * output_dims_data,
116- const int8_t * expected_output_data, int8_t * output_data) {
117- TfLiteIntArray* input1_dims = IntArrayFromInts (input1_dims_data);
118- TfLiteIntArray* input2_dims = IntArrayFromInts (input2_dims_data);
119- TfLiteIntArray* output_dims = IntArrayFromInts (output_dims_data);
120- const int output_dims_count = ElementCount (*output_dims);
121-
122- constexpr int input_size = 2 ;
123- constexpr int output_size = 1 ;
124- constexpr int tensors_size = input_size + output_size;
125- TfLiteTensor tensors[tensors_size] = {
126- // CreateQuantizedTensor needs scale/zero_point values as input, but these
127- // values don't matter as to the functionality of PACK, so just set as 1.0
128- // and 128.
129- CreateQuantizedTensor (input1_data, input1_dims, 1.0 , 128 ),
130- CreateQuantizedTensor (input2_data, input2_dims, 1.0 , 128 ),
131- CreateQuantizedTensor (output_data, output_dims, 1.0 , 128 )};
132-
133- TfLitePackParams builtin_data = {
134- .values_count = 2 ,
135- .axis = axis,
136- };
137- int inputs_array_data[] = {2 , 0 , 1 };
138- TfLiteIntArray* inputs_array = IntArrayFromInts (inputs_array_data);
139- int outputs_array_data[] = {1 , 2 };
140- TfLiteIntArray* outputs_array = IntArrayFromInts (outputs_array_data);
141-
142- ValidatePackGoldens (tensors, tensors_size, builtin_data, inputs_array,
143- outputs_array, expected_output_data, output_dims_count,
144- 1e-5f , output_data);
145- }
146-
147- void TestPackTwoInputsQuantized32 (
148- int * input1_dims_data, const int32_t * input1_data, int * input2_dims_data,
149- const int32_t * input2_data, int axis, int * output_dims_data,
150- const int32_t * expected_output_data, int32_t * output_data) {
113+ template <typename T>
114+ void TestPackTwoInputs (int * input1_dims_data, const T* input1_data,
115+ int * input2_dims_data, const T* input2_data, int axis,
116+ int * output_dims_data, const T* expected_output_data,
117+ T* output_data) {
151118 TfLiteIntArray* input1_dims = IntArrayFromInts (input1_dims_data);
152119 TfLiteIntArray* input2_dims = IntArrayFromInts (input2_dims_data);
153120 TfLiteIntArray* output_dims = IntArrayFromInts (output_dims_data);
@@ -227,7 +194,7 @@ TF_LITE_MICRO_TEST(PackFloatThreeInputsNegativeAxis) {
227194 input3_values, axis, output_shape, golden, output_data);
228195}
229196
230- TF_LITE_MICRO_TEST (PackFloatMultilDimensions ) {
197+ TF_LITE_MICRO_TEST (PackFloatMultiDimensions ) {
231198 int input_shape[] = {2 , 2 , 3 };
232199 int output_shape[] = {3 , 2 , 2 , 3 };
233200 const float input1_values[] = {1 , 2 , 3 , 4 , 5 , 6 };
@@ -242,7 +209,7 @@ TF_LITE_MICRO_TEST(PackFloatMultilDimensions) {
242209 output_shape, golden, output_data);
243210}
244211
245- TF_LITE_MICRO_TEST (PackQuantizedMultilDimensions ) {
212+ TF_LITE_MICRO_TEST (PackInt8MultiDimensions ) {
246213 int input_shape[] = {2 , 2 , 3 };
247214 int output_shape[] = {3 , 2 , 2 , 3 };
248215 const int8_t input1_values[] = {1 , 2 , 3 , 4 , 5 , 6 };
@@ -252,12 +219,27 @@ TF_LITE_MICRO_TEST(PackQuantizedMultilDimensions) {
252219 constexpr int output_dims_count = 12 ;
253220 int8_t output_data[output_dims_count];
254221
255- tflite::testing::TestPackTwoInputsQuantized (
222+ tflite::testing::TestPackTwoInputs<int8_t >(input_shape, input1_values,
223+ input_shape, input2_values, axis,
224+ output_shape, golden, output_data);
225+ }
226+
227+ TF_LITE_MICRO_TEST (PackInt16MultiDimensions) {
228+ int input_shape[] = {2 , 2 , 3 };
229+ int output_shape[] = {3 , 2 , 2 , 3 };
230+ const int16_t input1_values[] = {1 , 2 , 3 , 4 , 5 , 6 };
231+ const int16_t input2_values[] = {7 , 8 , 9 , 10 , 11 , 12 };
232+ const int16_t golden[] = {1 , 2 , 3 , 7 , 8 , 9 , 4 , 5 , 6 , 10 , 11 , 12 };
233+ const int axis = 1 ;
234+ constexpr int output_dims_count = 12 ;
235+ int16_t output_data[output_dims_count];
236+
237+ tflite::testing::TestPackTwoInputs<int16_t >(
256238 input_shape, input1_values, input_shape, input2_values, axis,
257239 output_shape, golden, output_data);
258240}
259241
260- TF_LITE_MICRO_TEST (PackQuantized32MultilDimensions ) {
242+ TF_LITE_MICRO_TEST (PackInt32MultiDimensions ) {
261243 int input_shape[] = {2 , 2 , 3 };
262244 int output_shape[] = {3 , 2 , 2 , 3 };
263245 const int32_t input1_values[] = {1 , 2 , 3 , 4 , 5 , 6 };
@@ -267,7 +249,7 @@ TF_LITE_MICRO_TEST(PackQuantized32MultilDimensions) {
267249 constexpr int output_dims_count = 12 ;
268250 int32_t output_data[output_dims_count];
269251
270- tflite::testing::TestPackTwoInputsQuantized32 (
252+ tflite::testing::TestPackTwoInputs< int32_t > (
271253 input_shape, input1_values, input_shape, input2_values, axis,
272254 output_shape, golden, output_data);
273255}
0 commit comments