<?xml version="1.0"?>
<!DOCTYPE flagsdescription
    SYSTEM "http://www.spec.org/dtd/cpuflags1.dtd"
>

<!-- The lines above are NOT optional.  If you're adept at reading DTDs,
     the one that this file conforms to is at the URL listed above.  
     
     But most humans writing a flags file will want to have it automatically 
     checked using a validating parser such as RXP (available at
     http://www.ltg.ed.ac.uk/~richard/rxp.html), or use one of the on-line
     parsers:
       http://www.stg.brown.edu/service/xmlvalid/
       http://www.cogsci.ed.ac.uk/~richard/xml-check.html
     
     The parser used by the CPU tools is _not_ a validating parser, so it
     may be possible to sneak things by it that would not pass the checkers
     above.  However, if the checkers above say that your file is clean, it's
     clean.

     Flag files submitted to SPEC _will_ be checked by a validating parser.
     Invalid or not-well-formed flag files will be rejected.

     This file is
       Copyright (C) 2006 Standard Performance Evaluation Corporation
       All Rights Reserved
     
     This file may be freely modified and redistributed, provided that the
     copyright notice above and this notice remain unaltered.

     $Id: flags-simple.xml 4007 2006-03-17 11:34:42Z cloyce $

     **********************************************************************
     **********************************************************************
     Unless otherwise explicitly noted, all references to "section n.nn"
     refer to flag_description.html, available at

     http://www.spec.org/cpu2006/docs/flag_description.html
     **********************************************************************
     **********************************************************************

	NOTES:

		Earlier versions of this document contain items that are not currently
		in use with the CPU2006 or MPI2007 benchmark suites. Most of these
		items have been omitted here, but may need to be added later.

		Likely this document will be separated into platform vs. environment
        vs.compiler vs. flag information. 

		This file is based on CPU2006_flags.20070614.xml.
		
-->
<flagsdescription>

<title>IBM XL Compilers with AIX 5L: Compiler Flags, Environment Settings and Utilities</title>

<style>
<![CDATA[
body { background: white; }
]]>
</style>

<!-- =====================================================================
  The <header> section is also entirely optional.  If it is provided, and
  no class is specified, then it will be inserted verbatim at the top
  of the flags dump.

  If a class is specified, that text will be inserted verbatim before flags
  of that class.  
  
  As the contents should be HTML, it will save lots of time to just enclose
  the whole thing in a CDATA section.  Section 2.3.1 again.
     ===================================================================-->
<header>
<![CDATA[
<p>Compilers: IBM XL C/C++ Enterprise Edition Version 8.0 for AIX</p>
<p>Compilers: IBM XL Fortran Enterprise Edition Version 10.1 for AIX</p>
<p>Compilers: IBM XL C/C++ Enterprise Edition Version 9.0 for AIX</p>
<p>Compilers: IBM XL Fortran Enterprise Edition Version 11.1 for AIX</p>
<p>OS:        IBM AIX 5L V5.3</p>
<p>Last updated: 03-Dec-2007</p> ]]>
</header>

<!-- =====================================================================
  Information about the meaning of boot-time settings, BIOS options,
  kernel tuning, and so forth can go in the 'platform_settings' section.

  They'll be appended to the end of both the flags dump and per-result flag report.

  As the contents should be HTML, it will save lots of time to just enclose
  the whole thing in a CDATA section.  Section 2.3.1 again.
     ===================================================================-->
<platform_settings>
<![CDATA[
<ul>
<li> drmgr -r -c cpu </li> Deconfigures one core from the active partition. Use it N times to deconfigure N cores.</p>
<li> smtctl -m on|off -w now|boot</li> <br />Controls the enabling and disabling of processor simultaneous multi-threading mode.</p>
<li> vmo -r -o lgpg_regions=n -o lgpg_size=16777216</li> <br />Sets the size of large pages to 16M, and set the number to use, with -r, takes effect on the next IPL.</p>
<li> bosboot -q</li> <br />Regenerates the IPL boot to set the options specified with smtctl and vmo.</p>
<li> bindprocessor $$ &lt;n&gt; </li> <br />The next program is to be bound to the specified processor.</p>
<p> Environment variables set before the run:</p>
<li> MEMORY_AFFINITY=MCM </li><br />Cause the OS to alloc memory "closest" to the chip that first requests it.</p>
<li> MALLOCOPTIONS=POOL </li><br />Selects the OS malloc option that allocates/frees small objects very quickly.</p>
</ul>
]]>
</platform_settings>


<!--
  -
  - Optimization flags: memory allocation.
  -
  -->

<flag name="F-bmaxdata"
      class="optimization"
      regexp="-bmaxdata:(\S+)\b">
<example>
-bmaxdata:0x20000000,
-bmaxdata:0x40000000,
-bmaxdata:0x50000000,
-bmaxdata:0x60000000,
-bmaxdata:0x80000000
</example>
Causes the system loader to put the heap in it's own segment of the size specified.
This is only required for 32-bit applications, as their segments are 256M. If the
last digit of the value is "C", then it also turns off the malloc pool option for
that executable.
</flag>


<flag name="F-bdatapsize"
      class="optimization"
      regexp="-bdatapsize:64K\b">
<example>
-bdatapsize:64K
</example>
Specifies a non-default page size of 64K for the program data segment.
</flag>


<flag name="F-bstackpsize"
      class="optimization"
      regexp="-bstackpsize:64K\b">
<example>
-bstackpsize:64K
</example>
Specifies a non-default page size of 64K for the program stack segment.
</flag>


<flag name="F-btextpsize"
      class="optimization"
      regexp="-btextpsize:64K\b">
<example>
-btextpsize:64K
</example>
Specifies a non-default page size of 64K for the program text segment.
</flag>


<flag name="F-blpdata"
      class="optimization"
      regexp="-blpdata\b">
Sets the bit in the file's XCOFF header indicating that this
executable will request the use of large pages when they are
available on the system and when the user has an appropriate
privilege
</flag>


<!--
  -
  - Optimization flags: vector calculations.
  -
  -->

<flag name="F-D__IBM_FAST_VECTOR"
      class="optimization"
      regexp="-D__IBM_FAST_VECTOR\b">
The __IBM_FAST_VECTOR macro defines a different iterator for the std::vector 
template class. This iterator results in faster code, but is not compatible 
with code using the default iterator for a std::vector template class. 
All uses of std::vector for a data type must use the same iterator.
 Add -D__IBM_FAST_VECTOR to the compile line, or "#define __IBM_FAST_VECTOR 1" 
to your source code to use the faster iterator for std::vector template class.
 You must compile all sources with this macro.
</flag>



<!--
  -
  -	Optimization flags: support libraries.
  -
  -->

<flag name="F-D_ILS_MACROS"
      class="optimization"
      regexp="-D_ILS_MACROS\b">
Causes AIX to define "ischar()" (and friends) as macro's and not subroutines.
</flag>


</flagsdescription>

