[LLVMdev] Seperating LLVM representation for processing with different backends
evan.cheng at apple.com
Mon Jan 14 11:14:24 PST 2008
On Jan 9, 2008, at 2:12 AM, aditya vishnubhotla wrote:
> I am writing a pass which identifies the parts(basic
> blocks/functions) of
> the input algorithm with more of data flow or control
> flow. These parts are to
> be separated executed by different backends.
> My idea is to insert replacement basic blocks with
> intrinsic instructions
> within the basic block. These instructions should
> satisfy the data
> dependencies within the LLVM data structure and should
> do the parameter
> marshalling for switching to the other architecture to
> and fro.
> Dependencies of the different passes:
> analysis part
> / \
> ppc custom backend
> Switching between the ppc and custom backend would be
> by using different
> filter passes in two compiler runs.
> I have a couple of questions regarding the problem
> outlined above:
> Is the approach using intrinsic instructions
Probably. If what you are trying to represent is truly target
specific then using intrinsics is good solution.
> What has to be done to the existing backends to make
> these new instrinsic
> instructions known?
You need to add Intrinsics??.td file to include/llvm as well as
instruction selection patterns / code to translate them to target
> Is there an way to eliminate two compiler runs, one
> for each backend?
Right now, the only way I see that can be possible is if you have a
single target capable of handling codegen for both parts. So for
example, if you can make the target into a variant of ppc, then you
can potentially dynamically switch between the two for different
BB's. But I would suggest you put the idea away for now. It would
seem to me the problem you described present plenty of challenges for
> Best regards
> Looking for last minute shopping deals?
> Find them fast with Yahoo! Search. http://tools.search.yahoo.com/
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev