@@ -5594,47 +5594,87 @@ are excluded from the symbol mangling and also not marked as global.
55945594\H{CPU} \i\c{CPU}: Defining CPU Dependencies
55955595
55965596The \i\c{CPU} directive restricts assembly to those instructions which
5597- are available on the specified CPU.
5597+ are available on the specified CPU. At the moment, it is primarily
5598+ used to enforce unavailable \e{encodings} of instructions, such as
5599+ 5-byte jumps on the 8080.
55985600
5599- Options are:
5601+ (If someone would volunteer to work through the database and add
5602+ proper annotations to each instruction, this could be greatly
5603+ improved. Please contact the developers to volunteer, see \{contact}.)
56005604
5601- \b\c{ CPU 8086} Assemble only 8086 instruction set
5605+ Current CPU keywords are:
56025606
5603- \b\c{CPU 186 } Assemble instructions up to the 80186 instruction set
5607+ \b\c{CPU 8086 } - Assemble only 8086 instruction set
56045608
5605- \b\c{CPU 286 } Assemble instructions up to the 286 instruction set
5609+ \b\c{CPU 186 } - Assemble instructions up to the 80186 instruction set
56065610
5607- \b\c{CPU 386 } Assemble instructions up to the 386 instruction set
5611+ \b\c{CPU 286 } - Assemble instructions up to the 286 instruction set
56085612
5609- \b\c{CPU 486 } 486 instruction set
5613+ \b\c{CPU 386 } - Assemble instructions up to the 386 instruction set
56105614
5611- \b\c{CPU 586 } Pentium instruction set
5615+ \b\c{CPU 486 } - 486 instruction set
56125616
5613- \b\c{CPU PENTIUM } Same as 586
5617+ \b\c{CPU 586 } - Pentium instruction set
56145618
5615- \b\c{CPU 686 } P6 instruction set
5619+ \b\c{CPU PENTIUM } - Same as 586
56165620
5617- \b\c{CPU PPRO } Same as 686
5621+ \b\c{CPU 686 } - P6 instruction set
56185622
5619- \b\c{CPU P2 } Same as 686
5623+ \b\c{CPU PPRO } - Same as 686
56205624
5621- \b\c{CPU P3 } Pentium III (Katmai) instruction sets
5625+ \b\c{CPU P2 } - Same as 686
56225626
5623- \b\c{CPU KATMAI } Same as P3
5627+ \b\c{CPU P3 } - Pentium III (Katmai) instruction sets
56245628
5625- \b\c{CPU P4 } Pentium 4 (Willamette) instruction set
5629+ \b\c{CPU KATMAI } - Same as P3
56265630
5627- \b\c{CPU WILLAMETTE } Same as P4
5631+ \b\c{CPU P4 } - Pentium 4 (Willamette) instruction set
56285632
5629- \b\c{CPU PRESCOTT } Prescott instruction set
5633+ \b\c{CPU WILLAMETTE } - Same as P4
56305634
5631- \b\c{CPU X64 } x86-64 (x64/AMD64/Intel 64) instruction set
5635+ \b\c{CPU PRESCOTT } - Prescott instruction set
56325636
5633- \b\c{CPU IA64 } IA64 CPU (in x86 mode ) instruction set
5637+ \b\c{CPU X64 } - x86-64 (x64/AMD64/Intel 64 ) instruction set
56345638
5635- All options are case insensitive. All instructions will be selected
5636- only if they apply to the selected CPU or lower. By default, all
5637- instructions are available.
5639+ \b\c{CPU IA64} - IA64 CPU (in x86 mode) instruction set
5640+
5641+ \b\c{CPU DEFAULT} - All available instructions
5642+
5643+ \b\c{CPU ALL} - All available instructions \e{and flags}
5644+
5645+ All options are case insensitive.
5646+
5647+ In addition, optional flags can be specified to modify the instruction
5648+ selections. These can be combined with a CPU declaration or specified
5649+ alone. They can be prefixed by \c{+} (add flag, default), \c{-}
5650+ (remove flag) or \c{*} (set flag to default); these prefixes are
5651+ "sticky", so:
5652+
5653+ \c cpu -foo,bar
5654+
5655+ means remove both the \c{foo} and \c{bar} options.
5656+
5657+ If prefixed with \c{no}, it inverts the meaning of the flag, but this
5658+ is not sticky, so:
5659+
5660+ \c cpu nofoo,bar
5661+
5662+ means remove the \c{foo} flag but add the \c{bar} flag.
5663+
5664+ Currently available flags are:
5665+
5666+ \b\c{EVEX} - Enable generation of EVEX (AVX-512) encoded instructions
5667+ without an explicit \c{\{evex\}} prefix. Default on.
5668+
5669+ \b\c\{VEX} - Enable generation of VEX (AVX) or XOP encoded
5670+ instructions without an explict \c{\{vex\}} prefix. Default on.
5671+
5672+ \b\c{LATEVEX} - Enable generation of VEX (AVX) encoding of
5673+ instructions where the VEX instructions forms were introduced
5674+ \e{after} the corresponding EVEX (AVX-512) instruction forms without
5675+ requiring an explicit \c{\{vex\}} prefix. This is implicit if the
5676+ \c{EVEX} flag is disabled and the \c{VEX} flag is enabled. Default
5677+ off.
56385678
56395679
56405680\H{FLOAT} \i\c{FLOAT}: Handling of \I{floating-point, constants}floating-point constants
@@ -5643,19 +5683,19 @@ By default, floating-point constants are rounded to nearest, and IEEE
56435683denormals are supported. The following options can be set to alter
56445684this behaviour:
56455685
5646- \b\c{FLOAT DAZ} Flush denormals to zero
5686+ \b\c{FLOAT DAZ} - Flush denormals to zero
56475687
5648- \b\c{FLOAT NODAZ} Do not flush denormals to zero (default)
5688+ \b\c{FLOAT NODAZ} - Do not flush denormals to zero (default)
56495689
5650- \b\c{FLOAT NEAR} Round to nearest (default)
5690+ \b\c{FLOAT NEAR} - Round to nearest (default)
56515691
5652- \b\c{FLOAT UP} Round up (toward +Infinity)
5692+ \b\c{FLOAT UP} - Round up (toward +Infinity)
56535693
5654- \b\c{FLOAT DOWN} Round down (toward -Infinity)
5694+ \b\c{FLOAT DOWN} - Round down (toward -Infinity)
56555695
5656- \b\c{FLOAT ZERO} Round toward zero
5696+ \b\c{FLOAT ZERO} - Round toward zero
56575697
5658- \b\c{FLOAT DEFAULT} Restore default settings
5698+ \b\c{FLOAT DEFAULT} - Restore default settings
56595699
56605700The standard macros \i\c{__?FLOAT_DAZ?__}, \i\c{__?FLOAT_ROUND?__}, and
56615701\i\c{__?FLOAT?__} contain the current state, as long as the programmer
0 commit comments