| PathScale Compiler Suite features |
Functional Components
•
GNU C/C++ front-end compatible with OpenMP 2.5
•Fortran 95 with Cray/SGI extensions and OpenMP 2.5
•Optimizer and Fortran derived from SGI Open64 code base
•Pathdb command line debugger
•Tuned libraries including ACML 3.5 |
| AMD64 Specific Capabilities |
|
•Support for inline assembly code
•Long address support
•Supports AMD64 ABI (x86-64)
•Utilizes full 64-bit ISA including SSE2/3DNow!? and register sets
•Instruction scheduling for the AMD out-of-order core |
| EM64T Specific Capabilities |
| •All SSE3 instructions available
•Single precision complex (except div/mult)
•Unaligned loads
•Intruction scheduling for the Intel EM64T core |
| Major Optimizations |
Code Generation
•Control flow optimization
•If-conversion
•Instruction scheduling
•Global register allocation
•Loop unrolling
•Peephole optimization |
| Loop Nest Optimizer |
•Loop-caused dependency analysis
•Loop Interchange
•Cache Blocking
•Loop Fission
•Loop Fusion
•Outer loop unrolling
•Prefetching
•Scalar Expansion and Array Expansion
•Gather-scatter
•Pad arrays to reduce cache conflicts
•Vectorization (including SIMD) |
| Binary and Source Code Compatibility |
C/C++ Compatibility
•Source compatible at GNU 3.3.X with OpenMP 2.5
•100% binary interoperability, including name mangling
•Mix and match GNU and PathScale compiled objects
Fortran Compatibility
•Source compatible Fortran 77 / 90 / 95 with Cray / extensions including full pointer
support.
•OpenMP 2.5 support
•All common Fortran 77 extensions for compiling“dusty deck”code
•Links with g77 compiled libraries
•Custom libraries included, including libm and ACML2.5
•Big-endian/Little-endian Fortran I/O
Debugger (pathdb) Compatibility
•Well formatted printing of Fortran variables, arrays, expressions
•Understands Fortran 77 and 90 types, and expression operators
•Properly prints standard C++ templates, maps, vectors, lists and dynamic types
•Gdb compatible commands and works with gnu compiled code
•Step backward capabilit |
| Global
scalar optimization |
Pre-Optimizer
•Goto conversion and loop normalization
• Alias analysis (flow-free and flow-sensitive)
•Tail recursion elimination
• Dead store and dead code elimination
• Induction variable canonicalization
• Copy propagation
Main Optimizer
•Partial redundancy elimination based
on SSAPRE framework
–Global common sub-expression
–Loop invariant code motion
–Strength reduction
–Linear function test replacement
•Induction variable elimination
•Register promotion |
| Inter-Procedural Analysis |
•Operates across multiple compilation runs
•Function inlining
•Inter-procedural constant propagation of globals and parameters
•Dead function and dead variable elimination
•Automatic common block padding |
| Tested Operating Systems |
| •SuSE™ Linux Professional 9.2 and 9.3
•SuSE Linux Enterprise Server 8 and 9
•Red Hat™ Enterprise Linux Workstation 3 and 4
•Red Hat Fedora Core 2, Core 3 |