中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

选项 -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指令对一组计算指令做了简化。