aboutsummaryrefslogtreecommitdiff
path: root/pseudocode/operators/SUB.tosac
diff options
context:
space:
mode:
authorEric Kunze <eric.kunze@arm.com>2024-01-12 17:18:42 -0800
committerEric Kunze <eric.kunze@arm.com>2024-01-31 06:00:03 +0000
commit526f6c7b5d20e967109ca92c8fc54c26c0438135 (patch)
tree7186a2dec336db8389cdf0cf8bacd60f9da4cf64 /pseudocode/operators/SUB.tosac
parent7e5d187c612fcc715ea3f7f0c900eb13af75a660 (diff)
downloadspecification-526f6c7b5d20e967109ca92c8fc54c26c0438135.tar.gz
Add section of shape operatorsv0.90.0
Rework of the shape operations. Shape operations are now done in shape specific operators rather than being based on type. shape_t is reworked to a list of size_t values. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I2fca0728f9caa6a6fc34a8ce9e389bb581eea959
Diffstat (limited to 'pseudocode/operators/SUB.tosac')
-rw-r--r--pseudocode/operators/SUB.tosac24
1 files changed, 8 insertions, 16 deletions
diff --git a/pseudocode/operators/SUB.tosac b/pseudocode/operators/SUB.tosac
index ac88b76..1ecc6e0 100644
--- a/pseudocode/operators/SUB.tosac
+++ b/pseudocode/operators/SUB.tosac
@@ -7,20 +7,12 @@
// copies and copies may only be made to the extent permitted
// by a licensing agreement from ARM Limited.
-if (in_out_t == shape_t) {
- ERROR_IF(rank(shape) != 0 || rank(shape1) != 0 || rank(shape2) != 0);
- shape_t value1 = tensor_read<shape_t>(input1, [], []);
- shape_t value2 = tensor_read<shape_t>(input2, [], []);
- shape_t result = apply_sub<shape_t>(value1, value2);
- tensor_write<shape_t>(output, [], [], result);
-} else {
- ERROR_IF(shape != broadcast_shape(shape1, shape2));
- for_each(index in shape) {
- dim_t index1 = apply_broadcast(shape, shape1, index);
- dim_t index2 = apply_broadcast(shape, shape2, index);
- in_out_t value1 = tensor_read<in_out_t>(input1, shape1, index1);
- in_out_t value2 = tensor_read<in_out_t>(input2, shape2, index2);
- in_out_t result = apply_sub_s<in_out_t>(value1, value2);
- tensor_write<in_out_t>(output, shape, index, result);
- }
+ERROR_IF(shape != broadcast_shape(shape1, shape2));
+for_each(index in shape) {
+ shape_t index1 = apply_broadcast(shape, shape1, index);
+ shape_t index2 = apply_broadcast(shape, shape2, index);
+ in_out_t value1 = tensor_read<in_out_t>(input1, shape1, index1);
+ in_out_t value2 = tensor_read<in_out_t>(input2, shape2, index2);
+ in_out_t result = apply_sub_s<in_out_t>(value1, value2);
+ tensor_write<in_out_t>(output, shape, index, result);
}