extend.texi: Use "x86"...
2015-01-31 Sandra Loosemore <sandra@codesourcery.com> gcc/ * doc/extend.texi: Use "x86", "x86-32", and "x86-64" as the preferred names of the architecture and its 32- and 64-bit variants. * doc/invoke.texi: Likewise. * doc/md.texi: Likewise. From-SVN: r220309
This commit is contained in:
parent
407028931a
commit
7d47d0a1b8
@ -1,3 +1,11 @@
|
|||||||
|
2015-01-31 Sandra Loosemore <sandra@codesourcery.com>
|
||||||
|
|
||||||
|
* doc/extend.texi: Use "x86", "x86-32", and "x86-64" as the
|
||||||
|
preferred names of the architecture and its 32- and 64-bit
|
||||||
|
variants.
|
||||||
|
* doc/invoke.texi: Likewise.
|
||||||
|
* doc/md.texi: Likewise.
|
||||||
|
|
||||||
2015-01-29 David Malcolm <dmalcolm@redhat.com>
|
2015-01-29 David Malcolm <dmalcolm@redhat.com>
|
||||||
|
|
||||||
PR jit/64780
|
PR jit/64780
|
||||||
|
@ -971,7 +971,7 @@ typedef _Complex float __attribute__((mode(XC))) _Complex80;
|
|||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
Not all targets support additional floating-point types. @code{__float80}
|
Not all targets support additional floating-point types. @code{__float80}
|
||||||
and @code{__float128} types are supported on i386, x86_64 and IA-64 targets.
|
and @code{__float128} types are supported on x86 and IA-64 targets.
|
||||||
The @code{__float128} type is supported on hppa HP-UX targets.
|
The @code{__float128} type is supported on hppa HP-UX targets.
|
||||||
|
|
||||||
@node Half-Precision
|
@node Half-Precision
|
||||||
@ -2178,10 +2178,10 @@ the enclosing block.
|
|||||||
@cindex @code{const} applied to function
|
@cindex @code{const} applied to function
|
||||||
@cindex functions with @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style arguments
|
@cindex functions with @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style arguments
|
||||||
@cindex functions with non-null pointer arguments
|
@cindex functions with non-null pointer arguments
|
||||||
@cindex functions that are passed arguments in registers on the 386
|
@cindex functions that are passed arguments in registers on x86-32
|
||||||
@cindex functions that pop the argument stack on the 386
|
@cindex functions that pop the argument stack on x86-32
|
||||||
@cindex functions that do not pop the argument stack on the 386
|
@cindex functions that do not pop the argument stack on x86-32
|
||||||
@cindex functions that have different compilation options on the 386
|
@cindex functions that have different compilation options on x86-32
|
||||||
@cindex functions that have different optimization options
|
@cindex functions that have different optimization options
|
||||||
@cindex functions that are dynamically resolved
|
@cindex functions that are dynamically resolved
|
||||||
|
|
||||||
@ -2426,9 +2426,9 @@ is diagnosed earlier and with exact location of the call even in presence
|
|||||||
of inline functions or when not emitting debugging information.
|
of inline functions or when not emitting debugging information.
|
||||||
|
|
||||||
@item cdecl
|
@item cdecl
|
||||||
@cindex functions that do pop the argument stack on the 386
|
@cindex functions that do pop the argument stack on x86-32
|
||||||
@opindex mrtd
|
@opindex mrtd
|
||||||
On the Intel 386, the @code{cdecl} attribute causes the compiler to
|
On the x86-32 targets, the @code{cdecl} attribute causes the compiler to
|
||||||
assume that the calling function pops off the stack space used to
|
assume that the calling function pops off the stack space used to
|
||||||
pass arguments. This is
|
pass arguments. This is
|
||||||
useful to override the effects of the @option{-mrtd} switch.
|
useful to override the effects of the @option{-mrtd} switch.
|
||||||
@ -2677,8 +2677,8 @@ function is a fast interrupt handler. This is just like the
|
|||||||
instead of @code{reit}.
|
instead of @code{reit}.
|
||||||
|
|
||||||
@item fastcall
|
@item fastcall
|
||||||
@cindex functions that pop the argument stack on the 386
|
@cindex functions that pop the argument stack on x86-32
|
||||||
On the Intel 386, the @code{fastcall} attribute causes the compiler to
|
On x86-32 targets, the @code{fastcall} attribute causes the compiler to
|
||||||
pass the first argument (if of integral type) in the register ECX and
|
pass the first argument (if of integral type) in the register ECX and
|
||||||
the second argument (if of integral type) in the register EDX@. Subsequent
|
the second argument (if of integral type) in the register EDX@. Subsequent
|
||||||
and other typed arguments are passed on the stack. The called function
|
and other typed arguments are passed on the stack. The called function
|
||||||
@ -2686,8 +2686,8 @@ pops the arguments off the stack. If the number of arguments is variable all
|
|||||||
arguments are pushed on the stack.
|
arguments are pushed on the stack.
|
||||||
|
|
||||||
@item thiscall
|
@item thiscall
|
||||||
@cindex functions that pop the argument stack on the 386
|
@cindex functions that pop the argument stack on x86-32
|
||||||
On the Intel 386, the @code{thiscall} attribute causes the compiler to
|
On x86-32 targets, the @code{thiscall} attribute causes the compiler to
|
||||||
pass the first argument (if of integral type) in the register ECX.
|
pass the first argument (if of integral type) in the register ECX.
|
||||||
Subsequent and other typed arguments are passed on the stack. The called
|
Subsequent and other typed arguments are passed on the stack. The called
|
||||||
function pops the arguments off the stack.
|
function pops the arguments off the stack.
|
||||||
@ -3344,7 +3344,7 @@ defined by shared libraries.
|
|||||||
@cindex @code{ms_abi} attribute
|
@cindex @code{ms_abi} attribute
|
||||||
@cindex @code{sysv_abi} attribute
|
@cindex @code{sysv_abi} attribute
|
||||||
|
|
||||||
On 32-bit and 64-bit (i?86|x86_64)-*-* targets, you can use an ABI attribute
|
On 32-bit and 64-bit x86 targets, you can use an ABI attribute
|
||||||
to indicate which calling convention should be used for a function. The
|
to indicate which calling convention should be used for a function. The
|
||||||
@code{ms_abi} attribute tells the compiler to use the Microsoft ABI,
|
@code{ms_abi} attribute tells the compiler to use the Microsoft ABI,
|
||||||
while the @code{sysv_abi} attribute tells the compiler to use the ABI
|
while the @code{sysv_abi} attribute tells the compiler to use the ABI
|
||||||
@ -3357,21 +3357,21 @@ requires the @option{-maccumulate-outgoing-args} option.
|
|||||||
@item callee_pop_aggregate_return (@var{number})
|
@item callee_pop_aggregate_return (@var{number})
|
||||||
@cindex @code{callee_pop_aggregate_return} attribute
|
@cindex @code{callee_pop_aggregate_return} attribute
|
||||||
|
|
||||||
On 32-bit i?86-*-* targets, you can use this attribute to control how
|
On x86-32 targets, you can use this attribute to control how
|
||||||
aggregates are returned in memory. If the caller is responsible for
|
aggregates are returned in memory. If the caller is responsible for
|
||||||
popping the hidden pointer together with the rest of the arguments, specify
|
popping the hidden pointer together with the rest of the arguments, specify
|
||||||
@var{number} equal to zero. If callee is responsible for popping the
|
@var{number} equal to zero. If callee is responsible for popping the
|
||||||
hidden pointer, specify @var{number} equal to one.
|
hidden pointer, specify @var{number} equal to one.
|
||||||
|
|
||||||
The default i386 ABI assumes that the callee pops the
|
The default x86-32 ABI assumes that the callee pops the
|
||||||
stack for hidden pointer. However, on 32-bit i386 Microsoft Windows targets,
|
stack for hidden pointer. However, on x86-32 Microsoft Windows targets,
|
||||||
the compiler assumes that the
|
the compiler assumes that the
|
||||||
caller pops the stack for hidden pointer.
|
caller pops the stack for hidden pointer.
|
||||||
|
|
||||||
@item ms_hook_prologue
|
@item ms_hook_prologue
|
||||||
@cindex @code{ms_hook_prologue} attribute
|
@cindex @code{ms_hook_prologue} attribute
|
||||||
|
|
||||||
On 32-bit i[34567]86-*-* targets and 64-bit x86_64-*-* targets, you can use
|
On 32-bit and 64-bit x86 targets, you can use
|
||||||
this function attribute to make GCC generate the ``hot-patching'' function
|
this function attribute to make GCC generate the ``hot-patching'' function
|
||||||
prologue used in Win32 API functions in Microsoft Windows XP Service Pack 2
|
prologue used in Win32 API functions in Microsoft Windows XP Service Pack 2
|
||||||
and newer.
|
and newer.
|
||||||
@ -3763,8 +3763,8 @@ with @option{-fchkp-instrument-marked-only} option.
|
|||||||
|
|
||||||
@item regparm (@var{number})
|
@item regparm (@var{number})
|
||||||
@cindex @code{regparm} attribute
|
@cindex @code{regparm} attribute
|
||||||
@cindex functions that are passed arguments in registers on the 386
|
@cindex functions that are passed arguments in registers on x86-32
|
||||||
On the Intel 386, the @code{regparm} attribute causes the compiler to
|
On x86-32 targets, the @code{regparm} attribute causes the compiler to
|
||||||
pass arguments number one to @var{number} if they are of integral type
|
pass arguments number one to @var{number} if they are of integral type
|
||||||
in registers EAX, EDX, and ECX instead of on the stack. Functions that
|
in registers EAX, EDX, and ECX instead of on the stack. Functions that
|
||||||
take a variable number of arguments continue to be passed all of their
|
take a variable number of arguments continue to be passed all of their
|
||||||
@ -3798,7 +3798,7 @@ Provide a user-defined function to handle warm reset exception.
|
|||||||
|
|
||||||
@item sseregparm
|
@item sseregparm
|
||||||
@cindex @code{sseregparm} attribute
|
@cindex @code{sseregparm} attribute
|
||||||
On the Intel 386 with SSE support, the @code{sseregparm} attribute
|
On x86-32 targets with SSE support, the @code{sseregparm} attribute
|
||||||
causes the compiler to pass up to 3 floating-point arguments in
|
causes the compiler to pass up to 3 floating-point arguments in
|
||||||
SSE registers instead of on the stack. Functions that take a
|
SSE registers instead of on the stack. Functions that take a
|
||||||
variable number of arguments continue to pass all of their
|
variable number of arguments continue to pass all of their
|
||||||
@ -3806,7 +3806,7 @@ floating-point arguments on the stack.
|
|||||||
|
|
||||||
@item force_align_arg_pointer
|
@item force_align_arg_pointer
|
||||||
@cindex @code{force_align_arg_pointer} attribute
|
@cindex @code{force_align_arg_pointer} attribute
|
||||||
On the Intel x86, the @code{force_align_arg_pointer} attribute may be
|
On x86 targets, the @code{force_align_arg_pointer} attribute may be
|
||||||
applied to individual function definitions, generating an alternate
|
applied to individual function definitions, generating an alternate
|
||||||
prologue and epilogue that realigns the run-time stack if necessary.
|
prologue and epilogue that realigns the run-time stack if necessary.
|
||||||
This supports mixing legacy codes that run with a 4-byte aligned stack
|
This supports mixing legacy codes that run with a 4-byte aligned stack
|
||||||
@ -3952,8 +3952,8 @@ void f () __attribute__ ((interrupt_handler,
|
|||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
@item stdcall
|
@item stdcall
|
||||||
@cindex functions that pop the argument stack on the 386
|
@cindex functions that pop the argument stack on x86-32
|
||||||
On the Intel 386, the @code{stdcall} attribute causes the compiler to
|
On x86-32 targets, the @code{stdcall} attribute causes the compiler to
|
||||||
assume that the called function pops off the stack space used to
|
assume that the called function pops off the stack space used to
|
||||||
pass arguments, unless it takes a variable number of arguments.
|
pass arguments, unless it takes a variable number of arguments.
|
||||||
|
|
||||||
@ -3976,7 +3976,7 @@ more than one function to be compiled with specific target options.
|
|||||||
@xref{Function Specific Option Pragmas}, for details about the
|
@xref{Function Specific Option Pragmas}, for details about the
|
||||||
@samp{#pragma GCC target} pragma.
|
@samp{#pragma GCC target} pragma.
|
||||||
|
|
||||||
For instance on a 386, you could compile one function with
|
For instance on an x86, you could compile one function with
|
||||||
@code{target("sse4.1,arch=core2")} and another with
|
@code{target("sse4.1,arch=core2")} and another with
|
||||||
@code{target("sse4a,arch=amdfam10")}. This is equivalent to
|
@code{target("sse4a,arch=amdfam10")}. This is equivalent to
|
||||||
compiling the first function with @option{-msse4.1} and
|
compiling the first function with @option{-msse4.1} and
|
||||||
@ -3984,7 +3984,7 @@ compiling the first function with @option{-msse4.1} and
|
|||||||
@option{-msse4a} and @option{-march=amdfam10} options. It is up to the
|
@option{-msse4a} and @option{-march=amdfam10} options. It is up to the
|
||||||
user to make sure that a function is only invoked on a machine that
|
user to make sure that a function is only invoked on a machine that
|
||||||
supports the particular ISA it is compiled for (for example by using
|
supports the particular ISA it is compiled for (for example by using
|
||||||
@code{cpuid} on 386 to determine what feature bits and architecture
|
@code{cpuid} on x86 to determine what feature bits and architecture
|
||||||
family are used).
|
family are used).
|
||||||
|
|
||||||
@smallexample
|
@smallexample
|
||||||
@ -3997,10 +3997,10 @@ strings to specify multiple options, or separate the options
|
|||||||
with a comma (@samp{,}).
|
with a comma (@samp{,}).
|
||||||
|
|
||||||
The @code{target} attribute is presently implemented for
|
The @code{target} attribute is presently implemented for
|
||||||
i386/x86_64, PowerPC, and Nios II targets only.
|
x86, PowerPC, and Nios II targets only.
|
||||||
The options supported are specific to each target.
|
The options supported are specific to each target.
|
||||||
|
|
||||||
On the 386, the following options are allowed:
|
On the x86, the following options are allowed:
|
||||||
|
|
||||||
@table @samp
|
@table @samp
|
||||||
@item abm
|
@item abm
|
||||||
@ -4345,7 +4345,7 @@ named @var{name}.
|
|||||||
@xref{Nios II Options}, for more information.
|
@xref{Nios II Options}, for more information.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
On the 386/x86_64 and PowerPC back ends, the inliner does not inline a
|
On the x86 and PowerPC back ends, the inliner does not inline a
|
||||||
function that has different target options than the caller, unless the
|
function that has different target options than the caller, unless the
|
||||||
callee has a subset of the target options of the caller. For example
|
callee has a subset of the target options of the caller. For example
|
||||||
a function declared with @code{target("sse3")} can inline a function
|
a function declared with @code{target("sse3")} can inline a function
|
||||||
@ -5521,11 +5521,11 @@ int cpu_clock __attribute__((cb(0x123)));
|
|||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@anchor{i386 Variable Attributes}
|
@anchor{x86 Variable Attributes}
|
||||||
@subsection i386 Variable Attributes
|
@subsection x86 Variable Attributes
|
||||||
|
|
||||||
Two attributes are currently defined for i386 configurations:
|
Two attributes are currently defined for x86 configurations:
|
||||||
@code{ms_struct} and @code{gcc_struct}
|
@code{ms_struct} and @code{gcc_struct}.
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@item ms_struct
|
@item ms_struct
|
||||||
@ -5540,7 +5540,7 @@ data between functions compiled with GCC and the native Microsoft compiler
|
|||||||
(either via function call or as data in a file), it may be necessary to access
|
(either via function call or as data in a file), it may be necessary to access
|
||||||
either format.
|
either format.
|
||||||
|
|
||||||
Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows X86
|
Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows x86
|
||||||
compilers to match the native Microsoft compiler.
|
compilers to match the native Microsoft compiler.
|
||||||
|
|
||||||
The Microsoft structure layout algorithm is fairly simple with the exception
|
The Microsoft structure layout algorithm is fairly simple with the exception
|
||||||
@ -5665,7 +5665,7 @@ Three attributes currently are defined for PowerPC configurations:
|
|||||||
@code{altivec}, @code{ms_struct} and @code{gcc_struct}.
|
@code{altivec}, @code{ms_struct} and @code{gcc_struct}.
|
||||||
|
|
||||||
For full documentation of the struct attributes please see the
|
For full documentation of the struct attributes please see the
|
||||||
documentation in @ref{i386 Variable Attributes}.
|
documentation in @ref{x86 Variable Attributes}.
|
||||||
|
|
||||||
For documentation of @code{altivec} attribute please see the
|
For documentation of @code{altivec} attribute please see the
|
||||||
documentation in @ref{PowerPC Type Attributes}.
|
documentation in @ref{PowerPC Type Attributes}.
|
||||||
@ -6078,10 +6078,10 @@ Specifically, the @code{based}, @code{tiny}, @code{near}, and
|
|||||||
@code{far} attributes may be applied to either. The @code{io} and
|
@code{far} attributes may be applied to either. The @code{io} and
|
||||||
@code{cb} attributes may not be applied to types.
|
@code{cb} attributes may not be applied to types.
|
||||||
|
|
||||||
@anchor{i386 Type Attributes}
|
@anchor{x86 Type Attributes}
|
||||||
@subsection i386 Type Attributes
|
@subsection x86 Type Attributes
|
||||||
|
|
||||||
Two attributes are currently defined for i386 configurations:
|
Two attributes are currently defined for x86 configurations:
|
||||||
@code{ms_struct} and @code{gcc_struct}.
|
@code{ms_struct} and @code{gcc_struct}.
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@ -6098,7 +6098,7 @@ data between functions compiled with GCC and the native Microsoft compiler
|
|||||||
(either via function call or as data in a file), it may be necessary to access
|
(either via function call or as data in a file), it may be necessary to access
|
||||||
either format.
|
either format.
|
||||||
|
|
||||||
Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows X86
|
Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows x86
|
||||||
compilers to match the native Microsoft compiler.
|
compilers to match the native Microsoft compiler.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@ -6109,7 +6109,7 @@ Three attributes currently are defined for PowerPC configurations:
|
|||||||
@code{altivec}, @code{ms_struct} and @code{gcc_struct}.
|
@code{altivec}, @code{ms_struct} and @code{gcc_struct}.
|
||||||
|
|
||||||
For full documentation of the @code{ms_struct} and @code{gcc_struct}
|
For full documentation of the @code{ms_struct} and @code{gcc_struct}
|
||||||
attributes please see the documentation in @ref{i386 Type Attributes}.
|
attributes please see the documentation in @ref{x86 Type Attributes}.
|
||||||
|
|
||||||
The @code{altivec} attribute allows one to declare AltiVec vector data
|
The @code{altivec} attribute allows one to declare AltiVec vector data
|
||||||
types supported by the AltiVec Programming Interface Manual. The
|
types supported by the AltiVec Programming Interface Manual. The
|
||||||
@ -6662,7 +6662,7 @@ void do_print(uint32_t dwSomeValue)
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
The following example demonstrates a case where you need to use the
|
The following example demonstrates a case where you need to use the
|
||||||
@code{volatile} qualifier. It uses the i386 RDTSC instruction, which reads
|
@code{volatile} qualifier. It uses the x86 RDTSC instruction, which reads
|
||||||
the computer's time-stamp counter. Without the @code{volatile} qualifier,
|
the computer's time-stamp counter. Without the @code{volatile} qualifier,
|
||||||
the optimizers might assume that the @code{asm} block will always return the
|
the optimizers might assume that the @code{asm} block will always return the
|
||||||
same value and therefore optimize away the second call.
|
same value and therefore optimize away the second call.
|
||||||
@ -6755,7 +6755,7 @@ Since GCC does not parse the AssemblerTemplate, it has no visibility of any
|
|||||||
symbols it references. This may result in GCC discarding those symbols as
|
symbols it references. This may result in GCC discarding those symbols as
|
||||||
unreferenced unless they are also listed as input, output, or goto operands.
|
unreferenced unless they are also listed as input, output, or goto operands.
|
||||||
|
|
||||||
GCC can support multiple assembler dialects (for example, GCC for i386
|
GCC can support multiple assembler dialects (for example, GCC for x86
|
||||||
supports "att" and "intel" dialects) for inline assembler. In builds that
|
supports "att" and "intel" dialects) for inline assembler. In builds that
|
||||||
support this capability, the @option{-masm} option controls which dialect
|
support this capability, the @option{-masm} option controls which dialect
|
||||||
GCC uses as its default. The hardware-specific documentation for the
|
GCC uses as its default. The hardware-specific documentation for the
|
||||||
@ -6779,7 +6779,7 @@ This construct outputs 'dialect0' when using dialect #0 to compile the code,
|
|||||||
braces than the number of dialects the compiler supports, the construct
|
braces than the number of dialects the compiler supports, the construct
|
||||||
outputs nothing.
|
outputs nothing.
|
||||||
|
|
||||||
For example, if an i386 compiler supports two dialects (att, intel), an
|
For example, if an x86 compiler supports two dialects (att, intel), an
|
||||||
assembler template such as this:
|
assembler template such as this:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@ -6927,8 +6927,8 @@ will be undefined if @var{a} is modified before using @var{b}.
|
|||||||
|
|
||||||
@code{asm} supports operand modifiers on operands (for example @code{%k2}
|
@code{asm} supports operand modifiers on operands (for example @code{%k2}
|
||||||
instead of simply @code{%2}). Typically these qualifiers are hardware
|
instead of simply @code{%2}). Typically these qualifiers are hardware
|
||||||
dependent. The list of supported modifiers for i386 is found at
|
dependent. The list of supported modifiers for x86 is found at
|
||||||
@ref{i386Operandmodifiers,i386 Operand modifiers}.
|
@ref{x86Operandmodifiers,x86 Operand modifiers}.
|
||||||
|
|
||||||
If the C code that follows the @code{asm} makes no use of any of the output
|
If the C code that follows the @code{asm} makes no use of any of the output
|
||||||
operands, use @code{volatile} for the @code{asm} statement to prevent the
|
operands, use @code{volatile} for the @code{asm} statement to prevent the
|
||||||
@ -7069,8 +7069,8 @@ The total number of input + output + goto operands has a limit of 30.
|
|||||||
|
|
||||||
@code{asm} supports operand modifiers on operands (for example @code{%k2}
|
@code{asm} supports operand modifiers on operands (for example @code{%k2}
|
||||||
instead of simply @code{%2}). Typically these qualifiers are hardware
|
instead of simply @code{%2}). Typically these qualifiers are hardware
|
||||||
dependent. The list of supported modifiers for i386 is found at
|
dependent. The list of supported modifiers for x86 is found at
|
||||||
@ref{i386Operandmodifiers,i386 Operand modifiers}.
|
@ref{x86Operandmodifiers,x86 Operand modifiers}.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
@ -7229,12 +7229,12 @@ error:
|
|||||||
@}
|
@}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@anchor{i386Operandmodifiers}
|
@anchor{x86Operandmodifiers}
|
||||||
@subsubsection i386 Operand modifiers
|
@subsubsection x86 Operand modifiers
|
||||||
|
|
||||||
Input, output, and goto operands for extended @code{asm} statements can use
|
Input, output, and goto operands for extended @code{asm} statements can use
|
||||||
modifiers to affect the code output to the assembler. For example, the
|
modifiers to affect the code output to the assembler. For example, the
|
||||||
following code uses the "h" and "b" modifiers for i386:
|
following code uses the "h" and "b" modifiers for x86:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
uint16_t num;
|
uint16_t num;
|
||||||
@ -7326,10 +7326,10 @@ The table below shows the list of supported modifiers and their effects.
|
|||||||
@tab @code{2}
|
@tab @code{2}
|
||||||
@end multitable
|
@end multitable
|
||||||
|
|
||||||
@anchor{i386floatingpointasmoperands}
|
@anchor{x86floatingpointasmoperands}
|
||||||
@subsubsection i386 floating-point asm operands
|
@subsubsection x86 floating-point asm operands
|
||||||
|
|
||||||
On i386 targets, there are several rules on the usage of stack-like registers
|
On x86 targets, there are several rules on the usage of stack-like registers
|
||||||
in the operands of an @code{asm}. These rules apply only to the operands
|
in the operands of an @code{asm}. These rules apply only to the operands
|
||||||
that are stack-like registers:
|
that are stack-like registers:
|
||||||
|
|
||||||
@ -7922,7 +7922,7 @@ purposes.
|
|||||||
|
|
||||||
On some targets, the instruction set contains SIMD vector instructions which
|
On some targets, the instruction set contains SIMD vector instructions which
|
||||||
operate on multiple values contained in one large register at the same time.
|
operate on multiple values contained in one large register at the same time.
|
||||||
For example, on the i386 the MMX, 3DNow!@: and SSE extensions can be used
|
For example, on the x86 the MMX, 3DNow!@: and SSE extensions can be used
|
||||||
this way.
|
this way.
|
||||||
|
|
||||||
The first step in using these extensions is to provide the necessary data
|
The first step in using these extensions is to provide the necessary data
|
||||||
@ -8594,7 +8594,7 @@ functions above, except they perform multiplication, instead of addition.
|
|||||||
@node x86 specific memory model extensions for transactional memory
|
@node x86 specific memory model extensions for transactional memory
|
||||||
@section x86 specific memory model extensions for transactional memory
|
@section x86 specific memory model extensions for transactional memory
|
||||||
|
|
||||||
The i386 architecture supports additional memory ordering flags
|
The x86 architecture supports additional memory ordering flags
|
||||||
to mark lock critical sections for hardware lock elision.
|
to mark lock critical sections for hardware lock elision.
|
||||||
These must be specified in addition to an existing memory model to
|
These must be specified in addition to an existing memory model to
|
||||||
atomic intrinsics.
|
atomic intrinsics.
|
||||||
@ -10113,8 +10113,8 @@ instructions, but allow the compiler to schedule those calls.
|
|||||||
* AVR Built-in Functions::
|
* AVR Built-in Functions::
|
||||||
* Blackfin Built-in Functions::
|
* Blackfin Built-in Functions::
|
||||||
* FR-V Built-in Functions::
|
* FR-V Built-in Functions::
|
||||||
* X86 Built-in Functions::
|
* x86 Built-in Functions::
|
||||||
* X86 transactional memory intrinsics::
|
* x86 transactional memory intrinsics::
|
||||||
* MIPS DSP Built-in Functions::
|
* MIPS DSP Built-in Functions::
|
||||||
* MIPS Paired-Single Support::
|
* MIPS Paired-Single Support::
|
||||||
* MIPS Loongson Built-in Functions::
|
* MIPS Loongson Built-in Functions::
|
||||||
@ -11484,10 +11484,10 @@ Use the @code{nldub} instruction to load the contents of address @var{x}
|
|||||||
into the data cache. The instruction is issued in slot I1@.
|
into the data cache. The instruction is issued in slot I1@.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node X86 Built-in Functions
|
@node x86 Built-in Functions
|
||||||
@subsection X86 Built-in Functions
|
@subsection x86 Built-in Functions
|
||||||
|
|
||||||
These built-in functions are available for the i386 and x86-64 family
|
These built-in functions are available for the x86-32 and x86-64 family
|
||||||
of computers, depending on the command-line switches used.
|
of computers, depending on the command-line switches used.
|
||||||
|
|
||||||
If you specify command-line switches such as @option{-msse},
|
If you specify command-line switches such as @option{-msse},
|
||||||
@ -12879,7 +12879,7 @@ v2si __builtin_ia32_pswapdsi (v2si)
|
|||||||
The following built-in functions are available when @option{-mrtm} is used
|
The following built-in functions are available when @option{-mrtm} is used
|
||||||
They are used for restricted transactional memory. These are the internal
|
They are used for restricted transactional memory. These are the internal
|
||||||
low level functions. Normally the functions in
|
low level functions. Normally the functions in
|
||||||
@ref{X86 transactional memory intrinsics} should be used instead.
|
@ref{x86 transactional memory intrinsics} should be used instead.
|
||||||
|
|
||||||
@smallexample
|
@smallexample
|
||||||
int __builtin_ia32_xbegin ()
|
int __builtin_ia32_xbegin ()
|
||||||
@ -12888,10 +12888,10 @@ void __builtin_ia32_xabort (status)
|
|||||||
int __builtin_ia32_xtest ()
|
int __builtin_ia32_xtest ()
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
@node X86 transactional memory intrinsics
|
@node x86 transactional memory intrinsics
|
||||||
@subsection X86 transaction memory intrinsics
|
@subsection x86 transaction memory intrinsics
|
||||||
|
|
||||||
Hardware transactional memory intrinsics for i386. These allow to use
|
Hardware transactional memory intrinsics for x86. These allow to use
|
||||||
memory transactions with RTM (Restricted Transactional Memory).
|
memory transactions with RTM (Restricted Transactional Memory).
|
||||||
For using HLE (Hardware Lock Elision) see @ref{x86 specific memory model extensions for transactional memory} instead.
|
For using HLE (Hardware Lock Elision) see @ref{x86 specific memory model extensions for transactional memory} instead.
|
||||||
This support is enabled with the @option{-mrtm} option.
|
This support is enabled with the @option{-mrtm} option.
|
||||||
@ -17603,7 +17603,7 @@ multiple @code{#pragma pack(@var{n})} instances and finalized by a single
|
|||||||
@code{#pragma pack(pop)}.
|
@code{#pragma pack(pop)}.
|
||||||
@end enumerate
|
@end enumerate
|
||||||
|
|
||||||
Some targets, e.g.@: i386 and PowerPC, support the @code{ms_struct}
|
Some targets, e.g.@: x86 and PowerPC, support the @code{ms_struct}
|
||||||
@code{#pragma} which lays out a structure as the documented
|
@code{#pragma} which lays out a structure as the documented
|
||||||
@code{__attribute__ ((ms_struct))}.
|
@code{__attribute__ ((ms_struct))}.
|
||||||
@enumerate
|
@enumerate
|
||||||
@ -17796,7 +17796,7 @@ function. The parenthesis around the options is optional.
|
|||||||
@code{target} attribute and the attribute syntax.
|
@code{target} attribute and the attribute syntax.
|
||||||
|
|
||||||
The @code{#pragma GCC target} pragma is presently implemented for
|
The @code{#pragma GCC target} pragma is presently implemented for
|
||||||
i386/x86_64, PowerPC, and Nios II targets only.
|
x86, PowerPC, and Nios II targets only.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@ -18827,7 +18827,7 @@ See also @ref{Namespace Association}.
|
|||||||
@section Function Multiversioning
|
@section Function Multiversioning
|
||||||
@cindex function versions
|
@cindex function versions
|
||||||
|
|
||||||
With the GNU C++ front end, for target i386, you may specify multiple
|
With the GNU C++ front end, for x86 targets, you may specify multiple
|
||||||
versions of a function, where each function is specialized for a
|
versions of a function, where each function is specialized for a
|
||||||
specific target feature. At runtime, the appropriate version of the
|
specific target feature. At runtime, the appropriate version of the
|
||||||
function is automatically executed depending on the characteristics of
|
function is automatically executed depending on the characteristics of
|
||||||
|
@ -676,7 +676,7 @@ Objective-C and Objective-C++ Dialects}.
|
|||||||
-mschedule=@var{cpu-type} -mspace-regs -msio -mwsio @gol
|
-mschedule=@var{cpu-type} -mspace-regs -msio -mwsio @gol
|
||||||
-munix=@var{unix-std} -nolibdld -static -threads}
|
-munix=@var{unix-std} -nolibdld -static -threads}
|
||||||
|
|
||||||
@emph{i386 and x86-64 Options}
|
@emph{x86 Options}
|
||||||
@gccoptlist{-mtune=@var{cpu-type} -march=@var{cpu-type} @gol
|
@gccoptlist{-mtune=@var{cpu-type} -march=@var{cpu-type} @gol
|
||||||
-mtune-ctrl=@var{feature-list} -mdump-tune-features -mno-default @gol
|
-mtune-ctrl=@var{feature-list} -mdump-tune-features -mno-default @gol
|
||||||
-mfpmath=@var{unit} @gol
|
-mfpmath=@var{unit} @gol
|
||||||
@ -709,7 +709,7 @@ Objective-C and Objective-C++ Dialects}.
|
|||||||
-mavx256-split-unaligned-load -mavx256-split-unaligned-store @gol
|
-mavx256-split-unaligned-load -mavx256-split-unaligned-store @gol
|
||||||
-malign-data=@var{type} -mstack-protector-guard=@var{guard}}
|
-malign-data=@var{type} -mstack-protector-guard=@var{guard}}
|
||||||
|
|
||||||
@emph{i386 and x86-64 Windows Options}
|
@emph{x86 Windows Options}
|
||||||
@gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll @gol
|
@gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll @gol
|
||||||
-mnop-fun-dllimport -mthread @gol
|
-mnop-fun-dllimport -mthread @gol
|
||||||
-municode -mwin32 -mwindows -fno-set-stack-executable}
|
-municode -mwin32 -mwindows -fno-set-stack-executable}
|
||||||
@ -1081,9 +1081,6 @@ See RS/6000 and PowerPC Options.
|
|||||||
@gccoptlist{-mrtp -non-static -Bstatic -Bdynamic @gol
|
@gccoptlist{-mrtp -non-static -Bstatic -Bdynamic @gol
|
||||||
-Xbind-lazy -Xbind-now}
|
-Xbind-lazy -Xbind-now}
|
||||||
|
|
||||||
@emph{x86-64 Options}
|
|
||||||
See i386 and x86-64 Options.
|
|
||||||
|
|
||||||
@emph{Xstormy16 Options}
|
@emph{Xstormy16 Options}
|
||||||
@gccoptlist{-msim}
|
@gccoptlist{-msim}
|
||||||
|
|
||||||
@ -1964,7 +1961,7 @@ Some cases of unnamed fields in structures and unions are only
|
|||||||
accepted with this option. @xref{Unnamed Fields,,Unnamed struct/union
|
accepted with this option. @xref{Unnamed Fields,,Unnamed struct/union
|
||||||
fields within structs/unions}, for details.
|
fields within structs/unions}, for details.
|
||||||
|
|
||||||
Note that this option is off for all targets but i?86 and x86_64
|
Note that this option is off for all targets but x86
|
||||||
targets using ms-abi.
|
targets using ms-abi.
|
||||||
|
|
||||||
@item -fplan9-extensions
|
@item -fplan9-extensions
|
||||||
@ -11955,8 +11952,8 @@ platform.
|
|||||||
* GNU/Linux Options::
|
* GNU/Linux Options::
|
||||||
* H8/300 Options::
|
* H8/300 Options::
|
||||||
* HPPA Options::
|
* HPPA Options::
|
||||||
* i386 and x86-64 Options::
|
* x86 Options::
|
||||||
* i386 and x86-64 Windows Options::
|
* x86 Windows Options::
|
||||||
* IA-64 Options::
|
* IA-64 Options::
|
||||||
* LM32 Options::
|
* LM32 Options::
|
||||||
* M32C Options::
|
* M32C Options::
|
||||||
@ -11992,7 +11989,6 @@ platform.
|
|||||||
* Visium Options::
|
* Visium Options::
|
||||||
* VMS Options::
|
* VMS Options::
|
||||||
* VxWorks Options::
|
* VxWorks Options::
|
||||||
* x86-64 Options::
|
|
||||||
* Xstormy16 Options::
|
* Xstormy16 Options::
|
||||||
* Xtensa Options::
|
* Xtensa Options::
|
||||||
* zSeries Options::
|
* zSeries Options::
|
||||||
@ -15365,15 +15361,11 @@ under HP-UX@. This option sets flags for both the preprocessor and
|
|||||||
linker.
|
linker.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node i386 and x86-64 Options
|
@node x86 Options
|
||||||
@subsection Intel 386 and AMD x86-64 Options
|
@subsection x86 Options
|
||||||
@cindex i386 Options
|
@cindex x86 Options
|
||||||
@cindex x86-64 Options
|
|
||||||
@cindex Intel 386 Options
|
|
||||||
@cindex AMD x86-64 Options
|
|
||||||
|
|
||||||
These @samp{-m} options are defined for the i386 and x86-64 family of
|
These @samp{-m} options are defined for the x86 family of computers.
|
||||||
computers:
|
|
||||||
|
|
||||||
@table @gcctabopt
|
@table @gcctabopt
|
||||||
|
|
||||||
@ -15644,7 +15636,7 @@ The temporary results are computed in 80-bit precision instead of the precision
|
|||||||
specified by the type, resulting in slightly different results compared to most
|
specified by the type, resulting in slightly different results compared to most
|
||||||
of other chips. See @option{-ffloat-store} for more detailed description.
|
of other chips. See @option{-ffloat-store} for more detailed description.
|
||||||
|
|
||||||
This is the default choice for i386 compiler.
|
This is the default choice for x86-32 targets.
|
||||||
|
|
||||||
@item sse
|
@item sse
|
||||||
Use scalar floating-point instructions present in the SSE instruction set.
|
Use scalar floating-point instructions present in the SSE instruction set.
|
||||||
@ -15656,7 +15648,7 @@ extended-precision arithmetic are still done using 387. A later version, presen
|
|||||||
only in Pentium 4 and AMD x86-64 chips, supports double-precision
|
only in Pentium 4 and AMD x86-64 chips, supports double-precision
|
||||||
arithmetic too.
|
arithmetic too.
|
||||||
|
|
||||||
For the i386 compiler, you must use @option{-march=@var{cpu-type}}, @option{-msse}
|
For the x86-32 compiler, you must use @option{-march=@var{cpu-type}}, @option{-msse}
|
||||||
or @option{-msse2} switches to enable SSE extensions and make this option
|
or @option{-msse2} switches to enable SSE extensions and make this option
|
||||||
effective. For the x86-64 compiler, these extensions are enabled by default.
|
effective. For the x86-64 compiler, these extensions are enabled by default.
|
||||||
|
|
||||||
@ -15741,7 +15733,7 @@ On x86-64, @option{-malign-double} is enabled by default.
|
|||||||
|
|
||||||
@strong{Warning:} if you use the @option{-malign-double} switch,
|
@strong{Warning:} if you use the @option{-malign-double} switch,
|
||||||
structures containing the above types are aligned differently than
|
structures containing the above types are aligned differently than
|
||||||
the published application binary interface specifications for the 386
|
the published application binary interface specifications for the x86-32
|
||||||
and are not binary compatible with structures in code compiled
|
and are not binary compatible with structures in code compiled
|
||||||
without that switch.
|
without that switch.
|
||||||
|
|
||||||
@ -15749,7 +15741,7 @@ without that switch.
|
|||||||
@itemx -m128bit-long-double
|
@itemx -m128bit-long-double
|
||||||
@opindex m96bit-long-double
|
@opindex m96bit-long-double
|
||||||
@opindex m128bit-long-double
|
@opindex m128bit-long-double
|
||||||
These switches control the size of @code{long double} type. The i386
|
These switches control the size of @code{long double} type. The x86-32
|
||||||
application binary interface specifies the size to be 96 bits,
|
application binary interface specifies the size to be 96 bits,
|
||||||
so @option{-m96bit-long-double} is the default in 32-bit mode.
|
so @option{-m96bit-long-double} is the default in 32-bit mode.
|
||||||
|
|
||||||
@ -15892,7 +15884,7 @@ when this option is used to set the precision to less than extended precision.
|
|||||||
|
|
||||||
@item -mstackrealign
|
@item -mstackrealign
|
||||||
@opindex mstackrealign
|
@opindex mstackrealign
|
||||||
Realign the stack at entry. On the Intel x86, the @option{-mstackrealign}
|
Realign the stack at entry. On the x86, the @option{-mstackrealign}
|
||||||
option generates an alternate prologue and epilogue that realigns the
|
option generates an alternate prologue and epilogue that realigns the
|
||||||
run-time stack if necessary. This supports mixing legacy codes that keep
|
run-time stack if necessary. This supports mixing legacy codes that keep
|
||||||
4-byte stack alignment with modern codes that keep 16-byte stack alignment for
|
4-byte stack alignment with modern codes that keep 16-byte stack alignment for
|
||||||
@ -16064,7 +16056,7 @@ extended instruction sets. Each has a corresponding @option{-mno-} option
|
|||||||
to disable use of these instructions.
|
to disable use of these instructions.
|
||||||
|
|
||||||
These extensions are also available as built-in functions: see
|
These extensions are also available as built-in functions: see
|
||||||
@ref{X86 Built-in Functions}, for details of the functions enabled and
|
@ref{x86 Built-in Functions}, for details of the functions enabled and
|
||||||
disabled by these switches.
|
disabled by these switches.
|
||||||
|
|
||||||
To generate SSE/SSE2 instructions automatically from floating-point
|
To generate SSE/SSE2 instructions automatically from floating-point
|
||||||
@ -16505,9 +16497,10 @@ and x32 environments. It is the default address mode for 32-bit and
|
|||||||
x32 environments.
|
x32 environments.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node i386 and x86-64 Windows Options
|
@node x86 Windows Options
|
||||||
@subsection i386 and x86-64 Windows Options
|
@subsection x86 Windows Options
|
||||||
@cindex i386 and x86-64 Windows Options
|
@cindex x86 Windows Options
|
||||||
|
@cindex Windows Options for x86
|
||||||
|
|
||||||
These additional options are available for Microsoft Windows targets:
|
These additional options are available for Microsoft Windows targets:
|
||||||
|
|
||||||
@ -16583,7 +16576,7 @@ GCC detects that the target assembler found during configuration
|
|||||||
supports the feature.
|
supports the feature.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
See also under @ref{i386 and x86-64 Options} for standard options.
|
See also under @ref{x86 Options} for standard options.
|
||||||
|
|
||||||
@node IA-64 Options
|
@node IA-64 Options
|
||||||
@subsection IA-64 Options
|
@subsection IA-64 Options
|
||||||
@ -22857,12 +22850,6 @@ Disable lazy binding of function calls. This option is the default and
|
|||||||
is defined for compatibility with Diab.
|
is defined for compatibility with Diab.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node x86-64 Options
|
|
||||||
@subsection x86-64 Options
|
|
||||||
@cindex x86-64 options
|
|
||||||
|
|
||||||
These are listed under @xref{i386 and x86-64 Options}.
|
|
||||||
|
|
||||||
@node Xstormy16 Options
|
@node Xstormy16 Options
|
||||||
@subsection Xstormy16 Options
|
@subsection Xstormy16 Options
|
||||||
@cindex Xstormy16 Options
|
@cindex Xstormy16 Options
|
||||||
@ -23287,10 +23274,10 @@ the GOT size for the linked executable exceeds a machine-specific
|
|||||||
maximum size, you get an error message from the linker indicating that
|
maximum size, you get an error message from the linker indicating that
|
||||||
@option{-fpic} does not work; in that case, recompile with @option{-fPIC}
|
@option{-fpic} does not work; in that case, recompile with @option{-fPIC}
|
||||||
instead. (These maximums are 8k on the SPARC and 32k
|
instead. (These maximums are 8k on the SPARC and 32k
|
||||||
on the m68k and RS/6000. The 386 has no such limit.)
|
on the m68k and RS/6000. The x86 has no such limit.)
|
||||||
|
|
||||||
Position-independent code requires special support, and therefore works
|
Position-independent code requires special support, and therefore works
|
||||||
only on certain machines. For the 386, GCC supports PIC for System V
|
only on certain machines. For the x86, GCC supports PIC for System V
|
||||||
but not for the Sun 386i. Code generated for the IBM RS/6000 is always
|
but not for the Sun 386i. Code generated for the IBM RS/6000 is always
|
||||||
position-independent.
|
position-independent.
|
||||||
|
|
||||||
@ -23528,7 +23515,7 @@ The resulting program has a discontiguous stack which can only
|
|||||||
overflow if the program is unable to allocate any more memory. This
|
overflow if the program is unable to allocate any more memory. This
|
||||||
is most useful when running threaded programs, as it is no longer
|
is most useful when running threaded programs, as it is no longer
|
||||||
necessary to calculate a good stack size to use for each thread. This
|
necessary to calculate a good stack size to use for each thread. This
|
||||||
is currently only implemented for the i386 and x86_64 back ends running
|
is currently only implemented for the x86 targets running
|
||||||
GNU/Linux.
|
GNU/Linux.
|
||||||
|
|
||||||
When code compiled with @option{-fsplit-stack} calls code compiled
|
When code compiled with @option{-fsplit-stack} calls code compiled
|
||||||
|
@ -2306,7 +2306,7 @@ Vector constant that is all zeros.
|
|||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@item Intel 386---@file{config/i386/constraints.md}
|
@item x86 family---@file{config/i386/constraints.md}
|
||||||
@table @code
|
@table @code
|
||||||
@item R
|
@item R
|
||||||
Legacy register---the eight integer registers available on all
|
Legacy register---the eight integer registers available on all
|
||||||
@ -2360,7 +2360,7 @@ unsigned long long rdtsc (void)
|
|||||||
@}
|
@}
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
This is not correct on x86_64 as it would allocate tick in either @code{ax}
|
This is not correct on x86-64 as it would allocate tick in either @code{ax}
|
||||||
or @code{dx}. You have to use the following variant instead:
|
or @code{dx}. You have to use the following variant instead:
|
||||||
|
|
||||||
@smallexample
|
@smallexample
|
||||||
|
Loading…
Reference in New Issue
Block a user