Microsoft Compatible Intrinsics for Dual-Core IntelŪ ItaniumŪ 2 Processor 9000 Sequence

The Dual-Core IntelŪ ItaniumŪ 2 Processor 9000 Sequence processor supports the intrinsics listed in the table below. These intrinsics are also compatible with the Microsoft compiler. These intrinsics each generate ItaniumŪ instructions. The  second alpha-numerical chain in the intrinsic name represents the Itanium instruction the intrinsic generates. For example, the intrinsic _int64_cmp8xchg generates the cmp8xchg Itanium instruction. For more information about the Itanium instructions that these intrinsics generate, see the Intel Itanium Architecture Software Developer Manual, Volume 3: Instruction Set Reference.

For detailed information about an intrinsic, click on that intrinsic name in the following table.

Intrinsic Name Operation Corresponding Itanium 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 Itanium 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 Itanium 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 Itanium 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 Itanium 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 Itanium 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 Itanium 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 Itanium 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