标签: clang llvm bit-packing
我正在构建LLVM传递,它需要知道用于LLVM IR中的多个位字段的类型。我做了一些实验,并得到以下结果:
这是预期的结果,因为llvm IR可以使用i8类型来打包两个字段。但是,以下实验使我感到困惑。
这些字段不应该放在{i8,i8}中而不是一个i16中吗?
更有趣的内核代码实验:
如上所示,所有位字段都适合一个i32。
那么,clang是否有任何规则来决定应使用哪种类型来适合多个位字段?
非常感谢。