LLVM IR 是否支持(byte = 16bit)?
Does LLVM IR support (byte = 16bit)?
想知道 LLVM 是否支持大小为 16 位的字节等(不仅仅是 8 位)?
是否有可能制作一种针对 LLVM 并支持自定义 16 位 FPGA-CPU 概念的语言?
据我了解,Clang 不支持此功能,而 GCC 可以,但 LLVM IR 支持吗?
在LLVM中没有bytes、int等具体概念,它只支持任意位宽(iN)的整数。
1 <= N <= (2^23)-1
https://llvm.org/docs/LangRef.html#integer-type
假设,在某种语言中,一个字节 = 16 位,语言前端应确保它生成 i16
而不是 i8
。 LLVM IR 旨在适应多种不同的语言,这就是这种任意整数位宽的原因。
Is it possible to make a language that targets LLVM and supports this concept for custom 16bit FPGA-CPUs ?
是的,我将“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
想知道 LLVM 是否支持大小为 16 位的字节等(不仅仅是 8 位)? 是否有可能制作一种针对 LLVM 并支持自定义 16 位 FPGA-CPU 概念的语言?
据我了解,Clang 不支持此功能,而 GCC 可以,但 LLVM IR 支持吗?
在LLVM中没有bytes、int等具体概念,它只支持任意位宽(iN)的整数。
1 <= N <= (2^23)-1
https://llvm.org/docs/LangRef.html#integer-type
假设,在某种语言中,一个字节 = 16 位,语言前端应确保它生成 i16
而不是 i8
。 LLVM IR 旨在适应多种不同的语言,这就是这种任意整数位宽的原因。
Is it possible to make a language that targets LLVM and supports this concept for custom 16bit FPGA-CPUs ?
是的,我将“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