Hi. On Sat, 21 Jun 2008 11:55:49 +0100 "Keith Whitwell" <[EMAIL PROTECTED]> wrote:
> On Wed, Jun 18, 2008 at 3:53 PM, Aapo Tahkola <[EMAIL PROTECTED]> wrote: > > On Tue, 17 Jun 2008 11:56:00 +0200 > > Nicolai Hähnle <[EMAIL PROTECTED]> wrote: > > > >> Hey Aapo, > >> > >> Am Dienstag 17 Juni 2008 04:07:01 schrieb Aapo Tahkola: > >> > On Mon, 16 Jun 2008 12:56:39 +0200 > >> > > Nicolai Hähnle <[EMAIL PROTECTED]> wrote: > >> > > I want a compiler infrastructure that can do more than one pass > >> > > over the program that is to be compiled. I also want to be able > >> > > to do passes that are more complex than a linear walk through > >> > > instructions while looking at only one instruction at a time. For > >> > > example, I'm thinking of: > >> > > - a very simple algorithm for dead code elimination that walks > >> > > through the program *backwards* > >> > > - an algorithm to merge MUL and ADD into MAD > >> > > >> > I once wrote an algo that had the ability to remove all write masks > >> > and swizzles of all instructions that do not contribute to the > >> > results. Simply dropping instructions with no write mask implements > >> > dead code elimination. > >> > >> Did you publish that code somewhere? I was thinking of implementing > >> the exact same thing some time in the future, but if you already have > >> something like it that can be adapted... > > > > No, didn't release it. I'm not even sure if I still have it(blew couple > > hard disks few years back). Have to check my desktop hds when I get a > > chance. > > I wrote similar code which now lives in the i965 driver in brw_wm_pass*.c. > > In short there is: > > brw_wm_fp.c > -- various preprocessing simplifications to the mesa program representation. > -- add instructions required by hw to set up interpolants, etc. > > brw_wm_pass0.c > -- convert to an SSA format, but still very close to the mesa > program instruction format. > -- identify shared/scalar values (eg all 4 results of a DP3 instruction) > -- discard non-saturating, non-negating swizzles and moves > Didn't see a pass to remove undefined reads(reverse of pass 1). > brw_wm_pass1.c > -- dead code elimination > -- basically clear writemask for unused values, on a scalar granularity > > brw_wm_pass2.c > -- generate liveness information for each scalar register component > -- register allocation, assuming a scalar or SOA architecture. > > Most of this code is independent of the i965 architecture, though > assumptions do creep in... The big simplifying assumption is that > we're talking about only ARB_fs style shaders - ie no loops or > branches. > > Keith > > -- Aapo Tahkola ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Mesa3d-dev mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mesa3d-dev
