From 5d51c3a37c7edffceceaae42149d2b538830b933 Mon Sep 17 00:00:00 2001 From: Renjie Liu Date: Fri, 24 May 2019 02:17:12 -0700 Subject: [PATCH] Fix depthwise_conv padding case PiperOrigin-RevId: 249798490 --- .../integer_ops/depthwise_conv_3x3_filter.h | 84 +++++++++++++------ 1 file changed, 57 insertions(+), 27 deletions(-) diff --git a/tensorflow/lite/kernels/internal/optimized/integer_ops/depthwise_conv_3x3_filter.h b/tensorflow/lite/kernels/internal/optimized/integer_ops/depthwise_conv_3x3_filter.h index 4b430b4c06c..ee495ddaa9d 100644 --- a/tensorflow/lite/kernels/internal/optimized/integer_ops/depthwise_conv_3x3_filter.h +++ b/tensorflow/lite/kernels/internal/optimized/integer_ops/depthwise_conv_3x3_filter.h @@ -1936,8 +1936,10 @@ struct DepthwiseConvPartialPerChannel; - static inline void Run(const int32* output_multiplier_ptr, - const int32* output_shift_ptr, const int8* input_data, + static inline void Run(const int32* output_multiplier, + const int32* output_shift, const int8* input_data, int32 start_x, int32 end_x, const int8* filter_data, const int32* bias_data, int8* output_data, const DepthwiseConvParams& params, @@ -2639,6 +2665,8 @@ struct DepthwiseConvMultiRowPerChannel { out_x += shuffle_params.output_width) { const int8* input_ptr = input_data; const int32* bias_ptr = bias_data; + const int32* output_multiplier_ptr = output_multiplier; + const int32* output_shift_ptr = output_shift; const int8* filter_ptr = filter_data; int8* output_ptr = output_data; int64_t depth = 0; @@ -2669,6 +2697,8 @@ struct DepthwiseConvMultiRowPerChannel { output_ptr += 64; filter_ptr += 64; bias_ptr += 64; + output_multiplier_ptr += 64; + output_shift_ptr += 64; } // Preload. @@ -2697,11 +2727,11 @@ struct DepthwiseConvMultiRowPerChannel { const int32 output_leftover_width = end_x - out_x; if (output_leftover_width > 0) { - ConvKernel::Run(output_multiplier_ptr, output_shift_ptr, input_data, - filter_data, bias_data, output_data, 0, - params.output_depth, params.input_depth, - params.input_row_size, shuffle_params.output_height, - output_leftover_width, params); + ConvKernel::Run(output_multiplier, output_shift, input_data, filter_data, + bias_data, output_data, 0, params.output_depth, + params.input_depth, params.input_row_size, + shuffle_params.output_height, output_leftover_width, + params); } } };