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§
- vgf2p8affineinvqb_
128 🔒 ⚠ - vgf2p8affineinvqb_
256 🔒 ⚠ - vgf2p8affineinvqb_
512 🔒 ⚠ - vgf2p8affineqb_
128 🔒 ⚠ - vgf2p8affineqb_
256 🔒 ⚠ - vgf2p8affineqb_
512 🔒 ⚠ - vgf2p8mulb_
128 🔒 ⚠ - vgf2p8mulb_
256 🔒 ⚠ - vgf2p8mulb_
512 🔒 ⚠ - _mm256_
gf2p8affine_ ⚠epi64_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ ⚠epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ ⚠epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni
- 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_
gf2p8affineinv_ ⚠epi64_ epi8 Experimental gfni
- 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_ ⚠epi8 Experimental gfni
- 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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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_ epi8 Experimental gfni,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.