toolchain/share/doc/as.html/i386_002dOptions.html

399 lines
22 KiB
HTML
Raw Permalink Normal View History

2024-01-10 05:24:32 +00:00
<html lang="en">
<head>
<title>i386-Options - Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="i386_002dDependent.html#i386_002dDependent" title="i386-Dependent">
<link rel="next" href="i386_002dDirectives.html#i386_002dDirectives" title="i386-Directives">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU Assembler "as".
Copyright (C) 1991-2019 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts. A copy of the license is included in the
section entitled ``GNU Free Documentation License''.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<a name="i386-Options"></a>
<a name="i386_002dOptions"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="i386_002dDirectives.html#i386_002dDirectives">i386-Directives</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="i386_002dDependent.html#i386_002dDependent">i386-Dependent</a>
<hr>
</div>
<h4 class="subsection">9.16.1 Options</h4>
<p><a name="index-options-for-i386-1077"></a><a name="index-options-for-x86_002d64-1078"></a><a name="index-i386-options-1079"></a><a name="index-x86_002d64-options-1080"></a>
The i386 version of <code>as</code> has a few machine
dependent options:
<!-- man begin OPTIONS -->
<a name="index-g_t_0040samp_007b_002d_002d32_007d-option_002c-i386-1081"></a>
<a name="index-g_t_0040samp_007b_002d_002d32_007d-option_002c-x86_002d64-1082"></a>
<a name="index-g_t_0040samp_007b_002d_002dx32_007d-option_002c-i386-1083"></a>
<a name="index-g_t_0040samp_007b_002d_002dx32_007d-option_002c-x86_002d64-1084"></a>
<a name="index-g_t_0040samp_007b_002d_002d64_007d-option_002c-i386-1085"></a>
<a name="index-g_t_0040samp_007b_002d_002d64_007d-option_002c-x86_002d64-1086"></a>
<dl><dt><code>--32 | --x32 | --64</code><dd>Select the word size, either 32 bits or 64 bits. &lsquo;<samp><span class="samp">--32</span></samp>&rsquo;
implies Intel i386 architecture, while &lsquo;<samp><span class="samp">--x32</span></samp>&rsquo; and &lsquo;<samp><span class="samp">--64</span></samp>&rsquo;
imply AMD x86-64 architecture with 32-bit or 64-bit word-size
respectively.
<p>These options are only available with the ELF object file format, and
require that the necessary BFD support has been included (on a 32-bit
platform you have to add &ndash;enable-64-bit-bfd to configure enable 64-bit
usage and use x86-64 as target platform).
<br><dt><code>-n</code><dd>By default, x86 GAS replaces multiple nop instructions used for
alignment within code sections with multi-byte nop instructions such
as leal 0(%esi,1),%esi. This switch disables the optimization if a single
byte nop (0x90) is explicitly specified as the fill byte for alignment.
<p><a name="index-g_t_0040samp_007b_002d_002ddivide_007d-option_002c-i386-1087"></a><br><dt><code>--divide</code><dd>On SVR4-derived platforms, the character &lsquo;<samp><span class="samp">/</span></samp>&rsquo; is treated as a comment
character, which means that it cannot be used in expressions. The
&lsquo;<samp><span class="samp">--divide</span></samp>&rsquo; option turns &lsquo;<samp><span class="samp">/</span></samp>&rsquo; into a normal character. This does
not disable &lsquo;<samp><span class="samp">/</span></samp>&rsquo; at the beginning of a line starting a comment, or
affect using &lsquo;<samp><span class="samp">#</span></samp>&rsquo; for starting a comment.
<p><a name="index-g_t_0040samp_007b_002dmarch_003d_007d-option_002c-i386-1088"></a><a name="index-g_t_0040samp_007b_002dmarch_003d_007d-option_002c-x86_002d64-1089"></a><br><dt><code>-march=</code><var>CPU</var><code>[+</code><var>EXTENSION</var><code>...]</code><dd>This option specifies the target processor. The assembler will
issue an error message if an attempt is made to assemble an instruction
which will not execute on the target processor. The following
processor names are recognized:
<code>i8086</code>,
<code>i186</code>,
<code>i286</code>,
<code>i386</code>,
<code>i486</code>,
<code>i586</code>,
<code>i686</code>,
<code>pentium</code>,
<code>pentiumpro</code>,
<code>pentiumii</code>,
<code>pentiumiii</code>,
<code>pentium4</code>,
<code>prescott</code>,
<code>nocona</code>,
<code>core</code>,
<code>core2</code>,
<code>corei7</code>,
<code>l1om</code>,
<code>k1om</code>,
<code>iamcu</code>,
<code>k6</code>,
<code>k6_2</code>,
<code>athlon</code>,
<code>opteron</code>,
<code>k8</code>,
<code>amdfam10</code>,
<code>bdver1</code>,
<code>bdver2</code>,
<code>bdver3</code>,
<code>bdver4</code>,
<code>znver1</code>,
<code>znver2</code>,
<code>btver1</code>,
<code>btver2</code>,
<code>generic32</code> and
<code>generic64</code>.
<p>In addition to the basic instruction set, the assembler can be told to
accept various extension mnemonics. For example,
<code>-march=i686+sse4+vmx</code> extends <var>i686</var> with <var>sse4</var> and
<var>vmx</var>. The following extensions are currently supported:
<code>8087</code>,
<code>287</code>,
<code>387</code>,
<code>687</code>,
<code>no87</code>,
<code>no287</code>,
<code>no387</code>,
<code>no687</code>,
<code>cmov</code>,
<code>nocmov</code>,
<code>fxsr</code>,
<code>nofxsr</code>,
<code>mmx</code>,
<code>nommx</code>,
<code>sse</code>,
<code>sse2</code>,
<code>sse3</code>,
<code>ssse3</code>,
<code>sse4.1</code>,
<code>sse4.2</code>,
<code>sse4</code>,
<code>nosse</code>,
<code>nosse2</code>,
<code>nosse3</code>,
<code>nossse3</code>,
<code>nosse4.1</code>,
<code>nosse4.2</code>,
<code>nosse4</code>,
<code>avx</code>,
<code>avx2</code>,
<code>noavx</code>,
<code>noavx2</code>,
<code>adx</code>,
<code>rdseed</code>,
<code>prfchw</code>,
<code>smap</code>,
<code>mpx</code>,
<code>sha</code>,
<code>rdpid</code>,
<code>ptwrite</code>,
<code>cet</code>,
<code>gfni</code>,
<code>vaes</code>,
<code>vpclmulqdq</code>,
<code>prefetchwt1</code>,
<code>clflushopt</code>,
<code>se1</code>,
<code>clwb</code>,
<code>movdiri</code>,
<code>movdir64b</code>,
<code>enqcmd</code>,
<code>avx512f</code>,
<code>avx512cd</code>,
<code>avx512er</code>,
<code>avx512pf</code>,
<code>avx512vl</code>,
<code>avx512bw</code>,
<code>avx512dq</code>,
<code>avx512ifma</code>,
<code>avx512vbmi</code>,
<code>avx512_4fmaps</code>,
<code>avx512_4vnniw</code>,
<code>avx512_vpopcntdq</code>,
<code>avx512_vbmi2</code>,
<code>avx512_vnni</code>,
<code>avx512_bitalg</code>,
<code>avx512_bf16</code>,
<code>noavx512f</code>,
<code>noavx512cd</code>,
<code>noavx512er</code>,
<code>noavx512pf</code>,
<code>noavx512vl</code>,
<code>noavx512bw</code>,
<code>noavx512dq</code>,
<code>noavx512ifma</code>,
<code>noavx512vbmi</code>,
<code>noavx512_4fmaps</code>,
<code>noavx512_4vnniw</code>,
<code>noavx512_vpopcntdq</code>,
<code>noavx512_vbmi2</code>,
<code>noavx512_vnni</code>,
<code>noavx512_bitalg</code>,
<code>noavx512_vp2intersect</code>,
<code>noavx512_bf16</code>,
<code>noenqcmd</code>,
<code>vmx</code>,
<code>vmfunc</code>,
<code>smx</code>,
<code>xsave</code>,
<code>xsaveopt</code>,
<code>xsavec</code>,
<code>xsaves</code>,
<code>aes</code>,
<code>pclmul</code>,
<code>fsgsbase</code>,
<code>rdrnd</code>,
<code>f16c</code>,
<code>bmi2</code>,
<code>fma</code>,
<code>movbe</code>,
<code>ept</code>,
<code>lzcnt</code>,
<code>hle</code>,
<code>rtm</code>,
<code>invpcid</code>,
<code>clflush</code>,
<code>mwaitx</code>,
<code>clzero</code>,
<code>wbnoinvd</code>,
<code>pconfig</code>,
<code>waitpkg</code>,
<code>cldemote</code>,
<code>lwp</code>,
<code>fma4</code>,
<code>xop</code>,
<code>cx16</code>,
<code>syscall</code>,
<code>rdtscp</code>,
<code>3dnow</code>,
<code>3dnowa</code>,
<code>sse4a</code>,
<code>sse5</code>,
<code>svme</code>,
<code>abm</code> and
<code>padlock</code>.
Note that rather than extending a basic instruction set, the extension
mnemonics starting with <code>no</code> revoke the respective functionality.
<p>When the <code>.arch</code> directive is used with <samp><span class="option">-march</span></samp>, the
<code>.arch</code> directive will take precedent.
<p><a name="index-g_t_0040samp_007b_002dmtune_003d_007d-option_002c-i386-1090"></a><a name="index-g_t_0040samp_007b_002dmtune_003d_007d-option_002c-x86_002d64-1091"></a><br><dt><code>-mtune=</code><var>CPU</var><dd>This option specifies a processor to optimize for. When used in
conjunction with the <samp><span class="option">-march</span></samp> option, only instructions
of the processor specified by the <samp><span class="option">-march</span></samp> option will be
generated.
<p>Valid <var>CPU</var> values are identical to the processor list of
<samp><span class="option">-march=</span><var>CPU</var></samp>.
<p><a name="index-g_t_0040samp_007b_002dmsse2avx_007d-option_002c-i386-1092"></a><a name="index-g_t_0040samp_007b_002dmsse2avx_007d-option_002c-x86_002d64-1093"></a><br><dt><code>-msse2avx</code><dd>This option specifies that the assembler should encode SSE instructions
with VEX prefix.
<p><a name="index-g_t_0040samp_007b_002dmsse_002dcheck_003d_007d-option_002c-i386-1094"></a><a name="index-g_t_0040samp_007b_002dmsse_002dcheck_003d_007d-option_002c-x86_002d64-1095"></a><br><dt><code>-msse-check=</code><var>none</var><dt><code>-msse-check=</code><var>warning</var><dt><code>-msse-check=</code><var>error</var><dd>These options control if the assembler should check SSE instructions.
<samp><span class="option">-msse-check=</span><var>none</var></samp> will make the assembler not to check SSE
instructions, which is the default. <samp><span class="option">-msse-check=</span><var>warning</var></samp>
will make the assembler issue a warning for any SSE instruction.
<samp><span class="option">-msse-check=</span><var>error</var></samp> will make the assembler issue an error
for any SSE instruction.
<p><a name="index-g_t_0040samp_007b_002dmavxscalar_003d_007d-option_002c-i386-1096"></a><a name="index-g_t_0040samp_007b_002dmavxscalar_003d_007d-option_002c-x86_002d64-1097"></a><br><dt><code>-mavxscalar=</code><var>128</var><dt><code>-mavxscalar=</code><var>256</var><dd>These options control how the assembler should encode scalar AVX
instructions. <samp><span class="option">-mavxscalar=</span><var>128</var></samp> will encode scalar
AVX instructions with 128bit vector length, which is the default.
<samp><span class="option">-mavxscalar=</span><var>256</var></samp> will encode scalar AVX instructions
with 256bit vector length.
<p>WARNING: Don't use this for production code - due to CPU errata the
resulting code may not work on certain models.
<p><a name="index-g_t_0040samp_007b_002dmvexwig_003d_007d-option_002c-i386-1098"></a><a name="index-g_t_0040samp_007b_002dmvexwig_003d_007d-option_002c-x86_002d64-1099"></a><br><dt><code>-mvexwig=</code><var>0</var><dt><code>-mvexwig=</code><var>1</var><dd>These options control how the assembler should encode VEX.W-ignored (WIG)
VEX instructions. <samp><span class="option">-mvexwig=</span><var>0</var></samp> will encode WIG VEX
instructions with vex.w = 0, which is the default.
<samp><span class="option">-mvexwig=</span><var>1</var></samp> will encode WIG EVEX instructions with
vex.w = 1.
<p>WARNING: Don't use this for production code - due to CPU errata the
resulting code may not work on certain models.
<p><a name="index-g_t_0040samp_007b_002dmevexlig_003d_007d-option_002c-i386-1100"></a><a name="index-g_t_0040samp_007b_002dmevexlig_003d_007d-option_002c-x86_002d64-1101"></a><br><dt><code>-mevexlig=</code><var>128</var><dt><code>-mevexlig=</code><var>256</var><dt><code>-mevexlig=</code><var>512</var><dd>These options control how the assembler should encode length-ignored
(LIG) EVEX instructions. <samp><span class="option">-mevexlig=</span><var>128</var></samp> will encode LIG
EVEX instructions with 128bit vector length, which is the default.
<samp><span class="option">-mevexlig=</span><var>256</var></samp> and <samp><span class="option">-mevexlig=</span><var>512</var></samp> will
encode LIG EVEX instructions with 256bit and 512bit vector length,
respectively.
<p><a name="index-g_t_0040samp_007b_002dmevexwig_003d_007d-option_002c-i386-1102"></a><a name="index-g_t_0040samp_007b_002dmevexwig_003d_007d-option_002c-x86_002d64-1103"></a><br><dt><code>-mevexwig=</code><var>0</var><dt><code>-mevexwig=</code><var>1</var><dd>These options control how the assembler should encode w-ignored (WIG)
EVEX instructions. <samp><span class="option">-mevexwig=</span><var>0</var></samp> will encode WIG
EVEX instructions with evex.w = 0, which is the default.
<samp><span class="option">-mevexwig=</span><var>1</var></samp> will encode WIG EVEX instructions with
evex.w = 1.
<p><a name="index-g_t_0040samp_007b_002dmmnemonic_003d_007d-option_002c-i386-1104"></a><a name="index-g_t_0040samp_007b_002dmmnemonic_003d_007d-option_002c-x86_002d64-1105"></a><br><dt><code>-mmnemonic=</code><var>att</var><dt><code>-mmnemonic=</code><var>intel</var><dd>This option specifies instruction mnemonic for matching instructions.
The <code>.att_mnemonic</code> and <code>.intel_mnemonic</code> directives will
take precedent.
<p><a name="index-g_t_0040samp_007b_002dmsyntax_003d_007d-option_002c-i386-1106"></a><a name="index-g_t_0040samp_007b_002dmsyntax_003d_007d-option_002c-x86_002d64-1107"></a><br><dt><code>-msyntax=</code><var>att</var><dt><code>-msyntax=</code><var>intel</var><dd>This option specifies instruction syntax when processing instructions.
The <code>.att_syntax</code> and <code>.intel_syntax</code> directives will
take precedent.
<p><a name="index-g_t_0040samp_007b_002dmnaked_002dreg_007d-option_002c-i386-1108"></a><a name="index-g_t_0040samp_007b_002dmnaked_002dreg_007d-option_002c-x86_002d64-1109"></a><br><dt><code>-mnaked-reg</code><dd>This option specifies that registers don't require a &lsquo;<samp><span class="samp">%</span></samp>&rsquo; prefix.
The <code>.att_syntax</code> and <code>.intel_syntax</code> directives will take precedent.
<p><a name="index-g_t_0040samp_007b_002dmadd_002dbnd_002dprefix_007d-option_002c-i386-1110"></a><a name="index-g_t_0040samp_007b_002dmadd_002dbnd_002dprefix_007d-option_002c-x86_002d64-1111"></a><br><dt><code>-madd-bnd-prefix</code><dd>This option forces the assembler to add BND prefix to all branches, even
if such prefix was not explicitly specified in the source code.
<p><a name="index-g_t_0040samp_007b_002dmshared_007d-option_002c-i386-1112"></a><a name="index-g_t_0040samp_007b_002dmshared_007d-option_002c-x86_002d64-1113"></a><br><dt><code>-mno-shared</code><dd>On ELF target, the assembler normally optimizes out non-PLT relocations
against defined non-weak global branch targets with default visibility.
The &lsquo;<samp><span class="samp">-mshared</span></samp>&rsquo; option tells the assembler to generate code which
may go into a shared library where all non-weak global branch targets
with default visibility can be preempted. The resulting code is
slightly bigger. This option only affects the handling of branch
instructions.
<p><a name="index-g_t_0040samp_007b_002dmbig_002dobj_007d-option_002c-x86_002d64-1114"></a><br><dt><code>-mbig-obj</code><dd>On x86-64 PE/COFF target this option forces the use of big object file
format, which allows more than 32768 sections.
<p><a name="index-g_t_0040samp_007b_002dmomit_002dlock_002dprefix_003d_007d-option_002c-i386-1115"></a><a name="index-g_t_0040samp_007b_002dmomit_002dlock_002dprefix_003d_007d-option_002c-x86_002d64-1116"></a><br><dt><code>-momit-lock-prefix=</code><var>no</var><dt><code>-momit-lock-prefix=</code><var>yes</var><dd>These options control how the assembler should encode lock prefix.
This option is intended as a workaround for processors, that fail on
lock prefix. This option can only be safely used with single-core,
single-thread computers
<samp><span class="option">-momit-lock-prefix=</span><var>yes</var></samp> will omit all lock prefixes.
<samp><span class="option">-momit-lock-prefix=</span><var>no</var></samp> will encode lock prefix as usual,
which is the default.
<p><a name="index-g_t_0040samp_007b_002dmfence_002das_002dlock_002dadd_003d_007d-option_002c-i386-1117"></a><a name="index-g_t_0040samp_007b_002dmfence_002das_002dlock_002dadd_003d_007d-option_002c-x86_002d64-1118"></a><br><dt><code>-mfence-as-lock-add=</code><var>no</var><dt><code>-mfence-as-lock-add=</code><var>yes</var><dd>These options control how the assembler should encode lfence, mfence and
sfence.
<samp><span class="option">-mfence-as-lock-add=</span><var>yes</var></samp> will encode lfence, mfence and
sfence as &lsquo;<samp><span class="samp">lock addl $0x0, (%rsp)</span></samp>&rsquo; in 64-bit mode and
&lsquo;<samp><span class="samp">lock addl $0x0, (%esp)</span></samp>&rsquo; in 32-bit mode.
<samp><span class="option">-mfence-as-lock-add=</span><var>no</var></samp> will encode lfence, mfence and
sfence as usual, which is the default.
<p><a name="index-g_t_0040samp_007b_002dmrelax_002drelocations_003d_007d-option_002c-i386-1119"></a><a name="index-g_t_0040samp_007b_002dmrelax_002drelocations_003d_007d-option_002c-x86_002d64-1120"></a><br><dt><code>-mrelax-relocations=</code><var>no</var><dt><code>-mrelax-relocations=</code><var>yes</var><dd>These options control whether the assembler should generate relax
relocations, R_386_GOT32X, in 32-bit mode, or R_X86_64_GOTPCRELX and
R_X86_64_REX_GOTPCRELX, in 64-bit mode.
<samp><span class="option">-mrelax-relocations=</span><var>yes</var></samp> will generate relax relocations.
<samp><span class="option">-mrelax-relocations=</span><var>no</var></samp> will not generate relax
relocations. The default can be controlled by a configure option
<samp><span class="option">--enable-x86-relax-relocations</span></samp>.
<p><a name="index-g_t_0040samp_007b_002dmx86_002dused_002dnote_003d_007d-option_002c-i386-1121"></a><a name="index-g_t_0040samp_007b_002dmx86_002dused_002dnote_003d_007d-option_002c-x86_002d64-1122"></a><br><dt><code>-mx86-used-note=</code><var>no</var><dt><code>-mx86-used-note=</code><var>yes</var><dd>These options control whether the assembler should generate
GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_FEATURE_2_USED
GNU property notes. The default can be controlled by the
<samp><span class="option">--enable-x86-used-note</span></samp> configure option.
<p><a name="index-g_t_0040samp_007b_002dmevexrcig_003d_007d-option_002c-i386-1123"></a><a name="index-g_t_0040samp_007b_002dmevexrcig_003d_007d-option_002c-x86_002d64-1124"></a><br><dt><code>-mevexrcig=</code><var>rne</var><dt><code>-mevexrcig=</code><var>rd</var><dt><code>-mevexrcig=</code><var>ru</var><dt><code>-mevexrcig=</code><var>rz</var><dd>These options control how the assembler should encode SAE-only
EVEX instructions. <samp><span class="option">-mevexrcig=</span><var>rne</var></samp> will encode RC bits
of EVEX instruction with 00, which is the default.
<samp><span class="option">-mevexrcig=</span><var>rd</var></samp>, <samp><span class="option">-mevexrcig=</span><var>ru</var></samp>
and <samp><span class="option">-mevexrcig=</span><var>rz</var></samp> will encode SAE-only EVEX instructions
with 01, 10 and 11 RC bits, respectively.
<p><a name="index-g_t_0040samp_007b_002dmamd64_007d-option_002c-x86_002d64-1125"></a><a name="index-g_t_0040samp_007b_002dmintel64_007d-option_002c-x86_002d64-1126"></a><br><dt><code>-mamd64</code><dt><code>-mintel64</code><dd>This option specifies that the assembler should accept only AMD64 or
Intel64 ISA in 64-bit mode. The default is to accept both.
<p><a name="index-g_t_0040samp_007b_002dO0_007d-option_002c-i386-1127"></a><a name="index-g_t_0040samp_007b_002dO0_007d-option_002c-x86_002d64-1128"></a><a name="index-g_t_0040samp_007b_002dO_007d-option_002c-i386-1129"></a><a name="index-g_t_0040samp_007b_002dO_007d-option_002c-x86_002d64-1130"></a><a name="index-g_t_0040samp_007b_002dO1_007d-option_002c-i386-1131"></a><a name="index-g_t_0040samp_007b_002dO1_007d-option_002c-x86_002d64-1132"></a><a name="index-g_t_0040samp_007b_002dO2_007d-option_002c-i386-1133"></a><a name="index-g_t_0040samp_007b_002dO2_007d-option_002c-x86_002d64-1134"></a><a name="index-g_t_0040samp_007b_002dOs_007d-option_002c-i386-1135"></a><a name="index-g_t_0040samp_007b_002dOs_007d-option_002c-x86_002d64-1136"></a><br><dt><code>-O0 | -O | -O1 | -O2 | -Os</code><dd>Optimize instruction encoding with smaller instruction size. &lsquo;<samp><span class="samp">-O</span></samp>&rsquo;
and &lsquo;<samp><span class="samp">-O1</span></samp>&rsquo; encode 64-bit register load instructions with 64-bit
immediate as 32-bit register load instructions with 31-bit or 32-bits
immediates, encode 64-bit register clearing instructions with 32-bit
register clearing instructions, encode 256-bit/512-bit VEX/EVEX vector
register clearing instructions with 128-bit VEX vector register
clearing instructions, encode 128-bit/256-bit EVEX vector
register load/store instructions with VEX vector register load/store
instructions, and encode 128-bit/256-bit EVEX packed integer logical
instructions with 128-bit/256-bit VEX packed integer logical.
<p>&lsquo;<samp><span class="samp">-O2</span></samp>&rsquo; includes &lsquo;<samp><span class="samp">-O1</span></samp>&rsquo; optimization plus encodes
256-bit/512-bit EVEX vector register clearing instructions with 128-bit
EVEX vector register clearing instructions. In 64-bit mode VEX encoded
instructions with commutative source operands will also have their
source operands swapped if this allows using the 2-byte VEX prefix form
instead of the 3-byte one. Certain forms of AND as well as OR with the
same (register) operand specified twice will also be changed to TEST.
<p>&lsquo;<samp><span class="samp">-Os</span></samp>&rsquo; includes &lsquo;<samp><span class="samp">-O2</span></samp>&rsquo; optimization plus encodes 16-bit, 32-bit
and 64-bit register tests with immediate as 8-bit register test with
immediate. &lsquo;<samp><span class="samp">-O0</span></samp>&rsquo; turns off this optimization.
</dl>
<!-- man end -->
</body></html>