---
title: 选项 -mcmlt-arith
description: "对部分四则运算生成cmlt指令，以减少指令数。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/hgcc/hist-hgcc/kunpenghgcc_06_0041.html
sourcePath: /source/zh/kunpengdevkithistory/hgcc/hist-hgcc/kunpenghgcc_06_0041.html
indexId: 9813a13cbc9b507cd65d90f2a65a4ddc0a827c0d1f5996c4a4a6270c1816f42f71
---
# 选项 -mcmlt-arith

#### 说明

对部分四则运算生成cmlt指令，以减少指令数。


#### 使用方法

使用选项-mcmlt-arith使能优化。

注：此优化需要-O3以上优化等级使用。


#### 结果

测试用例如下：

```
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;
    }
}
```

测试命令：

```
gcc -O3 -mcmlt-arith -S test.c -o test.s
```

图1 选项未打开

图2 选项已经打开

启用该选项后，生成的汇编代码会使用cmlt指令对一组计算指令进行简化，相比未启用时指令更少。
