Microsoft*-Compatible Intrinsics for Dual-Core Intel® Itanium® Processor 9000 Sequence

The Dual-Core Intel® Itanium® processor 9000 sequence supports the intrinsics listed in the table below. These intrinsics are also compatible with the Microsoft* compiler. These intrinsics each generate IA-64 instructions. The second alpha-numerical chain in the intrinsic name represents the IA-64 instruction the intrinsic generates. For example, the intrinsic _int64_cmp8xchg generates the cmp8xchg IA-64 instruction.

For more information about the instructions these intrinsics generate, please see the documentation area of the Itanium® processor website.

Intrinsic Name

Operation

Corresponding
IA-64 Instruction

_InterlockedCompare64Exchange128

Compare and exchange

_InterlockedCompare64Exchange128_acq

Compare and Exchange

_InterlockedCompare64Exchange128_rel

Compare and Exchange

__load128

Read

__load128_acq

Read

__store128

Store

__store128_rel

Store

__int64 _InterlockedCompare64Exchange128(__int64 volatile * <Destination>, __int64 <ExchangeHigh>, __int64 <ExchangeLow>, __int64 <Comperand>)

Generates a compare and exchange IA-64 instruction. Returns the lowest 64-bit value of the destination.

The following table describes each argument for this intrinsic.

Destination

ExchangeHigh

ExchangeLow

Comperand

Pointer to the 128-bit Destination value

Highest 64 bits of the Exchange value

Lowest 64 bits of the Exchange value

Value to compare with Destination

__int64 _InterlockedCompare64Exchange128_acq( __int64 volatile * <Destination>, __int64 <ExchangeHigh>, __int64 <ExchangeLow>, __int64 <Comperand>)

Generates a compare and exchange IA-64 instruction. Same as _InterlockedCompare64Exchange128, but this intrinsic uses acquire semantics. Returns the lowest 64-bit value of the destination.

The following table describes each argument for this intrinsic.

Destination

ExchangeHigh

ExchangeLow

Comperand

Pointer to the 128-bit Destination value

Highest 64 bits of the Exchange value

Lowest 64 bits of the Exchange value

Value to compare with Destination

__int64 _InterlockedCompare64Exchange128_rel( __int64 volatile * <Destination>, __int64 <ExchangeHigh>, __int64 <ExchangeLow>, __int64 <Comperand>

Generates a compare and exchange IA-64 instruction. Same as _InterlockedCompare64Exchange128, but this intrinsic uses release semantics. Returns the lowest 64-bit value of the destination.

The following table describes each argument for this intrinsic.

Destination

ExchangeHigh

ExchangeLow

Comperand

Pointer to the 128-bit Destination value

Highest 64 bits of the Exchange value

Lowest 64 bits of the Exchange value

Value to compare with Destination

__int64 __load128( __int64 volatile * Source, __int64 *<DestinationHigh>)

Generates the IA-64 instruction that atomically reads 128 bits from the memory location. Returns the lowest 64-bit value of the 128-bit loaded value.

The following table describes each argument for this intrinsic.

Source

DestinationHigh

Pointer to the 128-bit Source value

Pointer to the location in memory that stores the highest 64 bits of the 128-bit loaded value

__int64 __load128_acq( __int64 volatile * <Source>, __int64 *<DestinationHigh>

Generates the IA-64 instruction that atomically reads 128 bits from the memory location. Same as __load128, but the this intrinsic uses acquire semantics. Returns the lowest 64-bit value of the 128-bit loaded value.

The following table describes each argument for this intrinsic.

Source

DestinationHigh

Pointer to the 128-bit Source value

Pointer to the location in memory that stores the highest 64 bits of the 128-bit loaded value

__void __store128( __int64 volatile * <Destination>, __int64 <SourceHigh> __int64 <SourceLow>)

Generates the IA-64 instruction that atomically stores 128 bits at the destination memory location. No returns.

Destination

SourceHigh

SourceLow

Pointer to the 128-bit Destination value

The highest 64 bits of the value to be stored

The lowest 64 bits of the value to be stored

__void __store128_rel( __int64 volatile * <Destination>, __int64 <SourceHigh> __int64 <SourceLow>)

Generates the IA-64 instruction that atomically stores 128 bits at the destination memory location. Same as __store128, but this intrinsic uses release semantics. No returns.

Destination

SourceHigh

SourceLow

Pointer to the 128-bit Destination value

The highest 64 bits of the value to be stored

The lowest 64 bits of the value to be stored