我正在尝试使用llvm c ++ api为Eigen::Matrix <complex<double>,Dynamic, 1>
参数创建一个类型。
任何人都知道如何做到这一点?
我编写了简单的示例c ++代码并为其公开了llvm IR,并在开头找到了以下几行:
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { i32*, i64 }
%"class.Eigen::DenseBase" = type { i8 }
%"class.Eigen::DenseCoeffsBase.0" = type { i8 }
%"struct.Eigen::EigenBase" = type { i8 }
%"class.Eigen::MatrixBase" = type { i8 }
%"struct.Eigen::internal::special_scalar_op_base" = type { i8 }
所以我猜我需要的是type{ type{ type{ i32*, i64 } } }
??
谢谢!
答案 0 :(得分:1)
类型的精确布局由C ++ ABI指定。所以,你可能(或可能不是)幸运地用手来定义东西......
使用LLVM的cpp后端生成将生成给定IR的C ++ API代码。这是最简单的方法。