Commit 33e1f2e6 by Sandra Loosemore Committed by Sandra Loosemore

extend.texi (x86 transactional memory intrinsics): Copy-edit.

2015-02-19  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* doc/extend.texi (x86 transactional memory intrinsics):
	Copy-edit.

From-SVN: r220819
parent 801050dc
2015-02-19 Sandra Loosemore <sandra@codesourcery.com>
* doc/extend.texi (x86 transactional memory intrinsics):
Copy-edit.
2015-02-19 Richard Henderson <rth@redhat.com> 2015-02-19 Richard Henderson <rth@redhat.com>
PR middle-end/65074 PR middle-end/65074
......
...@@ -17257,10 +17257,11 @@ int __builtin_ia32_xtest () ...@@ -17257,10 +17257,11 @@ int __builtin_ia32_xtest ()
@node x86 transactional memory intrinsics @node x86 transactional memory intrinsics
@subsection x86 Transactional Memory Intrinsics @subsection x86 Transactional Memory Intrinsics
Hardware transactional memory intrinsics for x86. These allow to use These hardware transactional memory intrinsics for x86 allow you 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.
This support is enabled with the @option{-mrtm} option. This support is enabled with the @option{-mrtm} option.
For using HLE (Hardware Lock Elision) see
@ref{x86 specific memory model extensions for transactional memory} instead.
A memory transaction commits all changes to memory in an atomic way, A memory transaction commits all changes to memory in an atomic way,
as visible to other threads. If the transaction fails it is rolled back as visible to other threads. If the transaction fails it is rolled back
...@@ -17271,12 +17272,12 @@ and suitable fallback code always needs to be supplied. ...@@ -17271,12 +17272,12 @@ and suitable fallback code always needs to be supplied.
@deftypefn {RTM Function} {unsigned} _xbegin () @deftypefn {RTM Function} {unsigned} _xbegin ()
Start a RTM (Restricted Transactional Memory) transaction. Start a RTM (Restricted Transactional Memory) transaction.
Returns _XBEGIN_STARTED when the transaction Returns @code{_XBEGIN_STARTED} when the transaction
started successfully (note this is not 0, so the constant has to be started successfully (note this is not 0, so the constant has to be
explicitely tested). When the transaction aborts all side effects explicitly tested). If the transaction aborts, all side-effects
are undone and an abort code is returned. There is no guarantee are undone and an abort code is returned. There is no guarantee
any transaction ever succeeds, so there always needs to be a valid any transaction ever succeeds, so there always needs to be a valid
tested fallback path. fallback path.
@end deftypefn @end deftypefn
@smallexample @smallexample
...@@ -17290,38 +17291,38 @@ if ((status = _xbegin ()) == _XBEGIN_STARTED) @{ ...@@ -17290,38 +17291,38 @@ if ((status = _xbegin ()) == _XBEGIN_STARTED) @{
@} @}
@end smallexample @end smallexample
Valid abort status bits (when the value is not @code{_XBEGIN_STARTED}) are: If the transaction aborts, the return value is one of:
@table @code @table @code
@item _XABORT_EXPLICIT @item _XABORT_EXPLICIT
Transaction explicitely aborted with @code{_xabort}. The parameter passed Transaction was explicitly aborted with @code{_xabort}. The parameter passed
to @code{_xabort} is available with @code{_XABORT_CODE(status)} to @code{_xabort} is available with @code{_XABORT_CODE(status)}.
@item _XABORT_RETRY @item _XABORT_RETRY
Transaction retry is possible. Transaction retry is possible.
@item _XABORT_CONFLICT @item _XABORT_CONFLICT
Transaction abort due to a memory conflict with another thread Transaction abort due to a memory conflict with another thread.
@item _XABORT_CAPACITY @item _XABORT_CAPACITY
Transaction abort due to the transaction using too much memory Transaction abort due to the transaction using too much memory.
@item _XABORT_DEBUG @item _XABORT_DEBUG
Transaction abort due to a debug trap Transaction abort due to a debug trap.
@item _XABORT_NESTED @item _XABORT_NESTED
Transaction abort in a inner nested transaction Transaction abort in an inner nested transaction.
@end table @end table
@deftypefn {RTM Function} {void} _xend () @deftypefn {RTM Function} {void} _xend ()
Commit the current transaction. When no transaction is active this will Commit the current transaction. When no transaction is active this faults.
fault. All memory side effects of the transactions will become visible All memory side-effects of the transaction become visible
to other threads in an atomic matter. to other threads in an atomic manner.
@end deftypefn @end deftypefn
@deftypefn {RTM Function} {int} _xtest () @deftypefn {RTM Function} {int} _xtest ()
Return a value not zero when a transaction is currently active, otherwise 0. Return a nonzero value if a transaction is currently active, otherwise 0.
@end deftypefn @end deftypefn
@deftypefn {RTM Function} {void} _xabort (status) @deftypefn {RTM Function} {void} _xabort (status)
Abort the current transaction. When no transaction is active this is a no-op. Abort the current transaction. When no transaction is active this is a no-op.
status must be a 8bit constant, that is included in the status code returned The @var{status} is an 8-bit constant; its value is encoded in the return
by @code{_xbegin} value from @code{_xbegin}.
@end deftypefn @end deftypefn
@node Target Format Checks @node Target Format Checks
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment