*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> uopt (1)              


UOPT(1)								       UOPT(1)

NAME    [Toc]    [Back]

     uopt - MIPS Ucode Global Optimizer

SYNOPSIS    [Toc]    [Back]

     uopt unopt_file opt_file [	string_file ] [	-t sym_file -i ignore_file -l
     list_file -Olimit count -loopunroll count ] [ -v -w -bb -O3 -EL -EB
     -doassoc -f77alias	-pic2 -nokpicopt -kpicopt -no_r23 -nomultibbunroll
     -zdbug:n ]

DESCRIPTION    [Toc]    [Back]

     uopt, the MIPS ucode optimizer, reads the input binary ucode file,
     performs optimization on an intra-procedural, global basis	and outputs
     the optimized binary ucode	file.  It checks the version stamp of the
     ucode file, and if	it does	not correspond to its own stamp, a warning
     message will be printed.  By convention, unoptimized binary ucode files
     have the extension	.B and optimized binary	ucode files have the extension
     .O, but uopt does not force this convention on the	user.  The string file
     is	used for storing string	and floating-point constants in	each procedure
     during optimization, to save memory space.	 If this file name is omitted,
     the file name "uoptstring"	is used.  uopt first conducts a	quick pre-pass
     over the entire program. In the main optimization pass, it	reads,
     optimizes and writes out the procedures one by one	in same	the order that
     they appear in the	input file.

     The complexity of global optimization is some exponential function	of the
     size of the procedure (in number of basic blocks).	 Thus, large
     procedures	take enormous amount of	time to	optimize.  Also, if the	host
     machine has only a	small amount of	memory,	excessive swapping of memory
     pages between disk	physical memory	further	lengthens the optimization
     time for large procedures.	 uopt will skip	optimizing a procedure if the
     number of basic blocks it contains	exceeds	500.  A	warning	message	if
     given so that the user is aware that the procedure	is not optimized. The
     default value of 500 can be overridden using the -Olimit option.

     The following options are interpreted by uopt.

     -v	     Turns on verbose mode.  In	this mode, uopt	will print the name of
	     the procedure it's	currently optimizing, plus a number enclosed
	     in	parentheses that tells the number of basic blocks in that
	     procedure.	 Optimization time is usually some exponential
	     function of the number of basic blocks in the procedure.  Under
	     -O3 optimization, an "i" after the	number indicates that interprocedural
	register allocation is performed for that procedure.

     -w	     Suppresses	warning	messages.

     -bb     Write out the basic block number as ucode comments	in the output
	     ucode.  This is useful in debugging uopt.

     -O3     Uses the inter-procedural technique when performing register

									Page 1

UOPT(1)								       UOPT(1)

     -EL     Tells uopt.  that the target machine is little-endian.

     -EB     Tells uopt.  that the target machine is big-endian.

	     Performs the re-association optimization for floating-point
	     expressions even when the language	is FORTRAN.  This violates the
	     FORTRAN Standard.

	     Assumes that there's can be aliasing among	the parameters to a
	     procedure when the	language is FORTRAN.  The FORTRAN Standard
	     allows the	assumption by compilers	that there is never any
	     aliasing among parameters.	This assumption	allows the compiler to
	     get better	performance for	the program.  If a program violates
	     this rule,	the program may	not run	correctly after	default
	     optimization; using this flag will	still allow the	program	to run
	     correctly after optimization, only	at a reduced performance

     -pic2   Tells uopt	that the program is being compiled for execution with
	     dynamic shared objects.

	     Asks uopt not to perform the special treatment for	global
	     variables to optimize their program accesses under	shared

	     Asks uopt to perform the special treatment	for global variables
	     to	optimize their program accesses	regardless of the shared/nonshared
 compilation	mode.

     -no_r23 Tells uopt	that it	should not use register	23.

	     Disables unrolling	for loops containing branches.

	     Tells uopt	to print different debugging traces, depending on the
	     value of n	given.	Traces are printed on a	per-procedure basis,
	     and output	to the list file specified in the -l option.  The
	     traces always begin with the control flow graph of	the procedure.
	     For value 1, the local hash table and the global hash table are
	     printed.  For value 2, the	local hash table, the global hash
	     table are printed;	the bit	vectors	for the	local attributes are
	     then printed on a per-basic-block basis.  For value 3, the	global
	     hash table	is printed, followed by	the bit	vectors	for the
	     partial redundancy	data flow analysis.  For value 4, the global
	     hash table	is printed, followed by	the bit	vectors	to determine
	     the live ranges of	global common subexpressions.  For value 5,
	     the global	hash table is printed, followed	by the live range

									Page 2

UOPT(1)								       UOPT(1)

	     information for all the register-residing candidates, followed by
	     the bit vectors related to	register allocation.  For value	6, a
	     trace of the global register allocation via priority-based
	     coloring is printed.  For value 7,	the inter-procedural register
	     allocation	information is printed.

     -t	sym_file
	     Tells uopt	the name of the	symbol table file.

     -i	ignore_file
	     Tells uopt	to ignore specific procedures and leave	them
	     unoptimized.  The procedures whose	optimization is	to be
	     suppressed	are listed in arbitrary	order in the given file, with
	     each line containing one procedure	name starting at the first

     -l	list_file
	     Uses the given file to print diagnostic information during

     -Olimit count
	     Set this parameter	to the given value.  uopt will not optimize a
	     procedure whose size in terms of number of	basic blocks exceeds
	     this value.

     -loopunroll count
	     Set the maximum number of times that a loop will be unrolled.
	     The default value is 4.  Setting it to 0 or 1 will	disable	loop

SEE ALSO    [Toc]    [Back]

     ucode(1), btou(1),	ppu(1),

DIAGNOSTICS    [Toc]    [Back]

     uopt assumes the input ucode file is error-free.  However,	it does	output
     warning messages when it runs into	special	situations during

									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
uopt IRIX the ucode optimizer
ddopt IRIX MIPS Data-Dependency-based Optimizer
umerge IRIX Ucode Inliner
pdfopt Linux Ghostscript PDF Optimizer
syms IRIX MIPS symbol table
ABIinfo IRIX query information about MIPS ABI systems
disassembler IRIX disassemble a MIPS instruction and print the results
sysmips IRIX MIPS Computer Systems Inc. system call
tag IRIX tag a MIPS executable or shell script with an identifying number
stio IRIX routines that provide a binary read/write interface to the MIPS symbol table
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service