LLVM IR是否支持(字节= 16位)?

时间:2019-03-05 20:52:10

标签: llvm llvm-ir

是否想知道LLVM是否支持16位等字节(不只是8位)? 是否有可能将语言针对LLVM并支持自定义16位FPGA-CPU的这一概念?

据我了解,Clang不支持Clang,但是GCC可以支持LLVM IR吗?

1 个答案:

答案 0 :(得分:1)

在LLVM中,没有字节,整数等特定概念。它支持的只是具有任意位宽(iN)的整数。

1 <= N <= (2^23)-1

https://llvm.org/docs/LangRef.html#integer-type

假设在某种语言中,字节= 16位,语言前端应确保它生成i16而不是i8。 LLVM IR旨在适应多种不同的语言,这就是这种任意整数位宽度的原因。

  

是否有可能针对LLVM设计一种语言,并为定制的16位FPGA-CPU支持该概念?

是的,我将术语“ 16位FPGA-CPU”理解为16位软处理器。 LLVM本身支持具有各种位宽的处理器。据我了解,它是否为软处理器也没关系。

在顶部的LLVM IR中,我们找到了称为数据布局的内容。下面的一个是X86_64数据布局。 n8:16:32:64表示处理器具有对64位,32位,16位和8位处理的本机支持,这意味着它是具有向后兼容性的64位处理器。

target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

有关该字段其余部分的信息可在此处找到。 https://llvm.org/docs/LangRef.html#langref-datalayout