Seperating LLVM representation for processing with different backends

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Seperating LLVM representation for processing with different backends

aditya vishnubhotla

Hi,

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
          |
       filter
      /       \
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
worthwile?
What has to be done to the existing backends to make
these new instrinsic
instructions known?
Is there an way to eliminate two compiler runs, one
for each backend?

Best regards
Aditya


      ____________________________________________________________________________________
Looking for last minute shopping deals?  
Find them fast with Yahoo! Search.  http://tools.search.yahoo.com/newsearch/category.php?category=shopping
_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Reply | Threaded
Open this post in threaded view
|

Re: Seperating LLVM representation for processing with different backends

Evan Cheng-2

On Jan 9, 2008, at 2:12 AM, aditya vishnubhotla wrote:

>
> Hi,
>
> 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
>           |
>        filter
>       /       \
> ppc          custom backend

Ok.

>
> 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
> worthwile?

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  
specific instructions.

> 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  
now. :-)

Evan

>
> Best regards
> Aditya
>
>
>        
> ______________________________________________________________________
> ______________
> Looking for last minute shopping deals?
> Find them fast with Yahoo! Search.  http://tools.search.yahoo.com/ 
> newsearch/category.php?category=shopping
> _______________________________________________
> LLVM Developers mailing list
> [hidden email]         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

_______________________________________________
LLVM Developers mailing list
[hidden email]         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev