aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-03-31Update makefile to fail build on spelling failureEric Kunze
Will also fail if aspell is not installed Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I4cab802b64a938797d84604af80cb37caa04f401
2022-03-16Update TRANSPOSE argument descriptionEric Kunze
Define the perms argument more clearly Change-Id: I9ea695ef38c2a8160ba0fc2020fa28150942e39e Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2022-03-15Update floating point edge casesEric Kunze
Cover cases where NaN, +/- 0, +/- infinity are involved Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I1a5a23c7b856ddb997f7cdc00282420294ef3e6d
2022-02-03TABLE: Clarify the interpolation slope rangeDominic Symes
The interpolation slope must not exceed int16_t range. Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: Ic9037dcc11c293c78b9398952118a129e3be66f5
2022-01-24apply_scale_32: adjust range checkingDominic Symes
Range checking adjusted to test that optimized implementations with prior left shift do not overflow. Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I45a851a1dfc1f1a767f912bb1429d047ed0fb110
2022-01-10Simplify shape checking for TRANSPOSEEric Kunze
Have a simple outer check for proper size rather than checking during the inner loop. Change-Id: I20312c5f6b4aacbb630a2df0f901d8586caa04c0 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2022-01-07Fix range of C iteration in DEPTHWISE_CONV2DEric Kunze
The for_each already runs over 0 <= m < M, we don't need c to also iterate over M. Change-Id: Ia72b4be7e68e2f210e9bfc75e3958089d9930c47 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2022-01-07Ensure ranks match in apply_broadcastEric Kunze
ERROR_IF to make sure rank(index) == rank(out_shape) Also try to better explain what the expected value for index is. Change-Id: I0731324d33335cb1ffc0a6fbd153fbc8521ce2e9 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2022-01-07Add rudimentary spell check for specificationEric Kunze
We can't easily spell check the entire specification, the pseudocode and operator tables make it unworkable. This adds a simple python script that tries to extract just the description of the operators for checking. It also does a check over the entire license. A custom dictionary is used to contain specification custom words. Change-Id: I74558c03af1506e2970f20b3246d920c2753ca44 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2022-01-07Fix typo in TOSA licenseEric Kunze
PETMITTED -> PERMITTED NOTWITHSTANING -> NOTWITHSTANDING Change-Id: Ic1727fc0b87f74fa34af8582de11dabda3364b25 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-11-30RESIZE: Clarify output dimensionsDominic Symes
Clarify how RESIZE output dimensions are related to the input dimensions and add the border attributes to give a relation equation Change-Id: I081464de140634d1a99fd8538112c65af949385e Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2021-11-24MUL: Correct code for the case of value2<0Dominic Symes
The previous call to apply_scale() was not valid for value2<0. Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I3fbf38eaad964efdb0c4920da1a61aee67c9bba9
2021-11-12Use in_out_t when a type is used for input and outputEric Kunze
Also change acc_t to out_t when the value is being used as an output. This should make the argument tables easier to follow. Change-Id: I2a57f3c4eaf937f29da785ff5c11576663a39494
2021-11-12Insert missing close bracket in ADD pseudocodeEric Kunze
Change-Id: Ifec04d98b81b351efe110d5a07259f69df4f3014
2021-11-12Fix spelling mistake in SELECTEric Kunze
shpae3->shape3 Change-Id: I981edd50409cb5bac0fd8793a1bf578f20cc0574
2021-11-03Update specification revision to 0.24.0 draftEric Kunze
Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Ib5da6027faf70d103bf0118d335b510d54a0b563
2021-10-29Remove draft tag from 0.23 specificationv0.23.0v0.23Eric Kunze
Change-Id: Id45f95bb06f314dff893a790cac4377d95f7c565 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-10-28Readability fixes for pseudocodeEric Kunze
Avoid use of acc for variables when they are not convolution accumulators. Use argument types appropriately. Add missing pseudocode for some MI operators Change-Id: I9113f9228dbcafb85206bcc39310e9599cb12c08
2021-10-28Clarify CLAMP pseudocodeEric Kunze
CLAMP does not do any zero point modification of its clamp limits. Callers to CLAMP should provide values with the zero-point accounted for in the arguments. Change-Id: I27ee468ecd5ab53e33dcbac9c91b705b39e49f96
2021-10-28Remove zp subtraction from tensor_read pseudocodeEric Kunze
Operators which use the zero-point functionalty for 8-bit integer processing are updated to do the zero-point subtract in their pseudocode. Note that the PAD operator no longer takes a zero point argument, and instead requires callers to account for the zero point in the pad_const argument. Change-Id: I3bca1cae85aa2093000c420f0433633c347a29de
2021-10-20Remove rank upper limit on TRANSPOSE operatorEric Kunze
Change-Id: I8935624362b3b8d1b125ccb801d039b97e88a2ef
2021-10-18Fix typo int_t to in_tEric Kunze
Change-Id: I495ed97896d8f560b9eb9ed7b05dd2ca1c564c73 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-10-15Add ERROR_IF checks to CONCAT operatorMatthew Haddon
* Add ERROR_IF checks to ensure that inputs have the correct rank, dimension lengths, and a suitable axis value * Make REVERSE REQUIRES check into an ERROR_IF * Some minor typo/formatting fixes Change-Id: Ie133788ca7e1deab194ba5ef97e47c39cdd170b6 Signed-off-by: Matthew Haddon <matthew.haddon@arm.com>
2021-10-12refactor SLICE error_if checksMatthew Haddon
* refactored error_if checks to avoid logic overlap * Added check to ensure that size dimensions match output dimension * Defined the rank() function in pseudocode helpers Change-Id: I56bf06252d9149d449c984126e8f2025a07d6034 Signed-off-by: Matthew Haddon <matthew.haddon@arm.com>
2021-10-08Force output shape to be correct for pooling operationsMatthew Haddon
The avg_pool2d and max_pool2d operators trigger an error_if statement if the output shape provided does not match the output shape generated by the operation given the input arguments. * Add pseudocode for floor operation * Fixed type in RESCALE op Signed-off-by: Matthew Haddon <matthew.haddon@arm.com> Change-Id: I087faa331c30becc05719cd1261f436019dcdeb5
2021-10-04Move quantization parameters into argument tablesEric Kunze
The TOSA specification doesn't have quantized types. Without those types, it is cleaner to move effects of quantization such as the zero points into the standard list of arguments, rather than existing as a separate table. Change-Id: I18ea2959e9d3e4a3e9a0ead7a8ca319bb4426a47
2021-09-29Allow PAD operator to pad with non-zeroEric Kunze
PAD now takes an additional attribute, with the padding value. Will generally be zero, but other values are allowed. tensor_read now requires the coordinates to be within the given tensor, with unpredictable behavior occurring if an access outside of the tensor occurs. Callers of tensor_read are expected to check the coordinates and take the appropriate action. The primary impact of this is to move the responsibility for padding to each operator. In practice, this is expected to not be a functional change, but a cleanup to make the behavior more clear. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I4f21ca9a13d82d422bbd66c400f23aa9a0bd2aa0
2021-09-27Change TABLE operator table to be an attribute for BI/MIEric Kunze
Use cases for BI/MI profiles show that the table argument for the TABLE operator will be known at compile time. Make it an attribute in that case. If a dynamic table is needed, the GATHER op is available. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: Icb54eaa443ed7896d5010c7a30af88b02c8a83ad
2021-09-24Don't allow pooling ops with excessive paddingEric Kunze
Padding larger than the kernel size leads to the odd effect where no values from the input tensor are used. This leads to a divide by 0 in AVG_POOL2D, as it only divides by the number of valid input values used, not padding. Change MAX_POOL2D to have the same limitation for consistency. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I9cd0c0619f88f570d30c83053280460ae3d1cbfb
2021-09-24CAST: Correct profile for floating point castsDominic Symes
Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I91098ef7e18d18263f7b909f75b9df4460417725
2021-09-16Clarify range limitations for tensorsEric Kunze
Catch zero and negative sized tensors. Clarify configuration of bool_t in the reference model. int4_t limitations on -8 to stay symmetric around 0. Pad values must be >= 0. Stride,dilation values must be >= 1. Change-Id: Idb6ef740f855912a8340475ba319816f90c9b051 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-09-03MAX_POOL2D: Fix padding behaviourDominic Symes
Change-Id: Idcf4b99161ce05e56391fbc9107a19617cb1ad21 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2021-08-23Fix pooling argument tablesEric Kunze
Make the input tensor shape dimensions correct for the pseudocode. Clarify the count used for average pooling only includes valid elements. Remove stale reference to PLACEHOLDER nodes. Change-Id: Ia0b9f0aa404008c6a36671da12188cb0999712d4 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-07-13Add definition of TOSA complianceDominic Symes
Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I2e25d0467843adb078d5ab9fd681af40b2ffa52e
2021-06-24Replace assert with REQUIRE()Eric Kunze
REQUIRE is a direct replacement for the asserts, and uses the unpredictable() function in pseudocode to describe the required conditions for operators Change-Id: I35dc81e083d8e41f16728d992bdb8b06b0271226 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-06-17RESIZE: Clarify dimension limitsDominic Symes
X and Y dimensions of image limited to 16-bit for integer data types so that the position * stride calculations do not overflow an int32_t (both position and stride are then 16-bit) Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I24d15b1f2991a18da15493bef478d5ee9c65dba3
2021-05-26Rename and clarify the divide operator.Dominic Symes
Name changed from DIV to INTDIV. Usage clarified. Change-Id: I493b8ace7a63e4c80caac1674c767c1ad468dd83 Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2021-05-21Removed IDENTITYN and PLACEHOLDERSuraj Sudhir
Signed-off-by: Suraj Sudhir <suraj.sudhir@arm.com> Change-Id: I33bb90ccc778a5cd5fa3ece28880cf484d9f8e3c
2021-05-20Fix typo in RESIZE argumentsDominic Symes
The missing column prevented later rows of arguments being rendered correctly in html Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: Ifa4edd38dc49f2ce6a182ec8cb44f8773a5bfa05
2021-04-14RESIZE: Clarify the valid range of stride values.Dominic Symes
Clarify stride ranges so that the range of valid scales is independent of the shift value. Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I56b4dd3b39df19da35fb2c6fe3035e2de42f4860
2021-04-01Remove RELUN operationDominic Symes
The operation can be implemented directly with CLAMP for int8, int16 or MIN,MAX for int32. Change-Id: I872ec5ee4ee30bb69353f39be12a65307c9b8d0a Signed-off-by: Dominic Symes <dominic.symes@arm.com>
2021-03-23Update revision to 0.23.0 draftEric Kunze
Change-Id: I5387f0b17cbe45c7871dbe3e3e6036fded6cbc8c Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-03-23Remove draft tag from 0.22 specificationv0.22.0Eric Kunze
Update copyright to include 2021. Change-Id: Iced31530f7f86faa2efa95441bcbacf1c37f126f Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-03-18Add integer DIV operatorEric Kunze
Integer divide is not commonly used, but would have been difficult to implement using the existing operators. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I8fb3919cd7a0f1a1fa95074d921d200d23e2f249
2021-03-16Add 8-bit support to TABLEEric Kunze
It is challenging to work back from the RESCALE->TABLE->RESCALE for a simple 8-bit lookup. This adds support to TOSA for a simple direct 256 entry 8-bit lookup table for the TABLE operator. The 16-bit interpolated table is still required for a conformant implementation. Change-Id: I0ef218444f0b57b880aa8d1c7e96efedae72eb53 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-03-16Note limits on axis parameterEric Kunze
This also adds a restriction on CONCAT to have all inputs be the same rank. Update the ARGMAX pseudocode to handle corner cases properly and use axis/rank consistent with other operators. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I941ac172ee79424ac04d562cedebb75da76659a5
2021-03-11Make pseudocode block tags consistentEric Kunze
They are all now [source,c++] and use ---- as the delimiter. Also made the pseudocode indentation consistent (4 spaces) in the introduction sections. Signed-off-by: Eric Kunze <eric.kunze@arm.com> Change-Id: I1287a60cfeae8b7e3c63b9fc8885b1ebf3d3386d
2021-03-11Adjust pseudocode types to account for zero pointEric Kunze
When reading tensor values with zero point, the returned value has one more bit than the original to account for zero point. Update cases of apply_clip to properly represent the types involved. Change-Id: I60c17b1b244c34b4f04f042807936ae0f282ce93
2021-03-08Consistency cleanupEric Kunze
Attempt to get consistent across the pseudocode. Change the data types to all be intN_t instead of some cases of intN. Use float_t as the general floating point data type. Be consistent on use of the term "floating-point" Move general pseudocode helpers to their own section. Change-Id: Ie77666cd3ee438c71f39c62b9c424fe687b0bb51 Signed-off-by: Eric Kunze <eric.kunze@arm.com>
2021-03-03Change CONCAT to allow a list of input tensorsEric Kunze
Originally only a pair of input tensors were allowed. This aligns with what the frameworks do, and simplifies the translation of frameworks into TOSA and allows compilers to view the output as a whole. Change-Id: Id4461abdf0cc763e84e086142222e87d28cd8afc Signed-off-by: Eric Kunze <eric.kunze@arm.com>