@@ -959,53 +959,55 @@ sub _aes_gcm_update {
959
959
$code .= _end_func;
960
960
961
961
sub filter_and_print {
962
- my %asmMap = (
963
- ' vaesenc %ymm2, %ymm12, %ymm12' => ' .byte 0xc4,0x62,0x1d,0xdc,0xe2' ,
964
- ' vaesenc %ymm2, %ymm13, %ymm13' => ' .byte 0xc4,0x62,0x15,0xdc,0xea' ,
965
- ' vaesenc %ymm2, %ymm14, %ymm14' => ' .byte 0xc4,0x62,0x0d,0xdc,0xf2' ,
966
- ' vaesenc %ymm2, %ymm15, %ymm15' => ' .byte 0xc4,0x62,0x05,0xdc,0xfa' ,
967
- ' vaesenclast %ymm10, %ymm12, %ymm12' => ' .byte 0xc4,0x42,0x1d,0xdd,0xe2' ,
968
- ' vaesenclast %ymm10, %ymm13, %ymm13' => ' .byte 0xc4,0x42,0x15,0xdd,0xea' ,
969
- ' vaesenclast %ymm2, %ymm12, %ymm12' => ' .byte 0xc4,0x62,0x1d,0xdd,0xe2' ,
970
- ' vaesenclast %ymm3, %ymm13, %ymm13' => ' .byte 0xc4,0x62,0x15,0xdd,0xeb' ,
971
- ' vaesenclast %ymm5, %ymm14, %ymm14' => ' .byte 0xc4,0x62,0x0d,0xdd,0xf5' ,
972
- ' vaesenclast %ymm6, %ymm15, %ymm15' => ' .byte 0xc4,0x62,0x05,0xdd,0xfe' ,
973
- ' vpclmulqdq $0x00, %ymm2, %ymm12, %ymm4' => ' .byte 0xc4,0xe3,0x1d,0x44,0xe2,0x00' ,
974
- ' vpclmulqdq $0x00, %ymm2, %ymm12, %ymm5' => ' .byte 0xc4,0xe3,0x1d,0x44,0xea,0x00' ,
975
- ' vpclmulqdq $0x00, %ymm3, %ymm13, %ymm4' => ' .byte 0xc4,0xe3,0x15,0x44,0xe3,0x00' ,
976
- ' vpclmulqdq $0x00, %ymm4, %ymm3, %ymm2' => ' .byte 0xc4,0xe3,0x65,0x44,0xd4,0x00' ,
977
- ' vpclmulqdq $0x00, %ymm4, %ymm3, %ymm5' => ' .byte 0xc4,0xe3,0x65,0x44,0xec,0x00' ,
978
- ' vpclmulqdq $0x00, %ymm5, %ymm3, %ymm0' => ' .byte 0xc4,0xe3,0x65,0x44,0xc5,0x00' ,
979
- ' vpclmulqdq $0x00, %ymm5, %ymm4, %ymm0' => ' .byte 0xc4,0xe3,0x5d,0x44,0xc5,0x00' ,
980
- ' vpclmulqdq $0x00, %ymm7, %ymm2, %ymm6' => ' .byte 0xc4,0xe3,0x6d,0x44,0xf7,0x00' ,
981
- ' vpclmulqdq $0x00, %ymm8, %ymm2, %ymm2' => ' .byte 0xc4,0xc3,0x6d,0x44,0xd0,0x00' ,
982
- ' vpclmulqdq $0x01, %ymm0, %ymm6, %ymm2' => ' .byte 0xc4,0xe3,0x4d,0x44,0xd0,0x01' ,
983
- ' vpclmulqdq $0x01, %ymm1, %ymm6, %ymm0' => ' .byte 0xc4,0xe3,0x4d,0x44,0xc1,0x01' ,
984
- ' vpclmulqdq $0x01, %ymm2, %ymm12, %ymm4' => ' .byte 0xc4,0xe3,0x1d,0x44,0xe2,0x01' ,
985
- ' vpclmulqdq $0x01, %ymm2, %ymm12, %ymm6' => ' .byte 0xc4,0xe3,0x1d,0x44,0xf2,0x01' ,
986
- ' vpclmulqdq $0x01, %ymm3, %ymm13, %ymm4' => ' .byte 0xc4,0xe3,0x15,0x44,0xe3,0x01' ,
987
- ' vpclmulqdq $0x01, %ymm5, %ymm2, %ymm3' => ' .byte 0xc4,0xe3,0x6d,0x44,0xdd,0x01' ,
988
- ' vpclmulqdq $0x01, %ymm5, %ymm3, %ymm1' => ' .byte 0xc4,0xe3,0x65,0x44,0xcd,0x01' ,
989
- ' vpclmulqdq $0x01, %ymm5, %ymm4, %ymm1' => ' .byte 0xc4,0xe3,0x5d,0x44,0xcd,0x01' ,
990
- ' vpclmulqdq $0x01, %ymm5, %ymm4, %ymm2' => ' .byte 0xc4,0xe3,0x5d,0x44,0xd5,0x01' ,
991
- ' vpclmulqdq $0x01, %ymm6, %ymm2, %ymm3' => ' .byte 0xc4,0xe3,0x6d,0x44,0xde,0x01' ,
992
- ' vpclmulqdq $0x01, %ymm6, %ymm4, %ymm2' => ' .byte 0xc4,0xe3,0x5d,0x44,0xd6,0x01' ,
993
- ' vpclmulqdq $0x10, %ymm2, %ymm12, %ymm4' => ' .byte 0xc4,0xe3,0x1d,0x44,0xe2,0x10' ,
994
- ' vpclmulqdq $0x10, %ymm3, %ymm13, %ymm4' => ' .byte 0xc4,0xe3,0x15,0x44,0xe3,0x10' ,
995
- ' vpclmulqdq $0x10, %ymm5, %ymm3, %ymm2' => ' .byte 0xc4,0xe3,0x65,0x44,0xd5,0x10' ,
996
- ' vpclmulqdq $0x10, %ymm5, %ymm4, %ymm2' => ' .byte 0xc4,0xe3,0x5d,0x44,0xd5,0x10' ,
997
- ' vpclmulqdq $0x10, %ymm7, %ymm2, %ymm2' => ' .byte 0xc4,0xe3,0x6d,0x44,0xd7,0x10' ,
998
- ' vpclmulqdq $0x10, %ymm8, %ymm2, %ymm2' => ' .byte 0xc4,0xc3,0x6d,0x44,0xd0,0x10' ,
999
- ' vpclmulqdq $0x11, %ymm2, %ymm12, %ymm4' => ' .byte 0xc4,0xe3,0x1d,0x44,0xe2,0x11' ,
1000
- ' vpclmulqdq $0x11, %ymm2, %ymm12, %ymm7' => ' .byte 0xc4,0xe3,0x1d,0x44,0xfa,0x11' ,
1001
- ' vpclmulqdq $0x11, %ymm3, %ymm13, %ymm4' => ' .byte 0xc4,0xe3,0x15,0x44,0xe3,0x11' ,
1002
- ' vpclmulqdq $0x11, %ymm4, %ymm3, %ymm1' => ' .byte 0xc4,0xe3,0x65,0x44,0xcc,0x11' ,
1003
- ' vpclmulqdq $0x11, %ymm4, %ymm3, %ymm2' => ' .byte 0xc4,0xe3,0x65,0x44,0xd4,0x11' ,
1004
- ' vpclmulqdq $0x11, %ymm5, %ymm3, %ymm4' => ' .byte 0xc4,0xe3,0x65,0x44,0xe5,0x11' ,
1005
- ' vpclmulqdq $0x11, %ymm5, %ymm4, %ymm3' => ' .byte 0xc4,0xe3,0x5d,0x44,0xdd,0x11' ,
962
+ # This function replaces AVX2 assembly instructions with their assembled forms,
963
+ # to allow the code to work on old versions of binutils (older than 2.30) that do
964
+ # not support these instructions.
965
+ my %asmMap = (
966
+ ' vaesenc %ymm2, %ymm12, %ymm12' => ' .byte 0xc4,0x62,0x1d,0xdc,0xe2' ,
967
+ ' vaesenc %ymm2, %ymm13, %ymm13' => ' .byte 0xc4,0x62,0x15,0xdc,0xea' ,
968
+ ' vaesenc %ymm2, %ymm14, %ymm14' => ' .byte 0xc4,0x62,0x0d,0xdc,0xf2' ,
969
+ ' vaesenc %ymm2, %ymm15, %ymm15' => ' .byte 0xc4,0x62,0x05,0xdc,0xfa' ,
970
+ ' vaesenclast %ymm10, %ymm12, %ymm12' => ' .byte 0xc4,0x42,0x1d,0xdd,0xe2' ,
971
+ ' vaesenclast %ymm10, %ymm13, %ymm13' => ' .byte 0xc4,0x42,0x15,0xdd,0xea' ,
972
+ ' vaesenclast %ymm2, %ymm12, %ymm12' => ' .byte 0xc4,0x62,0x1d,0xdd,0xe2' ,
973
+ ' vaesenclast %ymm3, %ymm13, %ymm13' => ' .byte 0xc4,0x62,0x15,0xdd,0xeb' ,
974
+ ' vaesenclast %ymm5, %ymm14, %ymm14' => ' .byte 0xc4,0x62,0x0d,0xdd,0xf5' ,
975
+ ' vaesenclast %ymm6, %ymm15, %ymm15' => ' .byte 0xc4,0x62,0x05,0xdd,0xfe' ,
976
+ ' vpclmulqdq $0x00, %ymm2, %ymm12, %ymm4' => ' .byte 0xc4,0xe3,0x1d,0x44,0xe2,0x00' ,
977
+ ' vpclmulqdq $0x00, %ymm2, %ymm12, %ymm5' => ' .byte 0xc4,0xe3,0x1d,0x44,0xea,0x00' ,
978
+ ' vpclmulqdq $0x00, %ymm3, %ymm13, %ymm4' => ' .byte 0xc4,0xe3,0x15,0x44,0xe3,0x00' ,
979
+ ' vpclmulqdq $0x00, %ymm4, %ymm3, %ymm2' => ' .byte 0xc4,0xe3,0x65,0x44,0xd4,0x00' ,
980
+ ' vpclmulqdq $0x00, %ymm4, %ymm3, %ymm5' => ' .byte 0xc4,0xe3,0x65,0x44,0xec,0x00' ,
981
+ ' vpclmulqdq $0x00, %ymm5, %ymm3, %ymm0' => ' .byte 0xc4,0xe3,0x65,0x44,0xc5,0x00' ,
982
+ ' vpclmulqdq $0x00, %ymm5, %ymm4, %ymm0' => ' .byte 0xc4,0xe3,0x5d,0x44,0xc5,0x00' ,
983
+ ' vpclmulqdq $0x00, %ymm7, %ymm2, %ymm6' => ' .byte 0xc4,0xe3,0x6d,0x44,0xf7,0x00' ,
984
+ ' vpclmulqdq $0x00, %ymm8, %ymm2, %ymm2' => ' .byte 0xc4,0xc3,0x6d,0x44,0xd0,0x00' ,
985
+ ' vpclmulqdq $0x01, %ymm0, %ymm6, %ymm2' => ' .byte 0xc4,0xe3,0x4d,0x44,0xd0,0x01' ,
986
+ ' vpclmulqdq $0x01, %ymm1, %ymm6, %ymm0' => ' .byte 0xc4,0xe3,0x4d,0x44,0xc1,0x01' ,
987
+ ' vpclmulqdq $0x01, %ymm2, %ymm12, %ymm4' => ' .byte 0xc4,0xe3,0x1d,0x44,0xe2,0x01' ,
988
+ ' vpclmulqdq $0x01, %ymm2, %ymm12, %ymm6' => ' .byte 0xc4,0xe3,0x1d,0x44,0xf2,0x01' ,
989
+ ' vpclmulqdq $0x01, %ymm3, %ymm13, %ymm4' => ' .byte 0xc4,0xe3,0x15,0x44,0xe3,0x01' ,
990
+ ' vpclmulqdq $0x01, %ymm5, %ymm2, %ymm3' => ' .byte 0xc4,0xe3,0x6d,0x44,0xdd,0x01' ,
991
+ ' vpclmulqdq $0x01, %ymm5, %ymm3, %ymm1' => ' .byte 0xc4,0xe3,0x65,0x44,0xcd,0x01' ,
992
+ ' vpclmulqdq $0x01, %ymm5, %ymm4, %ymm1' => ' .byte 0xc4,0xe3,0x5d,0x44,0xcd,0x01' ,
993
+ ' vpclmulqdq $0x01, %ymm5, %ymm4, %ymm2' => ' .byte 0xc4,0xe3,0x5d,0x44,0xd5,0x01' ,
994
+ ' vpclmulqdq $0x01, %ymm6, %ymm2, %ymm3' => ' .byte 0xc4,0xe3,0x6d,0x44,0xde,0x01' ,
995
+ ' vpclmulqdq $0x01, %ymm6, %ymm4, %ymm2' => ' .byte 0xc4,0xe3,0x5d,0x44,0xd6,0x01' ,
996
+ ' vpclmulqdq $0x10, %ymm2, %ymm12, %ymm4' => ' .byte 0xc4,0xe3,0x1d,0x44,0xe2,0x10' ,
997
+ ' vpclmulqdq $0x10, %ymm3, %ymm13, %ymm4' => ' .byte 0xc4,0xe3,0x15,0x44,0xe3,0x10' ,
998
+ ' vpclmulqdq $0x10, %ymm5, %ymm3, %ymm2' => ' .byte 0xc4,0xe3,0x65,0x44,0xd5,0x10' ,
999
+ ' vpclmulqdq $0x10, %ymm5, %ymm4, %ymm2' => ' .byte 0xc4,0xe3,0x5d,0x44,0xd5,0x10' ,
1000
+ ' vpclmulqdq $0x10, %ymm7, %ymm2, %ymm2' => ' .byte 0xc4,0xe3,0x6d,0x44,0xd7,0x10' ,
1001
+ ' vpclmulqdq $0x10, %ymm8, %ymm2, %ymm2' => ' .byte 0xc4,0xc3,0x6d,0x44,0xd0,0x10' ,
1002
+ ' vpclmulqdq $0x11, %ymm2, %ymm12, %ymm4' => ' .byte 0xc4,0xe3,0x1d,0x44,0xe2,0x11' ,
1003
+ ' vpclmulqdq $0x11, %ymm2, %ymm12, %ymm7' => ' .byte 0xc4,0xe3,0x1d,0x44,0xfa,0x11' ,
1004
+ ' vpclmulqdq $0x11, %ymm3, %ymm13, %ymm4' => ' .byte 0xc4,0xe3,0x15,0x44,0xe3,0x11' ,
1005
+ ' vpclmulqdq $0x11, %ymm4, %ymm3, %ymm1' => ' .byte 0xc4,0xe3,0x65,0x44,0xcc,0x11' ,
1006
+ ' vpclmulqdq $0x11, %ymm4, %ymm3, %ymm2' => ' .byte 0xc4,0xe3,0x65,0x44,0xd4,0x11' ,
1007
+ ' vpclmulqdq $0x11, %ymm5, %ymm3, %ymm4' => ' .byte 0xc4,0xe3,0x65,0x44,0xe5,0x11' ,
1008
+ ' vpclmulqdq $0x11, %ymm5, %ymm4, %ymm3' => ' .byte 0xc4,0xe3,0x5d,0x44,0xdd,0x11' ,
1006
1009
);
1007
1010
for my $line (split (" \n " ,$code )) {
1008
-
1009
1011
my $trimmed ;
1010
1012
$trimmed = $line ;
1011
1013
$trimmed =~ s / ^\s +// ;
0 commit comments