General Information

Current release

The currently released version of the optimizer is 2.0.18 - this may be verified by issuing the following command:
dco -about

Supported optimization targets

Current release of the optimizer capable of processing assembly files and generating assembly output for targets supporting
  • conditional move CMOVcc instructions
  • SSE, SSE2, SSE3 and SSE4 extensions

Supported execution targets

Currently the optimizer is provided only as a 64-bit executable for a x86 Linux OS. 32-bit x86 Linux executable or executable for Windows OS will be made available upon request.

Intended targets of optimization

Current release of the optimizer is tuned to optimize gcc-processed double precision numeric code. gcc versions 4.1.x and later are recommended for use with the current version of dco.

Current release of the optimizer is capable to optimize only programs to be linked in the lower 2GB of the address space; this corresponds to gcc compiler options -mcmodel=small or -mcmodel=medium. Programs that don't satisfy this requirement ( e.g. compiled with the -mcmodel=large compiler option ) shall not be optimized by dco.

Current release of the optimizer does not support DWARF2 info in .eh_frame section. Use -fno-dwarf2-cfi-asm compiler option to prevent generation of this data.

Documentation

dco's users manual can be found here.
See this on how to incorporate the optimizer with a compiler.

Technical Assistance

Contact us to get assistance with dco installation or usage questions.

Software Installation

Linux Version

The following is required for installation and use of the optimizer on Linux:
  • A system based on a x86 processor (Intel® Pentium® 4 processor or Intel® Core™2 processor recommended)
  • x86 Linux kernel 2.6.X
  • 512MB or more of RAM 

Linux Installation Procedure

  1. ( Skip this step if you received the product on CD ) Uncompress the package with the following command:
    tar -zxvf dco.tar.gz
  2. Move the ( extracted ) files dco and dcoas into a location accessible for execution ( part of the PATH environment variable )
  3. Optimizer uses temporary files stored in the directory specified by the following environment variable ( in the order listed ):
    TMPDIR
    TMP
    TEMP
    If none of this environment variables is specified, the temporary files are stored in the directory from where the optimizer was invoked.
    Ensure that you have write/read access to the directory where the temporary files will be stored.

Unistalling the optimizer

To uninstall the optimizer, remove files dco and dcoas from the location(s) they were copied to.

Getting Started

Before You Start

Once you completed dco's installation, it is useful to perform a basic verification task that confirms proper installation, configuration and operation of the optimizer. A verification source file to_verify is provided as part of the optimizers installation. 

You can confirm proper installation of the optimizer by processing the verification source to_verify and comparing the generated output with the provided expected data file to_verify_expected, as follows:

dco to_verify -o to_verify_generated
diff to_verify_expected to_verify_generated

The diff command shall not show any difference except for an invocation line, time stamp and, possibly, line that begins with "#grdnt=".

Locating the documentation

The dco's users manual is installed here.
See this on how to incorporated the optimizer with a compiler.

You can read a summary of optimizers options from the command line by invoking the optimizer with the -h option:

dco -h

Using the optimizer

The following is an example on how to use the optimizer.

To generated the dco optimized object file source_file.o from a C language source file source_file.c, use the following commands:

gcc -S -O3 -fomit-frame-pointer -funroll-all-loops -ffast-math \
    -march=core2 -mfpmath=sse -msse4.1 -mmmx \
    -source_file.c

dco source_file.s
gcc -c source_file.s
rm source_file.s

Disclaimer and Legal Information

We assume no responsibility or liability for any errors or inaccuracies that may appear in this document or any software that may be provided in association with this document.

WE ASSUME NO LIABILITY WHATSOEVER, AND DISCLAIM ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF OUR PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Our products are not intended for use in medical, life saving, life sustaining, critical control or safety systems, or in nuclear facility applications.

The software described in this document may contain software defects which may cause it to deviate from expected behaviour.

Copyright © 2010, Dalsoft.