MIPSpro™ Compilers

Optimizing Compilers for High-Performance Computing

The MIPSpro compilers represent the latest technology of optimizing and parallelizing compilers from SGI. They take advantage of all of the performance-oriented features in the latest MIPS microprocessors such as high-speed calling conventions and 32-bit and 64-bit floating-point and general-purpose registers. Highlights include:

  • support for C, C++ and Fortran 77/90
  • state-of-the-art optimizations and automatic parallelizing technology
  • enhancements fo interprocedural analysis (IPA)
  • complete support for 32- and 64-bit development and execution
  • code generation for MIPS R4000, R4400, R4600, R5000, R8000 and R10000
  • support for the MIPS III and MIPS IV Instruction Set Architectures (ISA)
  • and full compliance with the n32 and n64 Application Binary Interfaces (ABI)

The MIPSpro compilation system includes a command back-end that performs all scalar and parallel optimizations and transformations. They support value-added extensions that enrich the basic functionality of the compilers, ease the porting of applications written for other platforms, and boost runtime application performance. The MIPSpro compilers also provide support for the MIPS I and II ISA for 32-bit applications that are compliant with the 32-bit ABI -o32.

The MIPS System V Application Binary Interface (ABI) helps with portability across all MIPS-based computer systems, ranging from laptops to mainframe.

Powerful Optimizations

The MIPSpro compilers can do a comprehensive set of high-level and architecture-specific optimizations to automatically improve the performance of a wide range of applications.

Memory management optimizations ensure that your application takes full advantage of the memory hierarchy including general-purpose and floating-point registers, primary and secondary caches, and main memory. The optimizations can be applied automatically to reduce cache conflicts and register demands include array padding, data prefecting, loop distribution, sum reduction, automatic cache blocking, loop unrolling, invariant code motion, common block padding, loop interchange, and loop fusion.

The MIPSpro compilers use interprocedural analysis to simultaneously optimize an entire program, thereby enabling cross-file function inlining, position independent codeoptimizations, and dead function elimination. Global optimizations such as common subexpression elimination, constant propagation, pointer optimizations, and global register allocation can generate more efficient code. Processor optimizations use software pipelining to optimally schedule instructions within loops by exploiting instruction-level pathways and effectively hiding instruction latencies.

The MIPSpro C and C++ compilers benefit from many high-level program transformations as well as architecture-specific optimizations performed in the common back-end. In addition, the compiler supports advanced pointer optimizations.

The MIPSpro compilers support feedback-directed optimization, a three-step process that imporves runtime performance by compiling your applications, generating runtime statistics, then recompiling for improved optimizations.

Automatic and User-Directed Parallelizations

The Automatic Parallelization Option (APO) for C, C++, and Fortran 77/90 enables a variety of applications to benefit from multiprocessor execution. APO can analyze and restructure user applications for parallel execution. User-assisted parallelization is also supported with standards-based directives, enabling users to actively assist the compiler in the parallelization process.

Programming Models

The MIPSpro compilers support both 32-bit and 64-bit programming models. The 32-bit model supports 32-bit pointers and data addressing, combining portability and performance. The 64-bit model supports 64-bit pointers, data addresses, and file systems. It also provides performance for applications requiring access to data sets, memory, or files larger than 2GB.

Multilanguage Interoperability

The MIPSpro family of compilers is completely interoperable. Program modules written in Fortran 77, Fortran 90, C and C++ can be linked to form one application for single or multiple processor execution.