The i386 version of as has a few machine
dependent options:
--32 | --x32 | --64These 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 –enable-64-bit-bfd to configure enable 64-bit
usage and use x86-64 as target platform).
-n--divide-march=CPU[+EXTENSION...]i8086,
i186,
i286,
i386,
i486,
i586,
i686,
pentium,
pentiumpro,
pentiumii,
pentiumiii,
pentium4,
prescott,
nocona,
core,
core2,
corei7,
l1om,
k1om,
iamcu,
k6,
k6_2,
athlon,
opteron,
k8,
amdfam10,
bdver1,
bdver2,
bdver3,
bdver4,
znver1,
znver2,
btver1,
btver2,
generic32 and
generic64.
In addition to the basic instruction set, the assembler can be told to
accept various extension mnemonics. For example,
-march=i686+sse4+vmx extends i686 with sse4 and
vmx. The following extensions are currently supported:
8087,
287,
387,
687,
no87,
no287,
no387,
no687,
cmov,
nocmov,
fxsr,
nofxsr,
mmx,
nommx,
sse,
sse2,
sse3,
ssse3,
sse4.1,
sse4.2,
sse4,
nosse,
nosse2,
nosse3,
nossse3,
nosse4.1,
nosse4.2,
nosse4,
avx,
avx2,
noavx,
noavx2,
adx,
rdseed,
prfchw,
smap,
mpx,
sha,
rdpid,
ptwrite,
cet,
gfni,
vaes,
vpclmulqdq,
prefetchwt1,
clflushopt,
se1,
clwb,
movdiri,
movdir64b,
avx512f,
avx512cd,
avx512er,
avx512pf,
avx512vl,
avx512bw,
avx512dq,
avx512ifma,
avx512vbmi,
avx512_4fmaps,
avx512_4vnniw,
avx512_vpopcntdq,
avx512_vbmi2,
avx512_vnni,
avx512_bitalg,
noavx512f,
noavx512cd,
noavx512er,
noavx512pf,
noavx512vl,
noavx512bw,
noavx512dq,
noavx512ifma,
noavx512vbmi,
noavx512_4fmaps,
noavx512_4vnniw,
noavx512_vpopcntdq,
noavx512_vbmi2,
noavx512_vnni,
noavx512_bitalg,
vmx,
vmfunc,
smx,
xsave,
xsaveopt,
xsavec,
xsaves,
aes,
pclmul,
fsgsbase,
rdrnd,
f16c,
bmi2,
fma,
movbe,
ept,
lzcnt,
hle,
rtm,
invpcid,
clflush,
mwaitx,
clzero,
wbnoinvd,
pconfig,
waitpkg,
cldemote,
lwp,
fma4,
xop,
cx16,
syscall,
rdtscp,
3dnow,
3dnowa,
sse4a,
sse5,
svme,
abm and
padlock.
Note that rather than extending a basic instruction set, the extension
mnemonics starting with no revoke the respective functionality.
When the .arch directive is used with -march, the
.arch directive will take precedent.
-mtune=CPUValid CPU values are identical to the processor list of -march=CPU.
-msse2avx-msse-check=none-msse-check=warning-msse-check=error-mavxscalar=128-mavxscalar=256-mvexwig=0-mvexwig=1-mevexlig=128-mevexlig=256-mevexlig=512-mevexwig=0-mevexwig=1-mmnemonic=att-mmnemonic=intel.att_mnemonic and .intel_mnemonic directives will
take precedent.
-msyntax=att-msyntax=intel.att_syntax and .intel_syntax directives will
take precedent.
-mnaked-reg.att_syntax and .intel_syntax directives will take precedent.
-madd-bnd-prefix-mno-shared-mbig-obj-momit-lock-prefix=no-momit-lock-prefix=yes-mfence-as-lock-add=no-mfence-as-lock-add=yes-mrelax-relocations=no-mrelax-relocations=yes-mx86-used-note=no-mx86-used-note=yes-mevexrcig=rne-mevexrcig=rd-mevexrcig=ru-mevexrcig=rz-mamd64-mintel64-O0 | -O | -O1 | -O2 | -Os