=pod

=head1 NAME

llvm-bcanalyzer - LLVM bytecode analyzer

=head1 SYNOPSIS

B<llvm-bcanalyzer> [I<options>] [F<filename>]

=head1 DESCRIPTION

The B<llvm-bcanalyzer> command is a small utility for analyzing bytecode files.
The tool reads a bytecode file (such as generated with the B<llvm-as> tool) and
produces a statistical report on the contents of the byteocde file.  The tool
can also dump a low level but human readable version of the bytecode file. 
This tool is probably not of much interest or utility except for those working 
directly with the bytecode file format. Most LLVM users can just ignore
this tool.

If F<filename> is omitted or is C<->, then B<llvm-bcanalyzer> reads its input 
from standard input. This is useful for combining the tool into a pipeline.
Output is written to the standard output.

=head1 OPTIONS

=over

=item B<-nodetails>

Causes B<llvm-bcanalyzer> to abbreviate its output by writing out only a module 
level summary. The details for individual functions are not displayed.

=item B<-dump>

Causes B<llvm-bcanalyzer> to dump the bytecode in a human readable format. This 
format is significantly different from LLVM assembly and provides details about 
the encoding of the bytecode file.

=item B<-verify>

Causes B<llvm-bcanalyzer> to verify the module produced by reading the 
bytecode. This ensures that the statistics generated are based on a consistent
module.

=item B<--help>

Print a summary of command line options.

=back

=head1 EXIT STATUS

If B<llvm-bcanalyzer> succeeds, it will exit with 0.  Otherwise, if an error
occurs, it will exit with a non-zero value, usually 1.

=head1 SUMMARY OUTPUT DEFINITIONS

The following items are always printed by llvm-bcanalyzer. They comprize the
summary output.

=over

=item B<Bytecode Analysis Of Module>

This just provides the name of the module for which bytecode analysis is being
generated.

=item B<Bytecode Version Number>

The bytecode version (not LLVM version) of the file read by the analyzer.

=item B<File Size>

The size, in bytes, of the entire bytecode file.

=item B<Module Bytes>

The size, in bytes, of the module block. Percentage is relative to File Size.

=item B<Function Bytes>

The size, in bytes, of all the function blocks. Percentage is relative to File
Size.

=item B<Global Types Bytes>

The size, in bytes, of the Global Types Pool. Percentage is relative to File
Size. This is the size of the definitions of all types in the bytecode file.

=item B<Constant Pool Bytes>

The size, in bytes, of the Constant Pool Blocks Percentage is relative to File
Size.

=item B<Module Globals Bytes>

Ths size, in bytes, of the Global Variable Definitions and their initializers.
Percentage is relative to File Size.

=item B<Instruction List Bytes>

The size, in bytes, of all the instruction lists in all the functions.
Percentage is relative to File Size. Note that this value is also included in
the Function Bytes.

=item B<Compaction Table Bytes>

The size, in bytes, of all the compaction tables in all the functions.
Percentage is relative to File Size. Note that this value is also included in
the Function Bytes.

=item B<Symbol Table Bytes>

The size, in bytes, of all the symbol tables in all the functions. Percentage is
relative to File Size. Note that this value is also included in the Function
Bytes.

=item B<Dependent Libraries Bytes>

The size, in bytes, of the list of dependent libraries in the module. Percentage
is relative to File Size. Note that this value is also included in the Module
Global Bytes.

=item B<Number Of Bytecode Blocks>

The total number of blocks of any kind in the bytecode file.

=item B<Number Of Functions>

The total number of function definitions in the bytecode file.

=item B<Number Of Types>

The total number of types defined in the Global Types Pool.

=item B<Number Of Constants>

The total number of constants (of any type) defined in the Constant Pool.

=item B<Number Of Basic Blocks>

The total number of basic blocks defined in all functions in the bytecode file.

=item B<Number Of Instructions>

The total number of instructions defined in all functions in the bytecode file.

=item B<Number Of Long Instructions>

The total number of long instructions defined in all functions in the bytecode
file. Long instructions are those taking greater than 4 bytes. Typically long
instructions are GetElementPtr with several indices, PHI nodes, and calls to
functions with large numbers of arguments.

=item B<Number Of Operands>

The total number of operands used in all instructions in the bytecode file.

=item B<Number Of Compaction Tables>

The total number of compaction tables in all functions in the bytecode file.

=item B<Number Of Symbol Tables>

The total number of symbol tables in all functions in the bytecode file.

=item B<Number Of Dependent Libs>

The total number of dependent libraries found in the bytecode file.

=item B<Total Instruction Size>

The total size of the instructions in all functions in the bytecode file.

=item B<Average Instruction Size>

The average number of bytes per instruction across all functions in the bytecode
file. This value is computed by dividing Total Instruction Size by Number Of
Instructions.

=item B<Maximum Type Slot Number>

The maximum value used for a type's slot number. Larger slot number values take 
more bytes to encode.

=item B<Maximum Value Slot Number>

The maximum value used for a value's slot number. Larger slot number values take 
more bytes to encode.

=item B<Bytes Per Value>

The average size of a Value definition (of any type). This is computed by
dividing File Size by the total number of values of any type.

=item B<Bytes Per Global>

The average size of a global definition (constants and global variables).

=item B<Bytes Per Function>

The average number of bytes per function definition. This is computed by
dividing Function Bytes by Number Of Functions.

=item B<# of VBR 32-bit Integers>

The total number of 32-bit integers encoded using the Variable Bit Rate
encoding scheme.

=item B<# of VBR 64-bit Integers>

The total number of 64-bit integers encoded using the Variable Bit Rate encoding
scheme.

=item B<# of VBR Compressed Bytes>

The total number of bytes consumed by the 32-bit and 64-bit integers that use
the Variable Bit Rate encoding scheme.

=item B<# of VBR Expanded Bytes>

The total number of bytes that would have been consumed by the 32-bit and 64-bit
integers had they not been compressed with the Variable Bit Rage encoding
scheme.

=item B<Bytes Saved With VBR>

The total number of bytes saved by using the Variable Bit Rate encoding scheme.
The percentage is relative to # of VBR Expanded Bytes.

=back

=head1 DETAILED OUTPUT DEFINITIONS

The following definitions occur only if the -nodetails option was not given.
The detailed output provides additional information on a per-function basis.

=over

=item B<Type>

The type signature of the function.

=item B<Byte Size>

The total number of bytes in the function's block.

=item B<Basic Blocks>

The number of basic blocks defined by the function.

=item B<Instructions>

The number of instructions defined by the function.

=item B<Long Instructions>

The number of instructions using the long instruction format in the function.

=item B<Operands>

The number of operands used by all instructions in the function.

=item B<Instruction Size>

The number of bytes consumed by instructions in the function.

=item B<Average Instruction Size>

The average number of bytes consumed by the instructions in the funtion. This
value is computed by dividing Instruction Size by Instructions.

=item B<Bytes Per Instruction>

The average number of bytes used by the function per instruction. This value is
computed by dividing Byte Size by Instructions. Note that this is not the same
as Average Instruction Size. It computes a number relative to the total function
size not just the size of the instruction list.

=item B<Number of VBR 32-bit Integers>

The total number of 32-bit integers found in this function (for any use).

=item B<Number of VBR 64-bit Integers>

The total number of 64-bit integers found in this function (for any use).

=item B<Number of VBR Compressed Bytes>

The total number of bytes in this function consumed by the 32-bit and 64-bit 
integers that use the Variable Bit Rate encoding scheme.

=item B<Number of VBR Expanded Bytes>

The total number of bytes in this function that would have been consumed by 
the 32-bit and 64-bit integers had they not been compressed with the Variable 
Bit Rate encoding scheme.

=item B<Bytes Saved With VBR>

The total number of bytes saved in this function by using the Variable Bit 
Rate encoding scheme. The percentage is relative to # of VBR Expanded Bytes.

=back

=head1 SEE ALSO

L<llvm-dis|llvm-dis>, L<http://llvm.org/docs/BytecodeFormat.html>

=head1 AUTHORS

Maintained by the LLVM Team (L<http://llvm.org>).

=cut
