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