Crypto++ 8.0 Free C++ class library of cryptographic schemes

Functions
arm_simd.h File Reference

Support functions for ARM and vector operations. More...

Go to the source code of this file.

## Functions
uint64x2_t | PMULL_00 (const uint64x2_t a, const uint64x2_t b)
| Polynomial multiplication. More...
uint64x2_t | PMULL_01 (const uint64x2_t a, const uint64x2_t b)
| Polynomial multiplication. More...
uint64x2_t | PMULL_10 (const uint64x2_t a, const uint64x2_t b)
| Polynomial multiplication. More...
uint64x2_t | PMULL_11 (const uint64x2_t a, const uint64x2_t b)
| Polynomial multiplication. More...
uint64x2_t | VEXT_U8 (uint64x2_t a, uint64x2_t b, unsigned int c)
| Vector extraction. More...
template<unsigned int C>
uint64x2_t | VEXT_U8 (uint64x2_t a, uint64x2_t b)
| Vector extraction. More...

## Detailed Description

Support functions for ARM and vector operations.

Definition in file arm_simd.h.

## Function Documentation

## ◆ PMULL_00()

uint64x2_t PMULL_00 | ( | const uint64x2_t | a,
|  | const uint64x2_t | b
| ) |  |
| inline

Polynomial multiplication.

Parameters

  a | the first term
  b | the second term

Returns
  vector product

PMULL_00() performs polynomial multiplication and presents the result like Intel's `c = _mm_clmulepi64_si128(a, b, 0x00)`. The `0x00` indicates the low 64-bits of `a` and `b` are multiplied.

Note
  An Intel XMM register is composed of 128-bits. The leftmost bit is MSB and numbered 127, while the the rightmost bit is LSB and numbered 0.

Since
  Crypto++ 8.0

Definition at line 35 of file arm_simd.h.

## ◆ PMULL_01()

uint64x2_t PMULL_01 | ( | const uint64x2_t | a,
|  | const uint64x2_t | b
| ) |  |
| inline

Polynomial multiplication.

Parameters

  a | the first term
  b | the second term

Returns
  vector product

PMULL_01 performs() polynomial multiplication and presents the result like Intel's `c = _mm_clmulepi64_si128(a, b, 0x01)`. The `0x01` indicates the low 64-bits of `a` and high 64-bits of `b` are multiplied.

Note
  An Intel XMM register is composed of 128-bits. The leftmost bit is MSB and numbered 127, while the the rightmost bit is LSB and numbered 0.

Since
  Crypto++ 8.0

Definition at line 65 of file arm_simd.h.

## ◆ PMULL_10()

uint64x2_t PMULL_10 | ( | const uint64x2_t | a,
|  | const uint64x2_t | b
| ) |  |
| inline

Polynomial multiplication.

Parameters

  a | the first term
  b | the second term

Returns
  vector product

PMULL_10() performs polynomial multiplication and presents the result like Intel's `c = _mm_clmulepi64_si128(a, b, 0x10)`. The `0x10` indicates the high 64-bits of `a` and low 64-bits of `b` are multiplied.

Note
  An Intel XMM register is composed of 128-bits. The leftmost bit is MSB and numbered 127, while the the rightmost bit is LSB and numbered 0.

Since
  Crypto++ 8.0

Definition at line 95 of file arm_simd.h.

## ◆ PMULL_11()

uint64x2_t PMULL_11 | ( | const uint64x2_t | a,
|  | const uint64x2_t | b
| ) |  |
| inline

Polynomial multiplication.

Parameters

  a | the first term
  b | the second term

Returns
  vector product

PMULL_11() performs polynomial multiplication and presents the result like Intel's `c = _mm_clmulepi64_si128(a, b, 0x11)`. The `0x11` indicates the high 64-bits of `a` and `b` are multiplied.

Note
  An Intel XMM register is composed of 128-bits. The leftmost bit is MSB and numbered 127, while the the rightmost bit is LSB and numbered 0.

Since
  Crypto++ 8.0

Definition at line 125 of file arm_simd.h.

## ◆ VEXT_U8() [1/2]

uint64x2_t VEXT_U8 | ( | uint64x2_t | a,
|  | uint64x2_t | b,
|  | unsigned int | c
| ) |  |
| inline

Vector extraction.

Parameters

  a | the first term
  b | the second term
  c | the byte count

Returns
  vector

VEXT_U8() extracts the first `c` bytes of vector `a` and the remaining bytes in `b`.

Since
  Crypto++ 8.0

Definition at line 151 of file arm_simd.h.

## ◆ VEXT_U8() [2/2]

template<unsigned int C>

uint64x2_t VEXT_U8 | ( | uint64x2_t | a,
|  | uint64x2_t | b
| ) |  |
| inline

Vector extraction.

Template Parameters

  C | the byte count

Parameters

  a | the first term
  b | the second term

Returns
  vector

VEXT_U8() extracts the first `C` bytes of vector `a` and the remaining bytes in `b`.

Since
  Crypto++ 8.0

Definition at line 173 of file arm_simd.h.