Page 1 of 2

Does the ESP32 have SIMD-like instructions?

Posted: Thu Sep 02, 2021 5:21 pm
by StridingDragon
I've been looking through datasheets and instruction references for the Xtensa processor that is in the ESP32 but because of Xtensa's extensible nature, I can't seem to find reliable information, so here is my question…

Does the ESP32-WROVER B have any SIMD-like instruction capabilities that allow you to process data in parallel? I have a lot of data processing to do that could benefit greatly from any kind of parallelization so I'd like to utilize whatever the ESP32 has to offer in that respect.

Re: Does the ESP32 have SIMD-like instructions?

Posted: Fri Sep 03, 2021 2:26 am
by ESP_Sprite
The ESP32 has a few of them, mostly used for 16-bit multiply-accumulate operations. The ESP32S3 has more complicated instructions. Probably the best thing would be to look at ESP-DSP, that uses some of the acceleration options (and may actually be a good starting point for your own code as well).

Re: Does the ESP32 have SIMD-like instructions?

Posted: Sat Sep 04, 2021 7:03 pm
by StridingDragon
Thanks for the info, but I am not sure. Does any of this apply to the WROVER B?

Re: Does the ESP32 have SIMD-like instructions?

Posted: Sat Sep 04, 2021 7:45 pm
by WiFive
Anything that applies to esp32 chip applies to ESP32-WROVER B module

Re: Does the ESP32 have SIMD-like instructions?

Posted: Wed Sep 29, 2021 6:55 pm
by StridingDragon
I finally had the chance to take a closer look at the ESP-DSP component, but all I see there are assembler implementations of functions typically used for DSPs. So, it's a DSP library but not what I was looking for.

My original question was trying to find out of the ESP32 and the Xtensa chip used in it do have any kind of accelerated instruction sets that would allow me to run operations the way SIMD instructions do in a non-scalar way. I do not see any of that being done in the ESP-DSP component—unless I am overlooking it.

So, my assumption is, there is no such thing?

Re: Does the ESP32 have SIMD-like instructions?

Posted: Thu Sep 30, 2021 8:21 am
by jdoubleu
As far as I know there aren't any, besides these already mentioned above (e.g. MUL16).

If you would like to find out what Xtensa features are enabled, the overlaying headers for binutils could be helpful: https://github.com/espressif/xtensa-ove ... a-config.h

Re: Does the ESP32 have SIMD-like instructions?

Posted: Thu Sep 30, 2021 11:44 pm
by StridingDragon
Thanks for the link. That's really interesting to see it like this.

Re: Does the ESP32 have SIMD-like instructions?

Posted: Wed Dec 01, 2021 4:21 am
by psommerfeld
I thought the ESP32-S3 how has special SIMD instructions to support AIoT, but I haven't been able to find details on them yet.

Re: Does the ESP32 have SIMD-like instructions?

Posted: Fri Dec 03, 2021 2:23 am
by ESP_Sprite
Those instructions will end up in the Technical Reference Manual eventually, but unfortunately at this moment that chapter is not done yet.

Re: Does the ESP32 have SIMD-like instructions?

Posted: Tue Aug 23, 2022 9:36 pm
by ParkSun
Any updates on this or if the information is in the reference manual?