
3:46
Volume 3: Instruction Reference
cmpxchg
cmpxchg — Compare and Exchange
Format:
(
qp
) cmpxchg
sz
.
sem
.
ldhint r
1
=
[
r
3
],
r
2
, ar.ccv
(
qp
) cmp8xchg16.
sem
.
ldhint r
1
=
[
r
3
],
r
2
, ar.csd, ar.ccv
sixteen_byte_form
Description:
A value consisting of
sz
bytes (8 bytes for
cmp8xchg16
) is read from memory starting at
the address specified by the value in GR
r
3
. The value is zero extended and compared
with the contents of the
cmpxchg
Compare Value application register (AR[CCV]). If the
two are equal, then the least significant
sz
bytes of the value in GR
r
2
are written to
memory starting at the address specified by the value in GR
r
3
. For
cmp8xchg16
, if the
two are equal, then 8-bytes from GR
r
2
are stored at the specified address ignoring bit
3 (GR
r
3
& ~0x8), and 8 bytes from the Compare and Store Data application register
(AR[CSD]) are stored at that a 8 ((GR
r
3
& ~0x8) + 8). The zero-extended
value read from memory is placed in GR
r
1
and the NaT bit corresponding to GR
r
1
is
cleared.
The values of the
sz
completer are given in
sem
completer specifies the
type of semaphore operation. These operations are described in
. See
Section 4.4.7, “Sequentiality Attribute and Ordering” on page 2:82
for details on
memory ordering.
If the address specified by the value in GR
r
3
is not naturally aligned to the size of the
value being accessed in memory, an Unaligned Data Reference fault is taken
independent of the state of the User Mask alignment checking bit, UM.ac (PSR.ac in the
Processor Status Register). For the
cmp8xchg16
instruction, the address specified must
be 8-byte aligned.
The memory read and write are guaranteed to be atomic. For the
cmp8xchg16
instruction, the 8-byte memory read and the 16-byte memory write are guaranteed to
be atomic.
Both read and write access privileges for the referenced page are required. The write
access privilege check is performed whether or not the memory write is performed.
This instruction is only supported to cacheable pages with write-back write policy.
Accesses to NaTPages cause a Data NaT Page Consumption fault. Accesses to pages
with other memory attributes cause an Unsupported Data Reference fault.
The value of the
ldhint
completer specifies the locality of the memory access. The values
of the
ldhint
completer are given in
. Locality hints do not
Table 2-19.
Memory Compare and Exchange Size
sz
Completer
Bytes Accessed
1
1
2
2
4
4
8
8
Table 2-20.
Compare and Exchange Semaphore Types
sem
Completer
Ordering
Semantics
Semaphore Operation
acq
Acquire
The memory read/write is made visible prior to all subsequent data memory
accesses.
rel
Release
The memory read/write is made visible after all previous data memory
accesses.
Содержание ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Страница 1: ......
Страница 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 12: ...1 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I Application Architecture Guide ...
Страница 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Страница 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Страница 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Страница 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Страница 230: ......
Страница 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 249: ...2 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I System Architecture Guide ...
Страница 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Страница 380: ...2 132 Volume 2 Part 1 Interruptions ...
Страница 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Страница 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Страница 749: ...2 501 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part II System Programmer s Guide ...
Страница 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Страница 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Страница 808: ...2 560 Volume 2 Part 2 Context Management ...
Страница 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Страница 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Страница 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Страница 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Страница 891: ......
Страница 941: ...3 42 Volume 3 Instruction Reference cmp illegal_operation_fault PR p1 0 PR p2 0 Interruptions Illegal Operation fault ...
Страница 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Страница 1191: ...3 292 Volume 3 Pseudo Code Functions Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Страница 1296: ......
Страница 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Страница 1564: ...4 262 Volume 4 Base IA 32 Instruction Reference LES Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1565: ...Volume 4 Base IA 32 Instruction Reference 4 263 LFS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1568: ...4 266 Volume 4 Base IA 32 Instruction Reference LGS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1583: ...Volume 4 Base IA 32 Instruction Reference 4 281 LSS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Страница 1663: ...Volume 4 Base IA 32 Instruction Reference 4 361 SHL SHR Shift Instructions See entry for SAL SAR SHL SHR ...
Страница 1668: ...4 366 Volume 4 Base IA 32 Instruction Reference SIDT Store Interrupt Descriptor Table Register See entry for SGDT SIDT ...
Страница 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Страница 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Страница 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...