处理器特性选择选项 - 2023.2 简体中文

Vitis 统一软件平台文档 嵌入式软件开发 (UG1400)

Document ID
UG1400
Release Date
2023-12-13
Version
2023.2 简体中文
-mcpu=vX.YY.Z
该选项指令编译器生成适合 MicroBlaze 硬件版本 v.X.YY.Z 的代码。要为给定处理器获取最优化的正确代码,请将此开关搭配处理器的硬件版本一起使用。

-mcpu 开关行为因版本而异,如下所述:

低于 v3.00.a 的版本
使用 3 阶处理器流水线模式。不禁止例外,导致指令被移入延迟时隙。
v3.00.a 和 v4.00.a
使用 3 阶处理器流水线模型。禁止例外,导致指令被移入延迟时隙。
v5.00.a 及更高版本
使用 5 阶处理器流水线模型。不禁止例外,导致指令被移入延迟时隙。
-mlittle-endian/-mbig-endian
使用这些选项可以选择要为其编译代码的目标机器的字节序。生成的二进制对象文件的字节序同样根据此开关进行相应设置。GCC 驱动程序将开关传递给子工具(as、cc1、cc1plus、ld)以在子工具中设置对应的字节序。

默认值为 -mbig-endian

您不能将混合字节序的对象文件链接在一起。

-mno-xl-soft-mul
该选项允许将硬件乘法指令用于 32 位乘法。MicroBlaze 处理器具有开启或关闭硬件乘法器资源使用的选项。在 MicroBlaze 处理器上弃用硬件乘法器选项时,应使用该选项。使用硬件乘法器可以改善应用性能。使用此开关时,编译器会自动定义 C 语言预处理器定义 HAVE_HW_MUL。这样即可允许您根据该特性指定为可用或不可用,按硬件需求编写 C 语言代码或汇编代码。
-mxl-multiply-high
MicroBlaze 处理器具有启用指令以计算 32x32 位乘法的高 32 位的选项。该选项会告知编译器使用这些高位乘法指令。使用此开关时,编译器会自动定义 C 语言预处理器定义 HAVE_HW_MUL_HIGH。这样即可允许您根据该特性可用或不可用,按硬件需求编写 C 语言代码或汇编代码。
-mno-xl-multiply-high
不使用高位乘法指令。该选项为默认选项。
-mxl-soft-mul
该选项会告知编译器,在 MicroBlaze 处理器上不存在硬件乘法器单元,因此每个 32 位乘法运算都将替换为调用软件仿真 routine__mulsi3。该选项为默认选项。
-mno-xl-soft-div
您可以在 MicroBlaze 中例化硬件除法单元。当存在除法单元时,该选项会告知编译器,在编译的程序中可以使用硬件除法指令。

如果程序包含大量除法运算,该选项可以改善程序性能。使用此开关时,编译器会自动定义 C 语言预处理器定义 HAVE_HW_DIV。这样即可允许您根据该特性指定为可用或不可用,按硬件需求编写 C 语言代码或汇编代码。

-mxl-soft-div
该选项告知编译器,在目标 MicroBlaze 硬件上不存在硬件除法单元。

该选项为默认选项。编译器会将所有 32 位除法替换为调用对应的软件仿真例程(__divsi3__udivsi3)。

-mxl-barrel-shift
MicroBlaze 处理器可配置为随桶式移位器一起构建。要使用处理器的桶式移位器功能,请使用 -mxl-barrel-shift 选项。

默认选项假定不存在任何桶式移位器,并且编译器使用加法和乘法运算来执行操作数移位。启用桶式移位器可以显著加速应用,使用浮点库时尤其如此。使用此开关时,编译器会自动定义 C 语言预处理器定义 HAVE_HW_BSHIFT。这样即可允许您根据该特性是否指定为可用,按硬件需求编写 C 语言代码或汇编代码。

-mno-xl-barrel-shift
该选项告知编译器不使用硬件桶式移位器指令。该选项为默认选项。
-mxl-pattern-compare
该选项用于激活在编译器内使用模式比较指令的功能。

使用模式比较指令可以在程序内加速布尔值运算。模式比较操作还允许在字符串处理例程(例如,strcpystrlenstrcmp)上对字长数据进行操作,而不是对字节长度数据进行操作。在极为依赖字符串处理例程的程序上,将能够显著提升速度。使用此开关时,编译器会自动定义 C 语言预处理器定义 HAVE_HW_PCMP。这样即可允许您根据该特性指定为可用或不可用,按硬件需求编写 C 语言代码或汇编代码。

-mno-xl-pattern-compare
该选项会告知编译器不使用模式比较指令。这是默认方式。
-mhard-float
该选项会在编译器内开启单精度浮点指令(faddfrsubfmulfdiv)的使用。

它还使用 fcmp.p 指令,其中 p 是谓词条件,例如,legeltgteqne。当在硬件中启用 FPU 时,这些指令由 MicroBlaze 在本地进行解码和执行。使用此开关时,编译器会自动定义 C 语言预处理器定义 HAVE_HW_FPU。这样即可允许您根据该特性指定为可用或不可用,按硬件需求编写 C 语言代码或汇编代码。

-msoft-float
该选项会告知编译器,使用软件仿真来执行浮点算术。该选项为默认选项。
-mxl-float-convert
该选项可以在编译器中开启单精度浮点转换指令(fint 和 flt)的使用。当在硬件中启用 FPU 并启用这些可选指令时,这些指令由 MicroBlaze 在本地进行解码和执行。
-mxl-float-sqrt
该选项会在编译器内开启单精度浮点平方根指令 (fsqrt) 的使用。当在硬件中启用 FPU 并启用这些可选指令时,这些指令由 MicroBlaze 在本地进行解码和执行。