1

我正在尝试使用 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 } } }??

谢谢!

4

1 回答 1

1

类型的精确布局由 C++ ABI 指定。所以,你可能(或可能不)幸运地用手定义东西......

使用 LLVM 的 cpp 后端生成将生成给定 IR 的 C++ API 代码。这是最简单的方法。

于 2013-09-30T19:36:29.477 回答