Performance ARM Cortex M4调优重新排列无符号int变量
我刚刚开始学习ARM cortex-M4,它具有DSP指令等高级功能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我的重新排列(
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