The SGI Pro64 Compiler Infrastructure Guang R. Gao (U of Delaware) J. Dehnert (SGI) J. N. Amaral (U of Alberta) R. Towle (SGI) - A Tutorial /Gao/Pro64-Intro 2 Acknowledgement The piler Development Teams – The MIPSpro /Pro64 Development Team University of Delaware – piler Team These individuals contributed directly to this tutorial A. Douillet ( Udel ) F. Chow (Equator) S. Chan (Intel) W. Ho ( Routefree ) Z. Hu ( Udel ) K. Lesniak (SGI) S. Liu (HP) R. Lo ( Routefree ) S. Mantripragada (SGI) C. Murthy (SGI) M. Murphy (SGI) G. Pirocanac (SGI) D. Stephenson (SGI) D. Whitney (SGI) H. Yang ( Udel ) /Gao/Pro64-Intro 3 What is Pro64? ? A suite of piler tools for Linux / Intel IA-64 systems ? C, C++ and Fortran90/pilers ? Conforming to the IA-64 Linux ABI and API standards ? Open to all researchers/developers in the community ? Compatible with HP Native User Environment /Gao/Pro64-Intro 4 Who Might Want to Use Pro64? ? Researchers : test piler analysis and optimization algorithms ? Developer s : retarget to another architecture/system ? Educators : piler teaching platform /Gao/Pro64-Intro 5 Outline ? Background and Motivation ? Part I: An overview of the SGI piler infrastructure ? Part II: The Pro64 code generator design ? Part III: Using Pro64 piler research & development ? SGI Pro64 support ? Summary /Gao/Pro64-Intro 6 PART I: Overview of the piler /Gao/Pro64-Intro 7 Outline ? pilation model ponent flow ? WHIRL Intermediate Representation ? Inter-Procedural Analysis (IPA) ? Loop Nest Optimizer (LNO) and Parallelization ? Global optimization (WOPT) ? Feedback ? Design for debugability and testability /Gao/Pro64-Intro 8 pilation Model back end (be, as) linker ( ld) WHIRL (.B/.I) obj (.o) /.so Data Path Fork and Exec driver ( /sgif90/ ) front end + IPA ( gfec / /mfef90) Src (.c/.C/.f) /Gao/Pro64-Intro ponents of Pro64 Front end Interprocedural Analysis and Optimization Loop Nest Optimization and Parallelization Global