The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Name

Simd::Avx512 - Emulate SIMD Avx512 instructions

Synopsis

Help needed please!

The instructions being emulated are illustrated at: https://www.officedaytime.com/simd512e/ The instructions being emulated are described at: https://hjlebbink.github.io/x86doc/

Example

Find the number of leading zeros in each of 8 quad words.

if (1) { my ($i, $od, $oq) = ( #Q0 1 2 3 4 5 6 7 8 #D0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 #W0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 #B0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678 '00000000101010100000001101010100101110101001111111010101011100110010100101010111110010101001010101100110100100001000110010101000011111010100111100101100000000000010001111001010111010111111111101001010100010111111001000010000100010100100111111100000000011010010010010000101101011110000000100011111111000000010000010101110111000000000011000111110100001000111111110001000000101011111100000000011101111100000100111111110000010011111111000000000111011101100000000001000111100011110010000011111111000001000010110010111', '00000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000001000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000110000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000011', '00000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000', );

  is_deeply VPLZCNTD($i), $od;
  is_deeply VPLZCNTQ($i), $oq;
 }

Description

Emulate SIMD Avx512 instructions

Version 20210129.

The following sections describe the methods in each functional area of this module. For an alphabetic listing of all methods by name see Index.

Instructions

Emulation of Avx512 instructions

PSLLDQ($xmm1, $imm8)

Packed Shift Left Logical DoubleQword

     Parameter  Description
  1  $xmm1      Bytes
  2  $imm8      Length of shift in bytes

Example:

    is_deeply PSLLDQ(                                                             # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  ,2),
   '00000000110000000000000001000000000010000000000001100000000000000000001111110000000000000000000000000000000011110000000000000000'

VPSLLDQ($xmm1, $imm8)

Packed Shift Left Logical DoubleQword

     Parameter  Description
  1  $xmm1      Bytes
  2  $imm8      Length of shift in bytes

Example:

    is_deeply VPSLLDQ(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  ,2),
   '00000000110000000000000001000000000010000000000001100000000000000000001111110000000000000000000000000000000011110000000000000000'


    is_deeply VPSLLDQ(                                                            # 2*128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  .'11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  ,2),
   '00000000110000000000000001000000000010000000000001100000000000000000001111110000000000000000000000000000000011110000000000000000'
  .'00000000110000000000000001000000000010000000000001100000000000000000001111110000000000000000000000000000000011110000000000000000'


    is_deeply VPSLLDQ(                                                            # 4*128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  .'11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  .'11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  .'11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  ,2),
   '00000000110000000000000001000000000010000000000001100000000000000000001111110000000000000000000000000000000011110000000000000000'
  .'00000000110000000000000001000000000010000000000001100000000000000000001111110000000000000000000000000000000011110000000000000000'
  .'00000000110000000000000001000000000010000000000001100000000000000000001111110000000000000000000000000000000011110000000000000000'
  .'00000000110000000000000001000000000010000000000001100000000000000000001111110000000000000000000000000000000011110000000000000000'

PSRLDQ($xmm1, $imm8)

Packed Shift Right Logical DoubleQword

     Parameter  Description
  1  $xmm1      Bytes
  2  $imm8      Length of shift

Example:

    is_deeply PSRLDQ(                                                             # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  ,2),
   '00000000000000001110000100001000000000001100000000000000010000000000100000000000011000000000000000000011111100000000000000000000'

VPSRLDQ($xmm1, $imm8)

Packed Shift Right Logical DoubleQword

     Parameter  Description
  1  $xmm1      Bytes
  2  $imm8      Length of shift

Example:

    is_deeply VPSRLDQ(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  ,2),
   '00000000000000001110000100001000000000001100000000000000010000000000100000000000011000000000000000000011111100000000000000000000'


    is_deeply VPSRLDQ(                                                            # 2*128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  .'11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  ,2),
   '00000000000000001110000100001000000000001100000000000000010000000000100000000000011000000000000000000011111100000000000000000000'
  .'00000000000000001110000100001000000000001100000000000000010000000000100000000000011000000000000000000011111100000000000000000000'


    is_deeply VPSRLDQ(                                                            # 4*128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  .'11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  .'11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  .'11100001000010000000000011000000000000000100000000001000000000000110000000000000000000111111000000000000000000000000000000001111'
  ,2),
   '00000000000000001110000100001000000000001100000000000000010000000000100000000000011000000000000000000011111100000000000000000000'
  .'00000000000000001110000100001000000000001100000000000000010000000000100000000000011000000000000000000011111100000000000000000000'
  .'00000000000000001110000100001000000000001100000000000000010000000000100000000000011000000000000000000011111100000000000000000000'
  .'00000000000000001110000100001000000000001100000000000000010000000000100000000000011000000000000000000011111100000000000000000000'

PCMP

Packed CoMPare

PCMPEQ

Packed CoMPare EQual

PCMPEQB($xmm1, $xmm2)

Packed CoMPare EQual Byte

     Parameter  Description
  1  $xmm1      Bytes
  2  $xmm2      Bytes

Example:

    is_deeply PCMPEQB(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000011000000000010000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000001000000000011000000000000010000000000100000000000001100000000000000000001111110000000000000000000000000000000011010'
  ),
   '11111111000000001111111111111111111111110000000000000000111111111111111111111111111111111111111111111111111111111111111100000000'

PCMPEQW($xmm1, $xmm2)

Packed CoMPare EQual Word

     Parameter  Description
  1  $xmm1      Words
  2  $xmm2      Words

Example:

    is_deeply PCMPEQW(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000011000000000010000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000001000000000011000000000000010000000000100000000000001100000000000000000001111110000000000000000000000000000000011010'
  ),
   '00000000000000001111111111111111000000000000000000000000000000001111111111111111111111111111111111111111111111110000000000000000'

PCMPEQD($xmm1, $xmm2)

Packed CoMPare EQual DWord

     Parameter  Description
  1  $xmm1      DWords
  2  $xmm2      DWords

Example:

    is_deeply PCMPEQD(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000011000000000010000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000001000000000011000000000000010000000000100000000000001100000000000000000001111110000000000000000000000000000000011010'
  ),
   '00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111100000000000000000000000000000000'

PCMPEQQ($xmm1, $xmm2)

Packed CoMPare EQual QWord

     Parameter  Description
  1  $xmm1      QWords
  2  $xmm2      QWords

Example:

    is_deeply PCMPEQQ(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000011000000000011000000000000011000000000110000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000011000000000011000000000000011000000000110000000000001100000000000000000001111110000000000000000000000000000000011010'
  ),
   '11111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000'

PCMPGT

Packed CoMPare Greater Than

PCMPGTB($xmm1, $xmm2)

Packed CoMPare Greater Than Byte

     Parameter  Description
  1  $xmm1      Bytes
  2  $xmm2      Bytes

Example:

    is_deeply PCMPGTB(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000010000011000000000010000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000001000000000001000000100000010000000000100000000000001100000000000000000001111110000000000000000000000000000000011010'
  ),
   '00000000111111110000000000000000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000011111111'

PCMPGTW($xmm1, $xmm2)

Packed CoMPare Greater Than Word

     Parameter  Description
  1  $xmm1      Words
  2  $xmm2      Words

Example:

    is_deeply PCMPGTW(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000011000000000010000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000001000000000011000000000000010000000000100000000000001100000000000000000000111110000000000000000000000000000000011010'
  ),
   '11111111111111110000000000000000111111111111111100000000000000000000000000000000111111111111111100000000000000001111111111111111'

PCMPGTD($xmm1, $xmm2)

Packed CoMPare Greater Than DWord

     Parameter  Description
  1  $xmm1      DWords
  2  $xmm2      DWords

Example:

    is_deeply PCMPGTD(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000011000000000010000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000001000000000011000000000000010000000000100000000000001100000000000000000001111110000000000000000000000000000000011010'
  ),
   '11111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000011111111111111111111111111111111'

PCMPGTQ($xmm1, $xmm2)

Packed CoMPare Greater Than QWord

     Parameter  Description
  1  $xmm1      QWords
  2  $xmm2      QWords

Example:

    is_deeply PCMPGTQ(                                                            # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000011000000000011000000000000011000000000110000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000011000000000011000000000000011000000000110000000000001100000000000000000001111110000000000000000000000000000000011010'
  ),
   '00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111'

VPCMP

Packed CoMPare

VPCMPEQ

Packed CoMPare EQual

VPCMPEQB($k2, $xmm1, $xmm2)

Packed CoMPare EQual Byte with optional masking

     Parameter  Description
  1  $k2        Optional input mask
  2  $xmm1      Bytes
  3  $xmm2      Bytes

Example:

    is_deeply VPCMPEQB(                                                           # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000011000000000010000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000001000000000011000000000000010000000000100000000000001100000000000000000001111110000000000000000000000000000000011010'
  ),
   '11111111000000001111111111111111111111110000000000000000111111111111111111111111111111111111111111111111111111111111111100000000'


    is_deeply VPCMPEQB(                                                           # 512  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11100001000010000000000011000000000000011000000000010000000000001100000000000000000001111110000000000000000000000000000000011110'
  .'11100001000010000000000011000000000000011000000000010000000000001100000000000000000001111110000000000000000000000000000000011110'
  ,'11100001000001000000000011000000000000010000000000100000000000001100000000000000000001111110000000000000000000000000000000011010'
  .'11100001000001000000000011000000000000010000000000100000000000001100000000000000000001111110000000000000000000000000000000011010'
  ),
   '11111111000000001111111111111111111111110000000000000000111111111111111111111111111111111111111111111111111111111111111100000000'
  .'11111111000000001111111111111111111111110000000000000000111111111111111111111111111111111111111111111111111111111111111100000000'


    is_deeply VPCMPEQB(                                                           # 128  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
                                                                                                                                                                                                                                                                                                                                                                                                   '00000001000010000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
                                                                                                                                                                                                                                                                                                                                                                                                   '10000001000010000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  ),
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1';


    is_deeply VPCMPEQB(                                                           # 256  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
                                                                                                                                                                                                                                                                   '0000000100001000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
                                                                                                                                                                                                                                                                   '1000000100001000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  ),
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1';


    is_deeply VPCMPEQB(                                                           # 512  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.    '1'.    '1'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
   '00000000110000001000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
   '00000000110000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  ),
   '1'.    '1'.    '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1';

VPCMPEQW($k2, $xmm1, $xmm2)

Packed CoMPare EQual Byte with optional masking

     Parameter  Description
  1  $k2        Optional input mask
  2  $xmm1      Words
  3  $xmm2      Words

VPCMPEQD($k2, $xmm1, $xmm2)

Packed CoMPare EQual Byte with optional masking

     Parameter  Description
  1  $k2        Optional input mask
  2  $xmm1      Dwords
  3  $xmm2      Dwords

VPCMPEQQ($k2, $xmm1, $xmm2)

Packed CoMPare EQual Byte with optional masking

     Parameter  Description
  1  $k2        Optional input mask
  2  $xmm1      Qwords
  3  $xmm2      Qwords

VPCMP

Packed CoMPare

VPCMPB($k2, $xmm1, $xmm2, $op)

Packed CoMPare Byte

     Parameter  Description
  1  $k2        Input mask
  2  $xmm1      Bytes
  3  $xmm2      Bytes
  4  $op        Test code

Example:

    my ($mi, $mo, $o1, $o2) = (                                                   # 128
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
                                                                                                                                                                                                                                                                                                                                                                                                   '00000001000010000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
                                                                                                                                                                                                                                                                                                                                                                                                   '10000001000010000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );


    is_deeply VPCMPB($mi, $o1, $o2, 0), $mo;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPB($mi, $o1, $o2, 4), zBytes(6).flipBitsUnderMask substr($mo, 48), substr($mi, 48);  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    my ($mi, $mo, $o1, $o2) = (                                                   # 256
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
                                                                                                                                                                                                                                                                   '0000000100001000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
                                                                                                                                                                                                                                                                   '1000000100001000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );

    is_deeply VPCMPB($mi, $o1, $o2, 0), $mo;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPB($mi, $o1, $o2, 4), zBytes(4).flipBitsUnderMask substr($mo, 32), substr($mi, 32);  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    my ($mi, $meq, $mlt, $mgt, $o1, $o2) = (                                      # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.    '1'.    '1'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
   '1'.    '1'.    '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
   '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0',
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0',
   '00000000110000001000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000110000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
   '00000000110000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000001100000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );

    is_deeply VPCMPB($mi, $o1, $o2, 0),                     $meq;                 # eq  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPB($mi, $o1, $o2, 1),                     $mlt;                 # lt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPB($mi, $o1, $o2, 2),   flipBitsUnderMask $mgt, $mi;            # le  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPB($mi, $o1, $o2, 4),   flipBitsUnderMask $meq, $mi;            # ne  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPB($mi, $o1, $o2, 5),   flipBitsUnderMask $mlt, $mi;            # ge  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPB($mi, $o1, $o2, 6),                     $mgt;                 # gt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPCMPW($k2, $xmm1, $xmm2, $op)

Packed CoMPare Word

     Parameter  Description
  1  $k2        Input mask
  2  $xmm1      Words
  3  $xmm2      Words
  4  $op        Test code

VPCMPD($k2, $xmm1, $xmm2, $op)

Packed CoMPare Dword

     Parameter  Description
  1  $k2        Input mask
  2  $xmm1      Dwords
  3  $xmm2      Dwords
  4  $op        Test code

VPCMPQ($k2, $xmm1, $xmm2, $op)

Packed CoMPare Qword

     Parameter  Description
  1  $k2        Input mask
  2  $xmm1      Qwords
  3  $xmm2      Qwords
  4  $op        Test code

VPCMPU

Packed CoMPare Unsigned

VPCMPUB($k2, $xmm1, $xmm2, $op)

Packed CoMPare Unsigned Byte

     Parameter  Description
  1  $k2        Input mask
  2  $xmm1      Bytes
  3  $xmm2      Bytes
  4  $op        Test code

Example:

    my ($mi, $mo, $o1, $o2) = (                                                   # 128
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
                                                                                                                                                                                                                                                                                                                                                                                                   '00000001000010000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
                                                                                                                                                                                                                                                                                                                                                                                                   '10000001000010000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );


    is_deeply VPCMPUB($mi, $o1, $o2, 0), $mo;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUB($mi, $o1, $o2, 4), zBytes(6).flipBitsUnderMask substr($mo, 48), substr($mi, 48);  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    my ($mi, $mo, $o1, $o2) = (                                                   # 256
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
                                                                                                                                                                                                                                                                   '0000000100001000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
                                                                                                                                                                                                                                                                   '1000000100001000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );

    is_deeply VPCMPUB($mi, $o1, $o2, 0), $mo;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUB($mi, $o1, $o2, 4), zBytes(4).flipBitsUnderMask substr($mo, 32), substr($mi, 32);  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    my ($mi, $meq, $mlt, $mgt, $o1, $o2) = (                                      # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.    '1'.    '1'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '1'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
   '1'.    '1'.    '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
   '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0',
   '0'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0',
   '00000000110000001000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000110000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
   '00000000110000000000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000001100000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );

    is_deeply VPCMPUB($mi, $o1, $o2, 0),                     $meq;                # eq  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUB($mi, $o1, $o2, 1),                     $mlt;                # lt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUB($mi, $o1, $o2, 2),   flipBitsUnderMask $mgt, $mi;           # le  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUB($mi, $o1, $o2, 4),   flipBitsUnderMask $meq, $mi;           # ne  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUB($mi, $o1, $o2, 5),   flipBitsUnderMask $mlt, $mi;           # ge  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUB($mi, $o1, $o2, 6),                     $mgt;                # gt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPCMPUW($k2, $xmm1, $xmm2, $op)

Packed CoMPare Unsigned Word

     Parameter  Description
  1  $k2        Input mask
  2  $xmm1      Words
  3  $xmm2      Words
  4  $op        Test code

Example:

    my ($mi, $meq, $mlt, $mgt, $o1, $o2) = (                                      # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.            '1'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1',
   '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1',
   '0'.            '0'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0',
   '0'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0',
   '00000000110000001000000001100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000110000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
   '00000000110000000000000001100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000001100000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );
    for my $i(\($mi, $meq, $mlt, $mgt))
     {$$i = zBytes(4).$$i;
     }

    is_deeply VPCMPUW($mi, $o1, $o2, 0),                     $meq;                # eq  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 1),                     $mlt;                # lt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 2),   flipBitsUnderMask $mgt, $mi;           # le  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 4),   flipBitsUnderMask $meq, $mi;           # ne  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 5),   flipBitsUnderMask $mlt, $mi;           # ge  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 6),                     $mgt;                # gt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    my ($mi, $meq, $mlt, $mgt, $o1, $o2) = (                                      # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.            '1'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1',
   '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1',
   '0'.            '0'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0',
   '0'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '1'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0'.            '0',
   '00000000110000001000000001100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000110000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
   '00000000110000000000000001100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000001100000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );
    for my $i(\($mi, $meq, $mlt, $mgt))
     {$$i = zBytes(4).$$i;
     }

    is_deeply VPCMPUW($mi, $o1, $o2, 0),                     $meq;                # eq  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 1),                     $mlt;                # lt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 2),   flipBitsUnderMask $mgt, $mi;           # le  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 4),   flipBitsUnderMask $meq, $mi;           # ne  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 5),   flipBitsUnderMask $mlt, $mi;           # ge  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUW($mi, $o1, $o2, 6),                     $mgt;                # gt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPCMPUD($k2, $xmm1, $xmm2, $op)

Packed CoMPare Unsigned Dword

     Parameter  Description
  1  $k2        Input mask
  2  $xmm1      Dwords
  3  $xmm2      Dwords
  4  $op        Test code

Example:

    my ($mi, $meq, $mlt, $mgt, $o1, $o2) = (                                      # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.                            '1'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '1',
   '0'.                            '0'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0',
   '0'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0',
   '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '1',
   '00000000110000001000000001100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000110000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000',
   '00000000110000000000000001100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000001100000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000',
  );
    for my $i(\($mi, $meq, $mlt, $mgt))
     {$$i = zBytes(6).$$i;
     }

    is_deeply VPCMPUD($mi, $o1, $o2, 0),                     $meq;                # eq  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 1),                     $mlt;                # lt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 2),   flipBitsUnderMask $mgt, $mi;           # le  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 4),   flipBitsUnderMask $meq, $mi;           # ne  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 5),   flipBitsUnderMask $mlt, $mi;           # ge  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 6),                     $mgt;                # gt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    my ($mi, $meq, $mlt, $mgt, $o1, $o2) = (                                      # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.                            '1'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '1',
   '0'.                            '0'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0',
   '0'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0',
   '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '1'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '0'.                            '1',
   '00000000110000001000000001100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000110000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000',
   '00000000110000000000000001100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000001100000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000',
  );
    for my $i(\($mi, $meq, $mlt, $mgt))
     {$$i = zBytes(6).$$i;
     }

    is_deeply VPCMPUD($mi, $o1, $o2, 0),                     $meq;                # eq  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 1),                     $mlt;                # lt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 2),   flipBitsUnderMask $mgt, $mi;           # le  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 4),   flipBitsUnderMask $meq, $mi;           # ne  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 5),   flipBitsUnderMask $mlt, $mi;           # ge  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUD($mi, $o1, $o2, 6),                     $mgt;                # gt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPCMPUQ($k2, $xmm1, $xmm2, $op)

Packed CoMPare Unsigned Qword

     Parameter  Description
  1  $k2        Input mask
  2  $xmm1      Qwords
  3  $xmm2      Qwords
  4  $op        Test code

Example:

    my ($mi, $meq, $mlt, $mgt, $o1, $o2) = (                                      # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.                                                            '1'.                                                            '1'.                                                            '1'.                                                            '1'.                                                            '0'.                                                            '0'.                                                            '1',
   '0'.                                                            '1'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '0',
   '1'.                                                            '0'.                                                            '1'.                                                            '1'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '0',
   '0'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '1'.                                                            '0'.                                                            '0'.                                                            '1',
   '00000000110000001000000001100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000110000000110000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000',
   '00000000110000001000000001100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000011000001100000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000',
  );
    for my $i(\($mi, $meq, $mlt, $mgt))
     {$$i = zBytes(7).$$i;
     }

    is_deeply VPCMPUQ($mi, $o1, $o2, 0),                     $meq;                # eq  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 1),                     $mlt;                # lt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 2),   flipBitsUnderMask $mgt, $mi;           # le  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 4),   flipBitsUnderMask $meq, $mi;           # ne  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 5),   flipBitsUnderMask $mlt, $mi;           # ge  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 6),                     $mgt;                # gt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    my ($mi, $meq, $mlt, $mgt, $o1, $o2) = (                                      # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '1'.                                                            '1'.                                                            '1'.                                                            '1'.                                                            '1'.                                                            '0'.                                                            '0'.                                                            '1',
   '0'.                                                            '1'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '0',
   '1'.                                                            '0'.                                                            '1'.                                                            '1'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '0',
   '0'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '1'.                                                            '0'.                                                            '0'.                                                            '1',
   '00000000110000001000000001100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000110000000110000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000',
   '00000000110000001000000001100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000011000001100000111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000',
  );
    for my $i(\($mi, $meq, $mlt, $mgt))
     {$$i = zBytes(7).$$i;
     }

    is_deeply VPCMPUQ($mi, $o1, $o2, 0),                     $meq;                # eq  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 1),                     $mlt;                # lt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 2),   flipBitsUnderMask $mgt, $mi;           # le  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 4),   flipBitsUnderMask $meq, $mi;           # ne  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 5),   flipBitsUnderMask $mlt, $mi;           # ge  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲


    is_deeply VPCMPUQ($mi, $o1, $o2, 6),                     $mgt;                # gt  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPTEST

Packed TEST

VPTESTM

Packed TEST MASK

VPTESTMB($xmm1, $xmm2)

Packed TEST Mask Byte

     Parameter  Description
  1  $xmm1      Bytes
  2  $xmm2      Bytes

Example:

    my ($o1, $o2, $k1) = (                                                        # 128
  #Q0                                                               1                                                               2
  #D0                               1                               2                               3                               4
  #W0               1               2               3               4               5               6               7               0
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670
   '00000001000010000000000011000000000100000000001000010010000000000001100000000000000010100000101000011000000000111111111100010000',
   '10000001000010000000100011001000000001000001000000001100000001000000000000010010000101000001010000000110000111000000000000010000',
   '1'.    '1'.    '0'.    '1'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '0'.    '1',
  );

    is_deeply VPTESTMB($o1, $o2), zBytes(6).$k1;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPTESTMW($xmm1, $xmm2)

Packed TEST Mask Word

     Parameter  Description
  1  $xmm1      Words
  2  $xmm2      Words

Example:

    my ($o1, $o2, $k1) = (                                                        # 256
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '0000110100001000000000001100000000010000000000000001001000000000000000000000000000000000110000000000000000000000000011000001000100000001000010000000000011000000000100000000000000010010000000000000010000000000000000000000000000000000000000000000000000010000',
   '0000000101001000000000001100000000010000110000000001001000000000000000000000000000000011000000000000000110000000000000010001000100000001100010000000000011000000000100000010000000010010001000000000000000010000000000000100000000000001100000000000000000010000',
   '1'.            '1'.            '1'.            '1'.            '0'.            '0'.            '0'.            '1'.            '1'.            '1'.            '1'.            '1'.            '0'.            '0'.            '0'.            '1',
  );


    is_deeply VPTESTMW($o1, $o2), zBytes(6).$k1;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPTESTMD($xmm1, $xmm2)

Packed TEST Mask Dword

     Parameter  Description
  1  $xmm1      Dwords
  2  $xmm2      Dwords

Example:

    my ($o1, $o2, $k1) = (                                                        # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '00011001000010100100000011000000000100000101000000010010000000000000000000000000000000000000000000000001001000100000000000010000000000010000100000000000110000000001000000000000000100000000000000000100000000000000000000000000000000000111110000000000000100000000000100001000000000001110000000010000000000000001111000000000000000001110000000000000000000000001001010101010000000000001000000000001000010000000000011000000000100000100000000010010001000000000010000000000000000000000000000000000000000000000000000010000',
   '00010101000010101000000011000000000100000010100000010010000000000000000000000000000000000000000000000001010010000000000000010000000000010000100000000000110000000001000000000000000100100000010000000001000000000000000000000000000000111100001111100000000100000000000000000000000000000100010000000000000000000000000011000000000000001001000000000000000000000001001001010001010100000001000000000000000000000000000000000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000010000',
   '1'.                            '1'.                            '0'.                            '1'.                            '1'.                            '1'.                            '0'.                            '1'.                            '1'.                            '0'.                            '1'.                            '1'.                            '0'.                            '0'.                            '0'.                            '1',
  );


    is_deeply VPTESTMD($o1, $o2), zBytes(6).$k1;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPTESTMQ($xmm1, $xmm2)

Packed TEST Mask Quad

     Parameter  Description
  1  $xmm1      Quads
  2  $xmm2      Quads

Example:

    my ($o1, $o2, $k1) = (                                                        # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '00011001000010100100000011000000000100000101000000010010000000000000000000000000000000000000000000000001001000100000000000010000000000010000100000000000110000000001000000000000000100000000000000000100000000000000000000000000000000000111110000000000000100000000000100001000000000001110000000010000000000000001001000000000000000000110000000000000000000000000000010101010000000000001000000000001000010000000000011000000000100000100000000010010001000000000010000000001111111111111111111111111111111111111111100000000',
   '00010101000010101000000011000000000100000010100000010010000000000000000000000000000000000000000000000000000000000000000000100000000000001000010000000000000011000000000000000011000000100000010000000001000000000000000000000000000000111000001111100000000000000000000000000000000000000100010000000000000000000001001000000000000000001001000000000000000000000001001001010001010100000010000000000000001100000000000100100000001000100000000000100100000010000000010000000000000000000000000000000000000000000000000000010000',
   '1'.                                                            '0'.                                                            '0'.                                                            '0'.                                                            '1'.                                                            '0'.                                                            '0'.                                                            '1',
  );


    is_deeply VPTESTMQ($o1, $o2), zBytes(7).$k1;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPBROADCAST

VPBROADCASTB - Packed BROADCAST Byte

VPBROADCASTB($size, $b)

Packed TEST Mask Byte

     Parameter  Description
  1  $size      Size of target in bits
  2  $b         Byte

Example:

    my $b = '00010011' x 64;

    is_deeply VPBROADCASTB(512, '00010011'),                                                         $b;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

    is_deeply VPBROADCASTW(512, '0001001100010011'),                                                 $b;
    is_deeply VPBROADCASTD(512, '00010011000100110001001100010011'),                                 $b;
    is_deeply VPBROADCASTQ(512, '0001001100010011000100110001001100010011000100110001001100010011'), $b;

VPBROADCASTW($size, $w)

Packed TEST Mask Word

     Parameter  Description
  1  $size      Size of target in bits
  2  $w         Word

VPBROADCASTD($size, $d)

Packed TEST Mask Dword

     Parameter  Description
  1  $size      Size of target in bits
  2  $d         Dword

VPBROADCASTQ($size, $q)

Packed TEST Mask Quad

     Parameter  Description
  1  $size      Size of target in bits
  2  $q         Byte

VPINSR

Packed INSeRt

VPINSRB($target, $byte, $pos)

Packed INSeRt Byte

     Parameter  Description
  1  $target    Target element
  2  $byte      Byte
  3  $pos       Position to insert byte expressed as number of bytes from lowest order byte numbered 0

Example:

    my ($i, $ob, $ow, $od, $oq) = (                                               # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000000001000000010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100000000000100000001000000010000000100001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100000000111111110000000011111111000000000001000000010000000100000001000000010000000100000001000000010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
  );


    is_deeply VPINSRB($i, '00010000',                                                         60), $ob;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

    is_deeply VPINSRW($i, '0001000000010000',                                                 30), $ow;
    is_deeply VPINSRD($i, '00010000000100000001000000010000',                                 14), $od;
    is_deeply VPINSRQ($i, '0001000000010000000100000001000000010000000100000001000000010000',  6), $oq;

VPINSRW($target, $word, $pos)

Packed INSeRt Word

     Parameter  Description
  1  $target    Target element
  2  $word      Word
  3  $pos       Position to insert byte expressed as number of words from lowest order word numbered 0

Example:

    my ($i, $ob, $ow, $od, $oq) = (                                               # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000000001000000010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100000000000100000001000000010000000100001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100000000111111110000000011111111000000000001000000010000000100000001000000010000000100000001000000010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
  );

    is_deeply VPINSRB($i, '00010000',                                                         60), $ob;

    is_deeply VPINSRW($i, '0001000000010000',                                                 30), $ow;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

    is_deeply VPINSRD($i, '00010000000100000001000000010000',                                 14), $od;
    is_deeply VPINSRQ($i, '0001000000010000000100000001000000010000000100000001000000010000',  6), $oq;

VPINSRD($target, $dword, $pos)

Packed INSeRt Dword

     Parameter  Description
  1  $target    Target element
  2  $dword     Dword
  3  $pos       Position to insert byte expressed as number of dwords from lowest order dword numbered 0

Example:

    my ($i, $ob, $ow, $od, $oq) = (                                               # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000000001000000010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100000000000100000001000000010000000100001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100000000111111110000000011111111000000000001000000010000000100000001000000010000000100000001000000010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
  );

    is_deeply VPINSRB($i, '00010000',                                                         60), $ob;
    is_deeply VPINSRW($i, '0001000000010000',                                                 30), $ow;

    is_deeply VPINSRD($i, '00010000000100000001000000010000',                                 14), $od;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

    is_deeply VPINSRQ($i, '0001000000010000000100000001000000010000000100000001000000010000',  6), $oq;

VPINSRQ($target, $qword, $pos)

Packed INSeRt Quad

     Parameter  Description
  1  $target    Target element
  2  $qword     Qword
  3  $pos       Position to insert byte expressed as number of dwords from lowest order qword numbered 0

Example:

    my ($i, $ob, $ow, $od, $oq) = (                                               # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '11111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000000001000000010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100000000000100000001000000010000000100001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
   '11111111000000001111111100000000111111110000000011111111000000000001000000010000000100000001000000010000000100000001000000010000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000111111110000000011111111000000001111111100000000',
  );

    is_deeply VPINSRB($i, '00010000',                                                         60), $ob;
    is_deeply VPINSRW($i, '0001000000010000',                                                 30), $ow;
    is_deeply VPINSRD($i, '00010000000100000001000000010000',                                 14), $od;

    is_deeply VPINSRQ($i, '0001000000010000000100000001000000010000000100000001000000010000',  6), $oq;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPLZCNT

Packed Leading Zero CouNT

VPLZCNTD($target)

Packed Leading Zero CouNT Dword

     Parameter  Description
  1  $target    Target element

Example:

    my ($i, $od, $oq) = (                                                         # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '00000000101010100000001101010100101110101001111111010101011100110010100101010111110010101001010101100110100100001000110010101000011111010100111100101100000000000010001111001010111010111111111101001010100010111111001000010000100010100100111111100000000011010010010010000101101011110000000100011111111000000010000010101110111000000000011000111110100001000111111110001000000101011111100000000011101111100000100111111110000010011111111000000000111011101100000000001000111100011110010000011111111000001000010110010111',
   '00000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000001000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000110000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000011',
   '00000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000',
  );


    is_deeply VPLZCNTD($i), $od;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

    is_deeply VPLZCNTQ($i), $oq;

VPLZCNTQ($target)

Packed Leading Zero CouNT Qword

     Parameter  Description
  1  $target    Target element

Example:

    my ($i, $od, $oq) = (                                                         # 512
  #Q0                                                               1                                                               2                                                               3                                                               4                                                               5                                                               6                                                               7                                                               8
  #D0                               1                               2                               3                               4                               5                               6                               7                               0                               1                               2                               3                               4                               5                               6                               7                               8
  #W0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               0               1               2               3               4               5               6               7               8
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       8
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345678
   '00000000101010100000001101010100101110101001111111010101011100110010100101010111110010101001010101100110100100001000110010101000011111010100111100101100000000000010001111001010111010111111111101001010100010111111001000010000100010100100111111100000000011010010010010000101101011110000000100011111111000000010000010101110111000000000011000111110100001000111111110001000000101011111100000000011101111100000100111111110000010011111111000000000111011101100000000001000111100011110010000011111111000001000010110010111',
   '00000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000001000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000110000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000011',
   '00000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000',
  );

    is_deeply VPLZCNTD($i), $od;

    is_deeply VPLZCNTQ($i), $oq;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

Compress and Expand

Compress or expand

VPCOMPRESS

Packed COMPRESS

VPCOMPRESSD($xmm1, $k2, $z, $xmm2)

Packed COMPRESS Dword

     Parameter  Description
  1  $xmm1      Compression target
  2  $k2        Compression mask
  3  $z         Clear upper elements
  4  $xmm2      Source to compress

Example:

    my ($m, $i, $o, $p) = (                                                       # 128
  #Q0                                                               1                                                               2
  #D0                               1                               2                               3                               4
  #W0               1               2               3               4               5               6               7               0
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670
   '1'.                            '0'.                            '1'.                            '0',
   '11000000000000000000000000000000111111111111111111111111111111101000000000000000000000000000000011111111111111111111111111111111',
   '00000000000000000000000000000000111111111111111000000000000000001100000000000000000000000000000010000000000000000000000000000000',
   '11000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000',
  );
    $m = zBytes(7).'0000'.$m;                                                     # Zero pad mask

    is_deeply VPCOMPRESSD($o, $m, 0, $i), $o;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

    is_deeply VPEXPANDD  ($p, $m, 0, $o), $p;

VPCOMPRESSQ($xmm1, $k2, $z, $xmm2)

Packed COMPRESS Qword

     Parameter  Description
  1  $xmm1      Compression target
  2  $k2        Compression mask
  3  $z         Clear upper elements
  4  $xmm2      Source to compress

Example:

    my ($m, $i, $o, $p) = (                                                       # 128
  #Q0                                                               1                                                               2
  #D0                               1                               2                               3                               4
  #W0               1               2               3               4               5               6               7               0
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670
   '1'.                                                            '0',
   '10000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111',
   '00000000000000000000000000000000111111111111111000000000000000001000000000000000000000000000000000000000000000000000000000000000',
   '10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );
    $m = zBytes(7).'000000'.$m;                                                   # Zero pad mask

    is_deeply VPCOMPRESSQ($o, $m, 0, $i), $o;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

    is_deeply VPEXPANDQ  ($p, $m, 0, $o), $p;

VPEXPAND

Packed EXPAND

VPEXPANDD($xmm1, $k2, $z, $xmm2)

Packed EXPAND Dword

     Parameter  Description
  1  $xmm1      Compression target
  2  $k2        Expansion mask
  3  $z         Clear upper elements
  4  $xmm2      Source to expand

Example:

    my ($m, $i, $o, $p) = (                                                       # 128
  #Q0                                                               1                                                               2
  #D0                               1                               2                               3                               4
  #W0               1               2               3               4               5               6               7               0
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670
   '1'.                            '0'.                            '1'.                            '0',
   '11000000000000000000000000000000111111111111111111111111111111101000000000000000000000000000000011111111111111111111111111111111',
   '00000000000000000000000000000000111111111111111000000000000000001100000000000000000000000000000010000000000000000000000000000000',
   '11000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000',
  );
    $m = zBytes(7).'0000'.$m;                                                     # Zero pad mask
    is_deeply VPCOMPRESSD($o, $m, 0, $i), $o;

    is_deeply VPEXPANDD  ($p, $m, 0, $o), $p;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

VPEXPANDQ($xmm1, $k2, $z, $xmm2)

Packed EXPAND Qword

     Parameter  Description
  1  $xmm1      Compression target
  2  $k2        Expansion mask
  3  $z         Clear upper elements
  4  $xmm2      Source to expand

Example:

    my ($m, $i, $o, $p) = (                                                       # 128
  #Q0                                                               1                                                               2
  #D0                               1                               2                               3                               4
  #W0               1               2               3               4               5               6               7               0
  #B0       1       2       3       4       5       6       7       0       1       2       3       4       5       6       7       0
  #b012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670123456701234567012345670
   '1'.                                                            '0',
   '10000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111',
   '00000000000000000000000000000000111111111111111000000000000000001000000000000000000000000000000000000000000000000000000000000000',
   '10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  );
    $m = zBytes(7).'000000'.$m;                                                   # Zero pad mask
    is_deeply VPCOMPRESSQ($o, $m, 0, $i), $o;

    is_deeply VPEXPANDQ  ($p, $m, 0, $o), $p;  # 𝗘𝘅𝗮𝗺𝗽𝗹𝗲

Private Methods

pcmpeq($size, $xmm1, $xmm2)

Packed CoMPare EQual

     Parameter  Description
  1  $size      Size in bits
  2  $xmm1      Element
  3  $xmm2      Element

pcmpgt($size, $xmm1, $xmm2)

Packed CoMPare Greater Than

     Parameter  Description
  1  $size      Size in bits
  2  $xmm1      Element
  3  $xmm2      Element

vpcmpeq($size, $k2, $xmm1, $xmm2)

Packed CoMPare EQual Byte|word|double|quad with optional masking

     Parameter  Description
  1  $size      Size in bits: 8|16|32|64 of each element
  2  $k2        Optional input mask
  3  $xmm1      Bytes
  4  $xmm2      Bytes

vpcmp($size, $k2, $xmm1, $xmm2, $op)

Packed CoMPare

     Parameter  Description
  1  $size      Size of element in bits
  2  $k2        Input mask
  3  $xmm1      Bytes
  4  $xmm2      Bytes
  5  $op        Test code

vpcmpu($size, $k2, $xmm1, $xmm2, $op)

Packed CoMPare Unsigned

     Parameter  Description
  1  $size      Size of element in bits
  2  $k2        Input mask
  3  $xmm1      Bytes
  4  $xmm2      Bytes
  5  $op        Test code

andAndTest($a, $b)

And two bit strings of the same length and return 0 if the result is 0 else 1

     Parameter  Description
  1  $a         Element
  2  $b         Element

vptest($size, $xmm1, $xmm2)

Packed TEST

     Parameter  Description
  1  $size      Size of element in bits
  2  $xmm1      Element
  3  $xmm2      Element

vpcompress($size, $xmm1, $k2, $z, $xmm2)

Packed COMPRESS

     Parameter  Description
  1  $size      Size of each element in bits
  2  $xmm1      Compression target
  3  $k2        Compression mask
  4  $z         Clear upper elements
  5  $xmm2      Source to compress

vpexpand($size, $xmm1, $k2, $z, $xmm2)

Packed EXPAND

     Parameter  Description
  1  $size      Size of each element in bits
  2  $xmm1      Compression target
  3  $k2        Expansion mask
  4  $z         Clear upper elements
  5  $xmm2      Source to expand

Index

1 andAndTest - And two bit strings of the same length and return 0 if the result is 0 else 1

2 pcmpeq - Packed CoMPare EQual

3 PCMPEQB - Packed CoMPare EQual Byte

4 PCMPEQD - Packed CoMPare EQual DWord

5 PCMPEQQ - Packed CoMPare EQual QWord

6 PCMPEQW - Packed CoMPare EQual Word

7 pcmpgt - Packed CoMPare Greater Than

8 PCMPGTB - Packed CoMPare Greater Than Byte

9 PCMPGTD - Packed CoMPare Greater Than DWord

10 PCMPGTQ - Packed CoMPare Greater Than QWord

11 PCMPGTW - Packed CoMPare Greater Than Word

12 PSLLDQ - Packed Shift Left Logical DoubleQword

13 PSRLDQ - Packed Shift Right Logical DoubleQword

14 VPBROADCASTB - Packed TEST Mask Byte

15 VPBROADCASTD - Packed TEST Mask Dword

16 VPBROADCASTQ - Packed TEST Mask Quad

17 VPBROADCASTW - Packed TEST Mask Word

18 vpcmp - Packed CoMPare

19 VPCMPB - Packed CoMPare Byte

20 VPCMPD - Packed CoMPare Dword

21 vpcmpeq - Packed CoMPare EQual Byte|word|double|quad with optional masking

22 VPCMPEQB - Packed CoMPare EQual Byte with optional masking

23 VPCMPEQD - Packed CoMPare EQual Byte with optional masking

24 VPCMPEQQ - Packed CoMPare EQual Byte with optional masking

25 VPCMPEQW - Packed CoMPare EQual Byte with optional masking

26 VPCMPQ - Packed CoMPare Qword

27 vpcmpu - Packed CoMPare Unsigned

28 VPCMPUB - Packed CoMPare Unsigned Byte

29 VPCMPUD - Packed CoMPare Unsigned Dword

30 VPCMPUQ - Packed CoMPare Unsigned Qword

31 VPCMPUW - Packed CoMPare Unsigned Word

32 VPCMPW - Packed CoMPare Word

33 vpcompress - Packed COMPRESS

34 VPCOMPRESSD - Packed COMPRESS Dword

35 VPCOMPRESSQ - Packed COMPRESS Qword

36 vpexpand - Packed EXPAND

37 VPEXPANDD - Packed EXPAND Dword

38 VPEXPANDQ - Packed EXPAND Qword

39 VPINSRB - Packed INSeRt Byte

40 VPINSRD - Packed INSeRt Dword

41 VPINSRQ - Packed INSeRt Quad

42 VPINSRW - Packed INSeRt Word

43 VPLZCNTD - Packed Leading Zero CouNT Dword

44 VPLZCNTQ - Packed Leading Zero CouNT Qword

45 VPSLLDQ - Packed Shift Left Logical DoubleQword

46 VPSRLDQ - Packed Shift Right Logical DoubleQword

47 vptest - Packed TEST

48 VPTESTMB - Packed TEST Mask Byte

49 VPTESTMD - Packed TEST Mask Dword

50 VPTESTMQ - Packed TEST Mask Quad

51 VPTESTMW - Packed TEST Mask Word

Installation

This module is written in 100% Pure Perl and, thus, it is easy to read, comprehend, use, modify and install via cpan:

  sudo cpan install Simd::Avx512

Author

philiprbrenan@gmail.com

http://www.appaapps.com

Copyright

Copyright (c) 2016-2021 Philip R Brenan.

This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.