如何从 LLVM CL 获取供应商/CPU/FPU/ABI/等的列表及其含义?

如何从 LLVM CL 获取供应商/CPU/FPU/ABI/等的列表及其含义?

我得到了所有的“架构”使用

llc --version

它列出了架构。

然后,对于每个架构,您可以获得 CPU 和“功能”(不确定“功能”是什么),如下所示:

llc -march=arm -mattr=help # for arm architecture

https://clang.llvm.org/docs/CrossCompilation.html谈到供应商、FPU 和其他内容时,它说道:

目标三倍

基本选项是定义目标架构。为此,请使用 -target 。如果不指定目标,则 CPU 名称将不匹配(因为 Clang 假定主机三元组),并且编译将继续进行,为主机平台创建代码,该代码将在稍后汇编或链接时中断。

该三元组的一般格式为<arch><sub>-<vendor>-<sys>-<env>,其中:

  • arch = x86_64、i386、arm、thumb、mips 等。
  • sub = 例如在 ARM 上:v5、v6m、v7a、v7m 等。
  • 供应商 = pc、apple、nvidia、ibm 等。
  • sys = none、linux、win32、darwin、cuda 等。
  • env = eabi、gnu、android、macho、elf 等。

它还谈到了这一点:

CPU、FPU、ABI

指定目标后,就该选择要编译到的硬件了。对于每个架构,都会选择一组默认的 CPU/FPU/ABI,因此您几乎总是需要通过标志来更改它。

典型的标志包括:

  • -mcpu=<cpu-name>,例如 x86-64、swift、cortex-a15
  • -mfpu=<fpu-name>,如 SSE3、NEON,控制可用的 FP 单元
  • -mfloat-abi=<fabi>,如软、硬,控制使用哪些寄存器进行浮点运算

那么这 4 个<sub>-<vendor>-<sys>-<env>FPU 和 2 个 FPU 以及 ABI 是什么?我如何通过某些 CLI 调用列出所有这些?它们通常是什么意思?

相关内容