Hello everyone,
I'm currently engaged in a project where I'm mapping a texture onto a 3D sphere, and I plan to run this on the STM32U5A9J-DK board, which is equipped with a Cortex M33 processor and a Neochrome GPU. A significant roadblock has emerged: the GPU registers are not publicly available as indicated in this ST community forum thread, hence I cannot utilize the GPU as initially intended.
I've discovered that the Cortex M33 supports Arm Custom Instructions (ACI), which is detailed here: Arm Custom Instructions. This seems like a promising avenue, but I'm struggling to find tutorials or comprehensive guides on programming these custom instructions.
To provide more context, the code for my project is already written in C. It primarily involves a 2D convolution algorithm, along with the use of trigonometric functions like `asin` and `atan2`. My goal is to optimize the 2D convolution functions using the ACI capability of the Cortex M33.
I'm seeking advice or resources from anyone who has experience with ACI on the Cortex M33. How do I begin programming these custom instructions, especially to optimize complex mathematical functions? Any tutorials, tips, or pointers would be immensely helpful.
Thank you in advance for any assistance you can offer!
Hello, the Arm Custom Instructions are an option for the silicon vendor to implement, If these are not present on your device, then they cannot be used.
I don't know the full detail of your project, but I wonder if the below library would be useful for you?
https://github.com/ARM-software/Arm-2D