teflon: Add support for tensor padding operations

Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32509>
This commit is contained in:
Tomeu Vizoso
2024-10-24 12:01:29 +02:00
committed by Marge Bot
parent b64fff7731
commit 02e92bbcea
2 changed files with 46 additions and 0 deletions
+25
View File
@@ -161,6 +161,16 @@ fill_operation(struct teflon_delegate *delegate, TfLiteContext *tf_context, TfLi
case kTfLiteBuiltinSplit:
operation->type = PIPE_ML_OPERATION_TYPE_SPLIT;
break;
case kTfLiteBuiltinPad: {
int32_t *paddings = tf_context->tensors[node->inputs->data[1]].data.data;
operation->type = PIPE_ML_OPERATION_TYPE_PAD;
operation->pad.before_x = paddings[2];
operation->pad.after_x = paddings[3];
operation->pad.before_y = paddings[4];
operation->pad.after_y = paddings[5];
break;
}
default:
unreachable("Unsupported ML operation type");
}
@@ -239,6 +249,9 @@ dump_graph(struct pipe_tensor *tensors, unsigned tensor_count, struct pipe_ml_op
case PIPE_ML_OPERATION_TYPE_SPLIT:
teflon_debug("%-6s ", "SPLIT");
break;
case PIPE_ML_OPERATION_TYPE_PAD:
teflon_debug("%-6s ", "PAD");
break;
}
for (unsigned j = 0; j < operations[i].input_count; j++) {
@@ -560,6 +573,18 @@ PrepareDelegate(TfLiteContext *context, TfLiteDelegate *delegate)
break;
}
case kTfLiteBuiltinPad: {
uint32_t *padding = context->tensors[node->inputs->data[1]].data.data;
supported = padding[0] == 0 &&
padding[1] == 0 &&
padding[2] == 1 &&
padding[3] == 1 &&
padding[4] == 1 &&
padding[5] == 1 &&
padding[6] == 0 &&
padding[7] == 0;
break;
}
}
if (supported)
+21
View File
@@ -1061,6 +1061,7 @@ enum pipe_ml_operation_type {
PIPE_ML_OPERATION_TYPE_POOLING,
PIPE_ML_OPERATION_TYPE_CONCATENATION,
PIPE_ML_OPERATION_TYPE_SPLIT,
PIPE_ML_OPERATION_TYPE_PAD,
};
/**
@@ -1152,6 +1153,26 @@ struct pipe_ml_operation
*/
bool padding_same;
} pooling;
struct {
/**
* Left padding.
*/
unsigned before_x;
/**
* Right padding.
*/
unsigned after_x;
/**
* Top padding.
*/
unsigned before_y;
/**
* Bottom padding.
*/
unsigned after_y;
} pad;
};
};