Performance ARM Cortex M4调优重新排列无符号int变量

Performance ARM Cortex M4调优重新排列无符号int变量,performance,arm,signal-processing,cortex-m,Performance,Arm,Signal Processing,Cortex M,我刚刚开始学习ARM cortex-M4,它具有DSP指令等高级功能 uint32_t my_rearrange(uint32_t value){ uint32_t value_high = (value & 0xffff0000)>>16; uint32_t value_low = (value & 0x0000ffff); return (value_low<<16)|value_high; } uint32\u t我的重新排列(

我刚刚开始学习ARM cortex-M4,它具有DSP指令等高级功能

uint32_t my_rearrange(uint32_t value){
   uint32_t value_high = (value & 0xffff0000)>>16;
   uint32_t value_low  = (value & 0x0000ffff);
   return (value_low<<16)|value_high;
}
uint32\u t我的重新排列(uint32\u t值){
uint32\u t值\u高=(值&0xffff0000)>>16;
uint32_t值_low=(值&0x0000ffff);

return(value_low您不需要为此使用任何dsp指令。您似乎只需要执行16位旋转。编译器应该识别这一点,并生成一个
ROR
。GCC 5.4.1,带有标志
-O3-std=c++11-march=armv7-m-mtune=cortex-m4-mthumb
,用于您的代码

如果它是内联的,那么唯一可以加速它的方法就是

my_rearrange(unsigned long):
    ror     r0, r0, #16
    bx      lr