Next | Top | Index
Full Table of Contents
- Contents
-
- 1. - System and Compiler Overview
-
- IRIX 6.2 Overview
-
- IRIX 6.2 Objectives
-
- What is Not in the IRIX 6.2 Release
-
- Compatibility and Supported ABIs
-
- Known Compatibility Issues
-
- Source Level System Interface
-
- Graphics Environment Support
-
- Inter-Process Communication
-
- Device Driver Interface
-
- Compiler System Components
-
- Fortran
-
- Fortran 32-Bit System
-
- Fortran 64-Bit and N32 System
-
- C
-
- C 32-Bit System
-
- C 64-Bit and N32 System
-
- Fortran and C 64-Bit Components
-
- Kuck and Associates Preprocessor (KAP)
-
- Passing Options to KAP
-
- KAP's Optimization Flags (-o, -r, -so)
-
- The -o Flag
-
- The -r Flag
-
- The -so Flag
-
- Opimization Levels Passed to KAP
-
- Multiprocessing Support
-
- MP Compatibility
-
- MP Enhancements
-
- MP Application Testing
-
- 2. - Language Implementation Differences
-
- Native 64-Bit Subprogram Interface for MIPS Architectures
-
- Fortran Implementation Differences
-
- New Fortran Features
-
- Incompatibilities and Differences
-
- C Implementation Differences
-
- Structure and Union Layout Examples
-
- Example 1: Structure Smaller Than a Word
-
- Example 2: Structure With No Padding
-
- Example 3: Structure With Internal Padding
-
- Example 4: Structure With Internal and Tail Padding
-
- Example 5: Union Allocation
-
- Portability Issues
-
- 3. - Source Code Porting
-
- 64-Bit Fortran Porting Guidelines
-
- Examples of Fortran Portability Issues
-
- Example 1: Changing Integer Variables
-
- Example 2: Enlarging Tables
-
- Example 3: Using #if Directives with Predefined Variables.
-
- Example 4: Storing %LOC Return Values
-
- Example 5: Modifying C Routines Called by Fortran
-
- Example 6: Declaring Fortran Arguments as long ints
-
- Example 7: Changing Argument Declarations in Fortran Subprograms
-
- 64-Bit C Porting Guidelines
-
- Porting to the LP64 Model
-
- Writing Code Portable to 64-Bit Platforms
-
- Fundamental Types for C
-
- Assembly Language Coding Guidelines
-
- Overview and Predefined Variables
-
- LP64 Model Implications for Assembly Language Code
-
- Different Register Sizes
-
- Using a Different Subrouting Linkage
-
- Caller $gp (o32) vs. Callee Saved $gp (LP64)
-
- Using More Floating Point Registers
-
- 4. - Compilation Issues
-
- Environment Variables
-
- Command Line Switches
-
- Fortran Switch Differences
-
- C Switch Differences
-
- Optimization Switches of the 64-Bit Compilers
-
- General Optimizations
-
- -O0
-
- -O1
-
- -O2 -O
-
- -O3
-
- Floating Point Optimizations
-
- -OPT:roundoff=n
-
- -OPT:IEEE_arithmetic=n
-
- -OPT:div_split[=(ON|OFF)]
-
- -OPT:fast_complex[=(ON|OFF)]
-
- -OPT:fast_exp[=(ON|OFF)]
-
- -OPT:fast_sqrt[=(ON|OFF)]
-
- -OPT:fold_reassociate[=(ON|OFF)]
-
- -OPT:IEEE_comparisons[=ON]
-
- -OPT:recip[=(ON|OFF)]
-
- -OPT:rsqrt[=(ON|OFF)]
-
- -TARG:madd[=(ON|OFF)]
-
- Miscellaneous Optimizations
-
- -OPT:space
-
- -OPT:alias=name
-
- Loop Unrolling Optimizations
-
- -OPT:unroll_times_max=n
-
- -OPT:unroll_size=n
-
- -OPT:unroll_bblimit=n
-
- Global Code Motion
-
- -GCM:aggressive_speculation[=(ON|OFF)]
-
- -GCM:array_speculation[=(ON|OFF)]
-
- -GCM:pointer_speculation[=(ON|OFF)]
-
- -GCM:static_load_speculation[=(ON|OFF)]
-
- -GCM:prepass[=(ON|OFF)] -GCM:postpass[=(ON|OFF)]
-
- Software Pipelining
-
- -SWP:=(ON|OFF)
-
- -SWP:back_substitution[=(ON|OFF)]
-
- -SWP:backtracks_max=n
-
- -SWP:body_ins_count_max=n
-
- -SWP:fix_recurrences[=(ON|OFF)]
-
- -SWP:if_conversion[=(ON|OFF)]
-
- -SWP:interleave_reductions[=(ON|OFF)]
-
- -SWP:trip_count_min=n
-
- Target Environment Issues
-
- -TENV:large_GOT[=(ON|OFF)] -TENV:small_GOT[=(ON|OFF)]
-
- -TENV:X=n
-
- Data Alignment Options
-
- -align8 / -align16 / -align32 / -align64
-
- -TENV:align_aggregates=n
-
- -TENV:misalignment=n
-
- Compilation Messages
-
- Important Warning Messages
-
- warning(1411): destination type of cast is too small to hold all pointers: truncation possible
-
- warning(1412): source type of cast is too small to hold all pointers: sign extension possible
-
- Linking Your Application
-
- Libraries
-
- 5. - Runtime Issues
-
- Runtime Differences
-
- Reassociation of Operations by Optimizations
-
- Algorithm Changes in Libraries
-
- Hardware Changes
-
- Extended MIPS Floating-Point Architecture
-
- Performance Mode
-
- Background
-
- Performance Mode Definition
-
- R8000 and R4400 Implementations
-
- Full IEEE Compliance in Performance Mode
-
- Application Bringup and Debugging
-
- 6. - Performance Tuning for the R8000
-
- Software Pipelining
-
- Why Software Pipelining Delivers Better Performance
-
- Looking at the Code Produced by Software Pipelining
-
- Example 1: Output from Using the -S Compiler Switch
-
- How to Diagnose What Went Wrong
-
- KAP SWP Conflicts
-
- Matrix Multiply - A Tuning Case Study
-
- The Effect of Bellows Stalls
-
- Example 2: Single Precision Loops
-
- Example 3: Double Precision Loops
-
- Use of the IVDEP Directive
-
- Vector Intrinsic Functions
-
- Manual vs. Automatic Invocation
-
- Performance and Accuracy
-
- 7. - Miscellaneous FAQ
-
Next | Top | Index