30 Dec 2002 23:55:50 -0500

Related articles |
---|

Selective Computation... saru@jeyan.eclipse.co.uk (Saru) (2002-12-26) |

Re: Selective Computation... jeyan@jeyan.eclipse.co.uk (Saru) (2002-12-30) |

Re: Selective Computation... saru@jeyan.eclipse.co.uk (Saru) (2002-12-30) |

Re: Selective Computation... joachim_d@gmx.de (Joachim Durchholz) (2002-12-31) |

Re: Selective Computation... thp@cs.ucr.edu (2003-01-17) |

Re: Selective Computation... Patrick.Volteau@st.com (Patrick Volteau) (2003-01-20) |

Re: Selective Computation... strohm@airmail.net (John R. Strohm) (2003-01-21) |

Re: Selective Computation... andreas.gieriet@externsoft.ch (Andreas Gieriet) (2003-01-21) |

Re: Selective Computation... liekweg@freenet.de (Florian Liekweg) (2003-01-21) |

[1 later articles] |

From: | Saru <saru@jeyan.eclipse.co.uk> |

Newsgroups: | comp.compilers |

Date: | 30 Dec 2002 23:55:50 -0500 |

Organization: | Ye 'Ol Disorganized NNTPCache groupie |

References: | <UTC200212270952.gBR9qMI09875.pmontgom@smtp.cwi.nl> |

Keywords: | optimize |

Posted-Date: | 30 Dec 2002 23:55:50 EST |

Hi again,

As Peter Montgomery wrote, the following version runs slightly faster

than the original version.

((-k1) & (p + q)) + ((-k2) & (p + q')) + ((-k3) & (p' + q))

I am looking into the issue of using pointer to pickup the computation

of (p or p') + (q or q'). Also, as I responded to John, p, q, p' and

q' are array based computations and (unfortunately), they are not loop

invariants.

Thanks again.

Saru

Peter-Lawrence.Montgomery@cwi.nl wrote:

*> If the variables are integer, try replacing k1, k2, k3*

*>by their negatives (two's complement), the same width as X.*

*>The integer computation*

*>*

*> ((-k1) & (p + q)) + ((-k2) & (p + q')) + ((-k3) & (p' + q))*

*>*

*>should go fast if p, q, p', q' are simple array references*

*>(or, better, loop invariants which can be kept in registers).*

*>*

*> Can you use pointers dependent upon k1, k2, k3,*

*>to pick up*

*>*

*> (p or p') + (q or q')*

*>*

*>(this assumes k1 = k2 = k3 = 0 is impossible,*

*>or perhaps you multiply by k1+k2+k3 at the end.)*

Post a followup to this message

Return to the
comp.compilers page.

Search the
comp.compilers archives again.