[LLVMdev] tblgen for generation of Haskell bindings to LLVM intrinsics
Henning Thielemann
llvm at henning-thielemann.de
Wed May 23 15:38:13 PDT 2012
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++. This would not be a big
problem, since I could let it write C++ code that in turn writes Haskell code.
Unfortunately the section
"http://llvm.org/docs/TableGenFundamentals.html#backends"
is not yet written.
Is it possible to use the llvm-tblgen binary without modification or do I have
to extend llvm-tblgen or do I have to write my own C++ code that uses some of
the functions from the tblgen library? Are there any (simple) examples of
custom tblgen backends?
More information about the llvm-dev
mailing list