选项 -mcmlt-arith
说明
对部分四则运算生成cmlt指令,以减少指令数。
使用方法
使用选项-mcmlt-arith使能优化。
注:此优化需要-O3以上优化等级使用。
结果
测试用例如下:
1 2 3 4 5 6 7 8 9 10 11 12 | typedef unsigned short int uint16_t; typedef unsigned int uint32_t; void foo( uint32_t *a, uint32_t *b) { for (unsigned i = 0; i < 4; i++) { uint32_t s = ((a[i]>>((8 * sizeof(uint16_t))-1)) &(((uint32_t)1<<(8 * sizeof(uint16_t)))+1))*((uint16_t)-1); b[i] = (a[i]+s)^s; } } |
测试命令:
1 | gcc -O3 -mcmlt-arith -S test.c -o test.s |
图1 选项未打开


图2 选项已经打开


启用该选项后,生成的汇编代码会使用cmlt指令对一组计算指令进行简化,相比未启用时指令更少。
父主题: 静态编译优化