Compaq KAP C/OpenMP for Tru64 UNIX

Compaq KAP C/OpenMP
for Tru64 UNIX

Quick Reference



Order Number: AV--PXEHJ--TE


June 2000

This document lists Compaq KAP C/OpenMP for Tru64 UNIX command-line switches.

For more information about these switches, see the Compaq KAP C/OpenMP for Tru64 UNIX User Guide.

Revision/Update Information: This is a revised document.

Operating System and Version: Compaq Tru64 UNIX Versions 4.0F, 5.0, and 5.0A

Software Versions: Version 4.1
Compaq C Version 6.1

Compaq Computer Corporation
Houston, Texas


© 1993 Compaq Computer Corporation

© 1993 Kuck & Associates, Inc.

Compaq, the Compaq logo, Compaq C, and Compaq Fortran, Registered in U.S. Patent and Trademark Office.

KAP is a trademark of Kuck & Associates, Inc.

UNIX is a registered trademark of The Open Group.

All other product names mentioned herein may be trademarks or registered trademarks of their respective companies.

Compaq shall not be liable for technical or editorial errors or omissions contained herein. The information in this document is subject to change without notice.

Table 1 Command-Line Switches for the kcc Driver
Long Name Short Name Default Value
cc=<C_compiler_path>   cc=/usr/bin/cc
cext=<C file extension>   cext=c
ckap=<path to kapc>   ckap=/usr/bin/kapc
ckapargs=<kap_switch_string>    
cpp=<cpp_path>   cpp=/usr/bin/cc
sif=<cpp, kap>,-S   off
tmpdir=<temporary_directory_path_string>   tmpdir=/tmp/
tune=<architecture>   tune=current system architecture
verbose v nov

Table 2 Command-Line Switches for kapc the Preprocessor
Long Name Short Name Default Value
General Optimization    
[no]interchange interchange interchange
[no]namepartitioning=
<integer>,<integer>
[n]namepart=
<integer>,
<integer>
off
optimize o o=5
[no]recursion [n]rc off
roundoff r roundoff=3
scalaropt=<integer> so=<integer> so=3
[no]skip [n]sk off
tune=<architecture> tune=
<architecture>
tune=
<architecture>
Parallel Processing    
[no]concurrentize [n]conc noconc
minconcurrent=<integer> mc mc=1000
Inlining and IPA    
inline[=<names>] inl[=<names>] off
noinline[=<names>] ninl[=<names>]  
ipa[=<names>] ipa[=<names>] off
noipa[=<names>] nipa[=<names>]  
inline_and_copy=<names> inlc=<names> off
inline_create=<file> incr=<file> off
ipa_create=<file> ipacr=<file> off
inline_depth=<integer> ind=<integer> ind=2
ipa_depth=<integer> ipad=<integer> ind=2
inline_from_files=<file>,<file> inff=<file>,<file> current source file
ipa_from_files=<file>,<file> ipaff=<file>,<file> current source file
inline_from_libraries=
<library>,<library>
infl=<library>,
<library>
off
ipa_from_libraries=
<library>,<library>
ipafl=<library>,
<library>
off
inline_looplevel=<integer> inll=<integer> inll=2
ipa_looplevel=<integer> ipall=<integer> ipall=2
inline_manual inm off
ipa_manual ipam off
inline_optimize=<integer>   inline_optimize=0
ipa_optimize=<integer>   ipa_optimize=0
Input-Output    
cmp[=<file>] cmp[=<file>] see User Guide
nocmp ncmp  
list[=<file>] l[=<file>] nl
nolist nl  
Listing    
cmpoptions[=<list>] cp[=<list>] ncp
nocmpoptions ncp  
lines=<integer> ln=<integer> ln=55
listingwidth=<integer> lw=<integer> lw=132
listoptions=<list> lo=<list> see User Guide
Language Qualifiers    
[no]natural [n]nat nat
signed signed signed
Advanced Optimization    
addressresolution=<integer> arl=<integer> arl=1
[no]arclimit=<integer> [n]arclm=<integer> arclm=5000
cacheline=<integer> chl=<integer> chl=32,32
cache_prefetch_line_count=
<integer>[,<integer>]
cplc=<integer> cplc=0
cachesize=<integer> chs=<integer> chs=8,0
dpregisters=<integer> dpr=<integer> dpr=32
each_invariant_if_growth=
<integer>
eiifg=<integer> eiifg=20
fpregisters=<integer> fpr=<integer> fpr=32
[no]fuse=<integer> [n]fuse nofuse
fuselevel=<integer> fuselevel=<integer> fuselevel=0
heaplimit=<integer> heap=<integer> heaplimit=100
limit=<integer> lm=<integer> lm=50
[no]machine=<list> [n]ma ma=S
max_invariant_if_growth=
<integer>
miifg=<integer> miifg=500
routine=<routine_name>
/<limited qualifiers>
rt=<routine_name>
/<limited qualifiers>
off
setassociativity=<integer> sasc=<integer> sasc=1,1
stdio stdio off
syntax=<list> sy=<list> sy=d
unroll=<integer> ur=<integer> ur=4
unroll2=<integer> ur2=<integer> ur2=160
unroll3=<integer> ur3=<integer> ur3=1

Table 3 Ranges
Value Meaning
addressresolution
0 KAP C makes no assumptions about data aliasing
1 A pointer will not contain its own address
2 No objects represented by function parameters overlap in memory
KAP C assumes parameter aliasing
Equivalent to #pragma_KAP distinct for all parameters
3 Globals, function parameters, and locals form distinct groups
4 No aliases for objects
listoptions  
c Calling tree at end of program listing
k KAP C switches used, printed at end of each program unit
l Loop-by-loop optimization table
n Names of program unit
p Compilation performance statistics
s Summary of loop optimizations performed
machine  
n Prefer nonstride-1 array access
o Directs KAP to parallelize only outer loops
s Prefer optimization of for loop stride-1 references
other  
Limit >0
Arclimit >0
optimize  
0 No optimization performed
Simple program analysis performed
1 Simple loop optimization performed
Loops distributed to optimize only part of loop
2 Loops in a loop nest optimized
Lifetime analysis performed
More powerful data dependence tests performed
3 Special techniques used to break data dependence cycles
Triangular loops recognized
Loop interchanging performed to improve memory referencing
Special case data dependence tests used
4 Two versions of a loop generated to break data dependence arc when necessary
Exact data dependence tests performed
Wraparound variables recognized
5 Array expansion and loop fusion enabled
roundoff  
0 No roundoff-changing transformations
1 Loop interchanging around serial reductions allowed if -optimize is equal to or greater
than 4
Simplification of expressions from forward substitution or inside trigonometric intrinsic functions returning integer values is performed
Code floating enabled if -scalaropt is equal to or greater than 2
Loop rerolling enabled if -scalaropt is equal to or greater than 2
2 Reciprocal substitution performed to move an expensive division outside of loop
3 Floating point induction variables recognized
Memory management enabled if -scalaropt=3
Expressions such as A/ B /C can be rotated to
A / (B * C)
scalaropt  
0 No scalar optimizations performed
1 Only simple scalar optimizations performed
Dead-code elimination
Global forward substitution
Dusty deck IF transformations enabled
2 Full range of scalar optimizations performed
Floating invariant IFs out of loops
Induction variable recognition
Loop rerolling if -roundoff is equal to or greater
than 1
Loop peeling, loop fusion, loop unrolling
3 Memory management enabled if -roundoff=3
syntax  
a Strict compliance with ANSI C
d Accepts Compaq C
k Accepts Kernighan & Ritchie C
unroll --- enabled only with -scalaropt=2
-unroll=<#it> and -unroll2=<weight> and -unroll3=<weight>
  where:

<#it> is the maximum number of iterations to unroll.

  • =0 use default values to unroll
  • =1 no unrolling

<weight> is the maximum (-unroll2) or minimum (-unroll3) weight, estimate of work, in an unrolled loop. Work is estimated by counting operands and operators in a loop.

Table 4 KAP Assertions and Directives
KAP Assertion Duration
#pragma _KAP arl=<integer> Selectable
#pragma _KAP distinct (name, name) Selectable
#pragma _KAP no side effects (name) Program unit
Parallel Processing:  
#pragma _KAP concurrent Selectable
#pragma _KAP concurrent call Selectable
#pragma _KAP concurrent ignore call Selectable
#pragma _KAP serial Selectable
KAP Directive Range of Values
Inlining and Interprocedural Analysis:  
#pragma _KAP inline [here]
[routine] [global]
[(name[,name..])]
Selectable
#pragma _KAP ipa [here]
[routine] [global]
[(name[,name..])]
Selectable
Memory Management:  
#pragma_KAP padding (var_list) Program unit
#pragma_KAP storage order (var_list) Program unit
Parallel Processing:  
#pragma _KAP minconcurrent (<integer>) Program unit