# HLE Release _InterlockedCompareExchange Functions

Performs an atomic compare-and-exchange operation on the specified values and releases pending active HLE transaction. This intrinsic function applies to C/C++ applications for Windows only.

## Syntax

long _InterlockedCompareExchange_HLERelease(long volatile *Destination, long Exchange, long Comparand);

__int64 _InterlockedCompareExchange64_HLERelease(__int64 volatile *Destination, __int64 Exchange, __int64 Comparand);

void * _InterlockedCompareExchangePointer_HLERelease(void * volatile *Destination, void * Exchange, void * Comparand);

## Parameters

`Destination [in, out]` | pointer to the destination value
`Exchange [in]` | value which will be written at Destination if the comparison matches.
`Comparand [in]` | value to compare to the value referenced by Destination.

## Description

Performs an atomic compare-and-exchange operation on the specified values and releases a pending HLE transaction (if one is active).

The function compares two specified values and replaces one of them with a third value if the compared values are equal.

## Returns

Returns the initial value referenced by the `Destination` parameter.

Parent topic: Intrinsics for Hardware Lock Elision Operations