---
name: "shmem_longlong_swap"
section: "3"
platform: "linux"
package: "openmpi"
version: "5.0.11-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/shmem_longlong_swap"
---

# shmem\_longlong\_swap(3)

[*shmem\_double\_swap*(3)](/shmem_double_swap/3.md), [*shmem\_float\_swap*(3)](/shmem_float_swap/3.md), [*shmem\_int\_swap*(3)](/shmem_int_swap/3.md), [*shmem\_long\_swap*(3)](/shmem_long_swap/3.md), [*shmem\_swap*(3)](/shmem_swap/3.md), shmem\_int4\_swap(3), shmem\_int8\_swap(3), shmem\_real4\_swap(3), shmem\_real8\_swap(3), [*shmem\_longlong\_swap*(3)](/shmem_longlong_swap/3.md) - Performs an atomic swap to a remote data object

## SYNOPSIS

C or C++:

```
#include <mpp/shmem.h>
double shmem_double_swap(double *target, double value,
  int pe)
float shmem_float_swap(float *target, float value, int pe)
int shmem_int_swap(int *target, int value, int pe)
long shmem_long_swap(long *target, long value, int pe)
long long shmem_longlong_swap(long long *target,
  long long value, int pe)
long shmem_swap(long *target, long value, int pe)
```

Fortran:

```
INCLUDE "mpp/shmem.fh"
INTEGER pe
INTEGER SHMEM_SWAP
ires = SHMEM_SWAP(target, value, pe)
INTEGER(KIND=4) SHMEM_INT4_SWAP
ires = SHMEM_INT4_SWAP(target, value, pe)
INTEGER(KIND=8) SHMEM_INT8_SWAP
ires = SHMEM_INT8_SWAP(target, value, pe)
REAL(KIND=4) SHMEM_REAL4_SWAP
res = SHMEM_REAL4_SWAP(target, value, pe)
REAL(KIND=8) SHMEM_REAL8_SWAP
res = SHMEM_REAL8_SWAP(target, value, pe)
```

## DESCRIPTION

The atomic swap routines write **value** to address target on PE **pe**, and return the previous contents of **target** in one atomic operation.

The arguments are as follows:

- **target**

  The remotely accessible integer data object to be updated on the remote PE. If you are using C/C++, the type of target should match that implied in the SYNOPSIS section. If you are using Fortran, it must be of the following type:

  **SHMEM\_SWAP:** Integer of default kind

  **SHMEM\_INT4\_SWAP:** 4-byte integer

  **SHMEM\_INT8\_SWAP:** 8-byte integer

  **SHMEM\_REAL4\_SWAP:** 4-byte real

  **SHMEM\_REAL8\_SWAP:** 8-byte real

- **value**

  Value to be atomically written to the remote PE. value is the same type as target.

- **pe**

  An integer that indicates the PE number on which target is to be updated. If you are using Fortran, it must be a default integer value.

## NOTES

The term remotely accessible is defined in [*intro\_shmem*(3)](/intro_shmem/3.md).

## RETURN VALUES

The contents that had been at the target address on the remote PE prior to the swap is returned.

**SEE ALSO:**

[*intro\_shmem*(3)](/intro_shmem/3.md)

## COPYRIGHT

2003-2026, The Open MPI Community
