@@ -5594,47 +5594,87 @@ are excluded from the symbol mangling and also not marked as global.
5594
5594
\H{CPU} \i\c{CPU}: Defining CPU Dependencies
5595
5595
5596
5596
The \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.
5598
5600
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}.)
5600
5604
5601
- \b\c{ CPU 8086} Assemble only 8086 instruction set
5605
+ Current CPU keywords are:
5602
5606
5603
- \b\c{CPU 186 } Assemble instructions up to the 80186 instruction set
5607
+ \b\c{CPU 8086 } - Assemble only 8086 instruction set
5604
5608
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
5606
5610
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
5608
5612
5609
- \b\c{CPU 486 } 486 instruction set
5613
+ \b\c{CPU 386 } - Assemble instructions up to the 386 instruction set
5610
5614
5611
- \b\c{CPU 586 } Pentium instruction set
5615
+ \b\c{CPU 486 } - 486 instruction set
5612
5616
5613
- \b\c{CPU PENTIUM } Same as 586
5617
+ \b\c{CPU 586 } - Pentium instruction set
5614
5618
5615
- \b\c{CPU 686 } P6 instruction set
5619
+ \b\c{CPU PENTIUM } - Same as 586
5616
5620
5617
- \b\c{CPU PPRO } Same as 686
5621
+ \b\c{CPU 686 } - P6 instruction set
5618
5622
5619
- \b\c{CPU P2 } Same as 686
5623
+ \b\c{CPU PPRO } - Same as 686
5620
5624
5621
- \b\c{CPU P3 } Pentium III (Katmai) instruction sets
5625
+ \b\c{CPU P2 } - Same as 686
5622
5626
5623
- \b\c{CPU KATMAI } Same as P3
5627
+ \b\c{CPU P3 } - Pentium III (Katmai) instruction sets
5624
5628
5625
- \b\c{CPU P4 } Pentium 4 (Willamette) instruction set
5629
+ \b\c{CPU KATMAI } - Same as P3
5626
5630
5627
- \b\c{CPU WILLAMETTE } Same as P4
5631
+ \b\c{CPU P4 } - Pentium 4 (Willamette) instruction set
5628
5632
5629
- \b\c{CPU PRESCOTT } Prescott instruction set
5633
+ \b\c{CPU WILLAMETTE } - Same as P4
5630
5634
5631
- \b\c{CPU X64 } x86-64 (x64/AMD64/Intel 64) instruction set
5635
+ \b\c{CPU PRESCOTT } - Prescott instruction set
5632
5636
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
5634
5638
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.
5638
5678
5639
5679
5640
5680
\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
5643
5683
denormals are supported. The following options can be set to alter
5644
5684
this behaviour:
5645
5685
5646
- \b\c{FLOAT DAZ} Flush denormals to zero
5686
+ \b\c{FLOAT DAZ} - Flush denormals to zero
5647
5687
5648
- \b\c{FLOAT NODAZ} Do not flush denormals to zero (default)
5688
+ \b\c{FLOAT NODAZ} - Do not flush denormals to zero (default)
5649
5689
5650
- \b\c{FLOAT NEAR} Round to nearest (default)
5690
+ \b\c{FLOAT NEAR} - Round to nearest (default)
5651
5691
5652
- \b\c{FLOAT UP} Round up (toward +Infinity)
5692
+ \b\c{FLOAT UP} - Round up (toward +Infinity)
5653
5693
5654
- \b\c{FLOAT DOWN} Round down (toward -Infinity)
5694
+ \b\c{FLOAT DOWN} - Round down (toward -Infinity)
5655
5695
5656
- \b\c{FLOAT ZERO} Round toward zero
5696
+ \b\c{FLOAT ZERO} - Round toward zero
5657
5697
5658
- \b\c{FLOAT DEFAULT} Restore default settings
5698
+ \b\c{FLOAT DEFAULT} - Restore default settings
5659
5699
5660
5700
The standard macros \i\c{__?FLOAT_DAZ?__}, \i\c{__?FLOAT_ROUND?__}, and
5661
5701
\i\c{__?FLOAT?__} contain the current state, as long as the programmer
0 commit comments