[LLVMdev] tblgen for generation of Haskell bindings to LLVM intrinsics
Sebastian Redl
sebastian.redl at getdesigned.at
Thu May 24 01:37:40 PDT 2012
On 24.05.2012 00:38, Henning Thielemann wrote:
> I want to generate Haskell bindings to LLVM intrinsics. In a first attempt I
> wrote a little parser that reads IntrinsicsX86.td and outputs a Haskell module.
>
> E.g. the definition
>
> def int_x86_avx_max_ps_256 : GCCBuiltin<"__builtin_ia32_maxps256">,
> Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty,
> llvm_v8f32_ty], [IntrNoMem]>;
>
> is turned into
>
> maxpd256 :: Ext.T (V4Double -> V4Double -> LLVM.CodeGenFunction r V4Double)
> maxpd256 = Ext.intrinsic ExtX86.avx "max.pd.256"
>
>
> This works for the flat structure of IntrinsicsX86.td, but e.g.
> IntrinsicsPowerPC.td uses tablegen classes.
>
> Now I wonder whether it is better to use tablegen to generate the Haskell code.
> The tblgen man page says, that tablegen emits C++.
It emits whatever text a particular backend decides to spit out. You
would have to write your own backend anyway, so you can just make it
emit Haskell code. Writing a backend isn't hard - a rather simple one to
look at would be Clang's diagnostic generator (it's in the Clang tree).
Sebastian
More information about the llvm-dev
mailing list