Module core::core_arch::x86::gfni

source ·
🔬This is a nightly-only experimental API. (stdsimd #48556)
Available on x86 or x86-64 only.
Expand description

Galois Field New Instructions (GFNI)

The intrinsics here correspond to those in the immintrin.h C header.

The reference is Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 2: Instruction Set Reference, A-Z.

Functions

  • _mm256_gf2p8affine_epi64_epi8Experimentalgfni,avx
    Performs an affine transformation on the packed bytes in x. That is computes a*x+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm256_gf2p8affineinv_epi64_epi8Experimentalgfni,avx
    Performs an affine transformation on the inverted packed bytes in x. That is computes a*inv(x)+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. The inverse of a byte is defined with respect to the reduction polynomial x^8+x^4+x^3+x+1. The inverse of 0 is 0. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm256_gf2p8mul_epi8Experimentalgfni,avx
    Performs a multiplication in GF(2^8) on the packed bytes. The field is in polynomial representation with the reduction polynomial x^8 + x^4 + x^3 + x + 1.
  • _mm256_mask_gf2p8affine_epi64_epi8Experimentalgfni,avx512bw,avx512vl
    Performs an affine transformation on the packed bytes in x. That is computes a*x+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm256_mask_gf2p8affineinv_epi64_epi8Experimentalgfni,avx512bw,avx512vl
    Performs an affine transformation on the inverted packed bytes in x. That is computes a*inv(x)+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. The inverse of a byte is defined with respect to the reduction polynomial x^8+x^4+x^3+x+1. The inverse of 0 is 0. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm256_mask_gf2p8mul_epi8Experimentalgfni,avx512bw,avx512vl
    Performs a multiplication in GF(2^8) on the packed bytes. The field is in polynomial representation with the reduction polynomial x^8 + x^4 + x^3 + x + 1.
  • _mm256_maskz_gf2p8affine_epi64_epi8Experimentalgfni,avx512bw,avx512vl
    Performs an affine transformation on the packed bytes in x. That is computes a*x+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm256_maskz_gf2p8affineinv_epi64_epi8Experimentalgfni,avx512bw,avx512vl
    Performs an affine transformation on the inverted packed bytes in x. That is computes a*inv(x)+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. The inverse of a byte is defined with respect to the reduction polynomial x^8+x^4+x^3+x+1. The inverse of 0 is 0. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm256_maskz_gf2p8mul_epi8Experimentalgfni,avx512bw,avx512vl
    Performs a multiplication in GF(2^8) on the packed bytes. The field is in polynomial representation with the reduction polynomial x^8 + x^4 + x^3 + x + 1.
  • _mm512_gf2p8affine_epi64_epi8Experimentalgfni,avx512bw,avx512f
    Performs an affine transformation on the packed bytes in x. That is computes a*x+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm512_gf2p8affineinv_epi64_epi8Experimentalgfni,avx512bw,avx512f
    Performs an affine transformation on the inverted packed bytes in x. That is computes a*inv(x)+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. The inverse of a byte is defined with respect to the reduction polynomial x^8+x^4+x^3+x+1. The inverse of 0 is 0. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm512_gf2p8mul_epi8Experimentalgfni,avx512bw,avx512f
    Performs a multiplication in GF(2^8) on the packed bytes. The field is in polynomial representation with the reduction polynomial x^8 + x^4 + x^3 + x + 1.
  • _mm512_mask_gf2p8affine_epi64_epi8Experimentalgfni,avx512bw,avx512f
    Performs an affine transformation on the packed bytes in x. That is computes a*x+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm512_mask_gf2p8affineinv_epi64_epi8Experimentalgfni,avx512bw,avx512f
    Performs an affine transformation on the inverted packed bytes in x. That is computes a*inv(x)+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. The inverse of a byte is defined with respect to the reduction polynomial x^8+x^4+x^3+x+1. The inverse of 0 is 0. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm512_mask_gf2p8mul_epi8Experimentalgfni,avx512bw,avx512f
    Performs a multiplication in GF(2^8) on the packed bytes. The field is in polynomial representation with the reduction polynomial x^8 + x^4 + x^3 + x + 1.
  • _mm512_maskz_gf2p8affine_epi64_epi8Experimentalgfni,avx512bw,avx512f
    Performs an affine transformation on the packed bytes in x. That is computes a*x+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm512_maskz_gf2p8affineinv_epi64_epi8Experimentalgfni,avx512bw,avx512f
    Performs an affine transformation on the inverted packed bytes in x. That is computes a*inv(x)+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. The inverse of a byte is defined with respect to the reduction polynomial x^8+x^4+x^3+x+1. The inverse of 0 is 0. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm512_maskz_gf2p8mul_epi8Experimentalgfni,avx512bw,avx512f
    Performs a multiplication in GF(2^8) on the packed bytes. The field is in polynomial representation with the reduction polynomial x^8 + x^4 + x^3 + x + 1.
  • _mm_gf2p8affine_epi64_epi8Experimentalgfni
    Performs an affine transformation on the packed bytes in x. That is computes a*x+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • Performs an affine transformation on the inverted packed bytes in x. That is computes a*inv(x)+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. The inverse of a byte is defined with respect to the reduction polynomial x^8+x^4+x^3+x+1. The inverse of 0 is 0. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm_gf2p8mul_epi8Experimentalgfni
    Performs a multiplication in GF(2^8) on the packed bytes. The field is in polynomial representation with the reduction polynomial x^8 + x^4 + x^3 + x + 1.
  • _mm_mask_gf2p8affine_epi64_epi8Experimentalgfni,avx512bw,avx512vl
    Performs an affine transformation on the packed bytes in x. That is computes a*x+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm_mask_gf2p8affineinv_epi64_epi8Experimentalgfni,avx512bw,avx512vl
    Performs an affine transformation on the inverted packed bytes in x. That is computes a*inv(x)+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. The inverse of a byte is defined with respect to the reduction polynomial x^8+x^4+x^3+x+1. The inverse of 0 is 0. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm_mask_gf2p8mul_epi8Experimentalgfni,avx512bw,avx512vl
    Performs a multiplication in GF(2^8) on the packed bytes. The field is in polynomial representation with the reduction polynomial x^8 + x^4 + x^3 + x + 1.
  • _mm_maskz_gf2p8affine_epi64_epi8Experimentalgfni,avx512bw,avx512vl
    Performs an affine transformation on the packed bytes in x. That is computes a*x+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm_maskz_gf2p8affineinv_epi64_epi8Experimentalgfni,avx512bw,avx512vl
    Performs an affine transformation on the inverted packed bytes in x. That is computes a*inv(x)+b over the Galois Field 2^8 for each packed byte with a being a 8x8 bit matrix and b being a constant 8-bit immediate value. The inverse of a byte is defined with respect to the reduction polynomial x^8+x^4+x^3+x+1. The inverse of 0 is 0. Each pack of 8 bytes in x is paired with the 64-bit word at the same position in a.
  • _mm_maskz_gf2p8mul_epi8Experimentalgfni,avx512bw,avx512vl
    Performs a multiplication in GF(2^8) on the packed bytes. The field is in polynomial representation with the reduction polynomial x^8 + x^4 + x^3 + x + 1.
  • vgf2p8affineinvqb_128 🔒 Experimental
  • vgf2p8affineinvqb_256 🔒 Experimental
  • vgf2p8affineinvqb_512 🔒 Experimental
  • vgf2p8affineqb_128 🔒 Experimental
  • vgf2p8affineqb_256 🔒 Experimental
  • vgf2p8affineqb_512 🔒 Experimental
  • vgf2p8mulb_128 🔒 Experimental
  • vgf2p8mulb_256 🔒 Experimental
  • vgf2p8mulb_512 🔒 Experimental