From 8045bee170852d2c9459a277c84e43e1702765bf Mon Sep 17 00:00:00 2001 From: Pablo de Lara Date: Tue, 29 Apr 2025 21:25:03 +0000 Subject: [PATCH] Bump minimum NASM version to 2.14.01 NASM version 2.14.01 supports all x86 ISA in this library. Since this version has been out since 2018, it is safe to only permit the library to be compiled with this minimum version, as announced in issue #297. Signed-off-by: Pablo de Lara --- Makefile.nmake | 6 +- README.md | 3 +- Release_notes.txt | 3 + configure.ac | 61 +------------------ crc/crc16_t10dif_by16_10.asm | 9 --- crc/crc32_gzip_refl_by16_10.asm | 9 --- crc/crc32_ieee_by16_10.asm | 9 --- crc/crc32_iscsi_by16_10.asm | 9 --- crc/crc64_iso_norm_by16_10.asm | 10 --- crc/crc64_iso_refl_by16_10.asm | 9 --- crc/crc64_multibinary.asm | 2 - crc/crc_multibinary.asm | 8 --- doc/build.md | 14 +---- erasure_code/ec_highlevel_func.c | 7 --- erasure_code/ec_multibinary.asm | 14 ++--- erasure_code/gf_2vect_dot_prod_avx2_gfni.asm | 3 - erasure_code/gf_2vect_dot_prod_avx512.asm | 9 --- .../gf_2vect_dot_prod_avx512_gfni.asm | 3 - erasure_code/gf_2vect_mad_avx2_gfni.asm | 3 - erasure_code/gf_2vect_mad_avx512.asm | 9 --- erasure_code/gf_2vect_mad_avx512_gfni.asm | 3 - erasure_code/gf_3vect_dot_prod_avx2_gfni.asm | 3 - erasure_code/gf_3vect_dot_prod_avx512.asm | 9 --- .../gf_3vect_dot_prod_avx512_gfni.asm | 3 - erasure_code/gf_3vect_mad_avx2_gfni.asm | 5 -- erasure_code/gf_3vect_mad_avx512.asm | 9 --- erasure_code/gf_3vect_mad_avx512_gfni.asm | 3 - erasure_code/gf_4vect_dot_prod_avx512.asm | 9 --- .../gf_4vect_dot_prod_avx512_gfni.asm | 3 - erasure_code/gf_4vect_mad_avx2_gfni.asm | 3 - erasure_code/gf_4vect_mad_avx512.asm | 9 --- erasure_code/gf_4vect_mad_avx512_gfni.asm | 3 - erasure_code/gf_5vect_dot_prod_avx512.asm | 9 --- .../gf_5vect_dot_prod_avx512_gfni.asm | 3 - erasure_code/gf_5vect_mad_avx2_gfni.asm | 3 - erasure_code/gf_5vect_mad_avx512.asm | 9 --- erasure_code/gf_5vect_mad_avx512_gfni.asm | 3 - erasure_code/gf_6vect_dot_prod_avx512.asm | 9 --- .../gf_6vect_dot_prod_avx512_gfni.asm | 3 - erasure_code/gf_6vect_mad_avx512.asm | 9 --- erasure_code/gf_6vect_mad_avx512_gfni.asm | 3 - erasure_code/gf_vect_dot_prod_avx2_gfni.asm | 3 - erasure_code/gf_vect_dot_prod_avx512.asm | 9 --- erasure_code/gf_vect_dot_prod_avx512_gfni.asm | 3 - erasure_code/gf_vect_mad_avx2_gfni.asm | 3 - erasure_code/gf_vect_mad_avx512.asm | 9 --- erasure_code/gf_vect_mad_avx512_gfni.asm | 3 - igzip/encode_df_06.asm | 4 -- igzip/igzip_gen_icf_map_lh1_06.asm | 2 - igzip/igzip_multibinary.asm | 2 - igzip/igzip_set_long_icf_fg_06.asm | 2 - include/multibinary.asm | 22 ------- include/reg_sizes.asm | 6 -- make.inc | 20 ------ mem/mem_multibinary.asm | 4 +- mem/mem_zero_detect_avx2.asm | 3 - mem/mem_zero_detect_avx512.asm | 4 -- raid/pq_gen_avx2_gfni.asm | 4 -- raid/pq_gen_avx512.asm | 4 -- raid/pq_gen_avx512_gfni.asm | 4 -- raid/raid_multibinary.asm | 12 ++-- raid/xor_gen_avx512.asm | 4 -- tools/gen_nmake.mk | 6 +- 63 files changed, 24 insertions(+), 422 deletions(-) diff --git a/Makefile.nmake b/Makefile.nmake index 801ebad..f4c3bef 100644 --- a/Makefile.nmake +++ b/Makefile.nmake @@ -193,13 +193,11 @@ objs = \ bin\mem_multibinary.obj INCLUDES = -I./ -Ierasure_code/ -Iraid/ -Icrc/ -Iigzip/ -Iprograms/ -Imem/ -Iinclude/ -Itests/fuzz/ -Iexamples/ec/ -# Modern asm feature level, consider upgrading nasm before decreasing feature_level -FEAT_FLAGS = -DHAVE_AS_KNOWS_AVX512 -DAS_FEATURE_LEVEL=10 CFLAGS_REL = -O2 -DNDEBUG /Z7 /Gy CFLAGS_DBG = -Od -DDEBUG /Z7 LINKFLAGS = -nologo -incremental:no -debug -CFLAGS = $(CFLAGS_REL) -nologo -D_USE_MATH_DEFINES $(FEAT_FLAGS) $(INCLUDES) $(D) -AFLAGS = -f win64 $(FEAT_FLAGS) $(INCLUDES) $(D) +CFLAGS = $(CFLAGS_REL) -nologo -D_USE_MATH_DEFINES $(INCLUDES) $(D) +AFLAGS = -f win64 $(INCLUDES) $(D) CC = cl # or CC = icl -Qstd=c99 AS = nasm diff --git a/README.md b/README.md index 5f89b69..fffd60c 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,7 @@ Building ISA-L * Optional: Manual generation requires help2man package. x86_64: -* Assembler: nasm. Version 2.15 or later suggested (other versions of nasm - may build but with limited function [support](doc/build.md)). +* Assembler: nasm. 2.14.01 minimum version required [support](doc/build.md)). * Compiler: gcc, clang, icc or VC compiler. aarch64: diff --git a/Release_notes.txt b/Release_notes.txt index 41e20a7..0243f2f 100644 --- a/Release_notes.txt +++ b/Release_notes.txt @@ -141,6 +141,9 @@ v2.10 v2.32 +* General: + - Minimum NASM version required for x86 architecture is 2.14.01 now. + * RISCV support. - Initial riscv64 support with runtime and build-time CPU feature detection. diff --git a/configure.ac b/configure.ac index 05e6475..e686f03 100644 --- a/configure.ac +++ b/configure.ac @@ -135,31 +135,9 @@ int main(int argc, char **argv) if test x"$nasm_feature_level" = x"1"; then AC_MSG_CHECKING([for modern nasm]) - AC_LANG_CONFTEST([AC_LANG_SOURCE([[pblendvb xmm2, xmm1;]])]) - sed -i -e '/pblendvb/!d' conftest.c - if nasm -f elf64 conftest.c 2> /dev/null; then - AC_MSG_RESULT([yes]) - nasm_feature_level=4 - else - AC_MSG_RESULT([no]) - fi - fi - if test x"$nasm_feature_level" = x"4"; then - AC_MSG_CHECKING([for optional nasm AVX512 support]) - AC_LANG_CONFTEST([AC_LANG_SOURCE([[vinserti32x8 zmm0, ymm1, 1;]])]) - sed -i -e '/vinsert/!d' conftest.c - if nasm -f elf64 conftest.c 2> /dev/null; then - AC_MSG_RESULT([yes]) - nasm_feature_level=6 - else - AC_MSG_RESULT([no]) - fi - fi - if test x"$nasm_feature_level" = x"6"; then - AC_MSG_CHECKING([for additional nasm AVX512 support]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[vpcompressb zmm0 {k1}, zmm1;]])]) sed -i -e '/vpcompressb/!d' conftest.c - if nasm -f elf64 conftest.c 2> /dev/null; then + if nasm -f elf64 conftest.c 2> /dev/null; then AC_MSG_RESULT([yes]) nasm_feature_level=10 else @@ -181,29 +159,6 @@ int main(int argc, char **argv) fi if test x"$as_feature_level" = x"1"; then - AC_MSG_CHECKING([for modern $AS]) - AC_LANG_CONFTEST([AC_LANG_SOURCE([[pblendvb xmm2, xmm1;]])]) - sed -i -e '/pblendvb/!d' conftest.c - if $AS -f elf64 conftest.c 2> /dev/null; then - AC_MSG_RESULT([yes]) - as_feature_level=4 - else - AC_MSG_RESULT([no]) - fi - fi - if test x"$as_feature_level" = x"4"; then - AC_MSG_CHECKING([for optional as AVX512 support]) - AC_LANG_CONFTEST([AC_LANG_SOURCE([[vinserti32x8 zmm0, ymm1, 1;]])]) - sed -i -e '/vinsert/!d' conftest.c - if $AS -f elf64 conftest.c 2> /dev/null; then - AC_MSG_RESULT([yes]) - as_feature_level=6 - else - AC_MSG_RESULT([no]) - fi - fi - if test x"$as_feature_level" = x"6"; then - AC_MSG_CHECKING([for additional as AVX512 support]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[vpcompressb zmm0, k1, zmm1;]])]) sed -i -e '/vpcompressb/!d' conftest.c if $AS -f elf64 conftest.c 2> /dev/null; then @@ -215,8 +170,8 @@ int main(int argc, char **argv) fi fi - if test $as_feature_level -lt 2 ; then - AC_MSG_ERROR([No modern nasm found as required. Nasm should be v2.11.01 or later (v2.13 for AVX512).]) + if test $as_feature_level -lt 10 ; then + AC_MSG_ERROR([No modern nasm found as required. Nasm should be v2.14.01 or later.]) fi case $host_os in @@ -227,23 +182,13 @@ int main(int argc, char **argv) *) arch=unknown asm_args="-f elf64";; esac - AC_DEFINE_UNQUOTED(AS_FEATURE_LEVEL, [$as_feature_level], [Assembler feature level.]) - if test $as_feature_level -ge 6 ; then - AC_DEFINE(HAVE_AS_KNOWS_AVX512, [1], [Assembler can do AVX512.]) - have_as_knows_avx512=yes - else - AC_MSG_RESULT([Assembler does not understand AVX512 opcodes. Consider upgrading for best performance.]) - fi - AM_CONDITIONAL(USE_NASM, test x"$AS" = x"nasm") - AM_CONDITIONAL(WITH_AVX512, test x"$have_as_knows_avx512" = x"yes") AC_SUBST([asm_args]) AM_CONDITIONAL(DARWIN, test x"$arch" = x"darwin") AC_MSG_RESULT([Using $AS args target "$arch" "$asm_args"]) else # Disable below conditionals if not x86 AM_CONDITIONAL(USE_NASM, test "x" = "y") - AM_CONDITIONAL(WITH_AVX512, test "x" = "y") AM_CONDITIONAL(DARWIN, test "x" = "y") fi diff --git a/crc/crc16_t10dif_by16_10.asm b/crc/crc16_t10dif_by16_10.asm index 49a9095..7c48fb0 100644 --- a/crc/crc16_t10dif_by16_10.asm +++ b/crc/crc16_t10dif_by16_10.asm @@ -51,8 +51,6 @@ %define FUNCTION_NAME crc16_t10dif_by16_10 %endif -%if (AS_FEATURE_LEVEL) >= 10 - [bits 64] default rel @@ -576,10 +574,3 @@ dq 0x8786858483828100, 0x8f8e8d8c8b8a8988 dq 0x0706050403020100, 0x000e0d0c0b0a0908 dq 0x8080808080808080, 0x0f0e0d0c0b0a0908 dq 0x8080808080808080, 0x8080808080808080 - -%else ; Assembler doesn't understand these opcodes. Add empty symbol for windows. -%ifidn __OUTPUT_FORMAT__, win64 -global no_ %+ FUNCTION_NAME -no_ %+ FUNCTION_NAME %+ : -%endif -%endif ; (AS_FEATURE_LEVEL) >= 10 diff --git a/crc/crc32_gzip_refl_by16_10.asm b/crc/crc32_gzip_refl_by16_10.asm index dd58ef6..a5d8011 100644 --- a/crc/crc32_gzip_refl_by16_10.asm +++ b/crc/crc32_gzip_refl_by16_10.asm @@ -59,8 +59,6 @@ %define FUNCTION_NAME crc32_gzip_refl_by16_10 %endif -%if (AS_FEATURE_LEVEL) >= 10 - %define fetch_dist 1024 [bits 64] @@ -534,10 +532,3 @@ pshufb_shift_table: mask: dq 0xFFFFFFFFFFFFFFFF, 0x0000000000000000 mask2: dq 0xFFFFFFFF00000000, 0xFFFFFFFFFFFFFFFF mask3: dq 0x8080808080808080, 0x8080808080808080 - -%else ; Assembler doesn't understand these opcodes. Add empty symbol for windows. -%ifidn __OUTPUT_FORMAT__, win64 -global no_ %+ FUNCTION_NAME -no_ %+ FUNCTION_NAME %+ : -%endif -%endif ; (AS_FEATURE_LEVEL) >= 10 diff --git a/crc/crc32_ieee_by16_10.asm b/crc/crc32_ieee_by16_10.asm index 56e9d98..42ca7b6 100644 --- a/crc/crc32_ieee_by16_10.asm +++ b/crc/crc32_ieee_by16_10.asm @@ -51,8 +51,6 @@ %define FUNCTION_NAME crc32_ieee_by16_10 %endif -%if (AS_FEATURE_LEVEL) >= 10 - [bits 64] default rel @@ -557,10 +555,3 @@ dq 0x8786858483828100, 0x8f8e8d8c8b8a8988 dq 0x0706050403020100, 0x000e0d0c0b0a0908 dq 0x8080808080808080, 0x0f0e0d0c0b0a0908 dq 0x8080808080808080, 0x8080808080808080 - -%else ; Assembler doesn't understand these opcodes. Add empty symbol for windows. -%ifidn __OUTPUT_FORMAT__, win64 -global no_ %+ FUNCTION_NAME -no_ %+ FUNCTION_NAME %+ : -%endif -%endif ; (AS_FEATURE_LEVEL) >= 10 diff --git a/crc/crc32_iscsi_by16_10.asm b/crc/crc32_iscsi_by16_10.asm index 570599a..0b47c05 100644 --- a/crc/crc32_iscsi_by16_10.asm +++ b/crc/crc32_iscsi_by16_10.asm @@ -51,8 +51,6 @@ %define FUNCTION_NAME crc32_iscsi_by16_10 %endif -%if (AS_FEATURE_LEVEL) >= 10 - [bits 64] default rel @@ -504,10 +502,3 @@ dq 0x0706050403020100, 0x000e0d0c0b0a0908 mask: dq 0xFFFFFFFFFFFFFFFF, 0x0000000000000000 mask2: dq 0xFFFFFFFF00000000, 0xFFFFFFFFFFFFFFFF mask3: dq 0x8080808080808080, 0x8080808080808080 - -%else ; Assembler doesn't understand these opcodes. Add empty symbol for windows. -%ifidn __OUTPUT_FORMAT__, win64 -global no_ %+ FUNCTION_NAME -no_ %+ FUNCTION_NAME %+ : -%endif -%endif ; (AS_FEATURE_LEVEL) >= 10 diff --git a/crc/crc64_iso_norm_by16_10.asm b/crc/crc64_iso_norm_by16_10.asm index 7c9b2fd..5bd9d8a 100644 --- a/crc/crc64_iso_norm_by16_10.asm +++ b/crc/crc64_iso_norm_by16_10.asm @@ -41,8 +41,6 @@ %define FUNCTION_NAME crc64_iso_norm_by16_10 %endif -%if (AS_FEATURE_LEVEL) >= 10 - %define fetch_dist 1024 [bits 64] @@ -463,11 +461,3 @@ dw 0x0000, 0x0001, 0x0003, 0x0007, dw 0x000f, 0x001f, 0x003f, 0x007f, dw 0x00ff, 0x01ff, 0x03ff, 0x07ff, dw 0x0fff, 0x1fff, 0x3fff, 0x7fff, - - -%else ; Assembler doesn't understand these opcodes. Add empty symbol for windows. -%ifidn __OUTPUT_FORMAT__, win64 -global no_ %+ FUNCTION_NAME -no_ %+ FUNCTION_NAME %+ : -%endif -%endif ; (AS_FEATURE_LEVEL) >= 10 diff --git a/crc/crc64_iso_refl_by16_10.asm b/crc/crc64_iso_refl_by16_10.asm index fc99886..de09162 100644 --- a/crc/crc64_iso_refl_by16_10.asm +++ b/crc/crc64_iso_refl_by16_10.asm @@ -41,8 +41,6 @@ %define FUNCTION_NAME crc64_iso_refl_by16_10 %endif -%if (AS_FEATURE_LEVEL) >= 10 - %define fetch_dist 1024 [bits 64] @@ -474,10 +472,3 @@ dq 0x0706050403020100, 0x000e0d0c0b0a0908 mask: dq 0xFFFFFFFFFFFFFFFF, 0x0000000000000000 mask2: dq 0xFFFFFFFF00000000, 0xFFFFFFFFFFFFFFFF mask3: dq 0x8080808080808080, 0x8080808080808080 - -%else ; Assembler doesn't understand these opcodes. Add empty symbol for windows. -%ifidn __OUTPUT_FORMAT__, win64 -global no_ %+ FUNCTION_NAME -no_ %+ FUNCTION_NAME %+ : -%endif -%endif ; (AS_FEATURE_LEVEL) >= 10 diff --git a/crc/crc64_multibinary.asm b/crc/crc64_multibinary.asm index db19c34..7312662 100644 --- a/crc/crc64_multibinary.asm +++ b/crc/crc64_multibinary.asm @@ -61,7 +61,6 @@ extern crc64_rocksoft_refl_base extern crc64_rocksoft_norm_by8 extern crc64_rocksoft_norm_base -%if (AS_FEATURE_LEVEL) >= 10 extern crc64_iso_refl_by16_10 extern crc64_iso_norm_by16_10 extern crc64_jones_refl_by16_10 @@ -70,7 +69,6 @@ extern crc64_ecma_refl_by16_10 extern crc64_ecma_norm_by16_10 extern crc64_rocksoft_refl_by16_10 extern crc64_rocksoft_norm_by16_10 -%endif section .text diff --git a/crc/crc_multibinary.asm b/crc/crc_multibinary.asm index 91396d6..3e95bd6 100644 --- a/crc/crc_multibinary.asm +++ b/crc/crc_multibinary.asm @@ -54,12 +54,10 @@ extern crc16_t10dif_copy_by4 extern crc16_t10dif_copy_by4_02 extern crc16_t10dif_copy_base -%if (AS_FEATURE_LEVEL) >= 10 extern crc32_gzip_refl_by16_10 extern crc32_ieee_by16_10 extern crc32_iscsi_by16_10 extern crc16_t10dif_by16_10 -%endif %include "multibinary.asm" @@ -121,7 +119,6 @@ crc32_iscsi_dispatch_init: je .crc_iscsi_init_done ;; AVX/02 opt if available -%if AS_FEATURE_LEVEL >= 10 ;; Test for AVX2 xor ecx, ecx mov eax, 7 @@ -141,7 +138,6 @@ crc32_iscsi_dispatch_init: cmp ecx, FLAGS_CPUID7_ECX_AVX512_G2 lea rbx, [crc32_iscsi_by16_10 WRT_OPT] ; AVX512/10 opt cmove rsi, rbx -%endif .crc_iscsi_init_done: mov [crc32_iscsi_dispatched], rsi @@ -202,7 +198,6 @@ crc32_ieee_dispatch_init: je .crc_ieee_init_done lea rsi, [crc32_ieee_02 WRT_OPT] ; AVX/02 opt -%if AS_FEATURE_LEVEL >= 10 ;; Test for AVX2 xor ecx, ecx mov eax, 7 @@ -222,7 +217,6 @@ crc32_ieee_dispatch_init: cmp ecx, FLAGS_CPUID7_ECX_AVX512_G2 lea rbx, [crc32_ieee_by16_10 WRT_OPT] ; AVX512/10 opt cmove rsi, rbx -%endif .crc_ieee_init_done: mov [crc32_ieee_dispatched], rsi @@ -283,7 +277,6 @@ crc16_t10dif_dispatch_init: je .t10dif_init_done lea rsi, [crc16_t10dif_02 WRT_OPT] ; AVX/02 opt -%if AS_FEATURE_LEVEL >= 10 ;; Test for AVX2 xor ecx, ecx mov eax, 7 @@ -303,7 +296,6 @@ crc16_t10dif_dispatch_init: cmp ecx, FLAGS_CPUID7_ECX_AVX512_G2 lea rbx, [crc16_t10dif_by16_10 WRT_OPT] ; AVX512/10 opt cmove rsi, rbx -%endif .t10dif_init_done: mov [crc16_t10dif_dispatched], rsi diff --git a/doc/build.md b/doc/build.md index 6371636..4aac66d 100644 --- a/doc/build.md +++ b/doc/build.md @@ -3,20 +3,12 @@ ## Build tools NASM: For x86-64 builds it is highly recommended to get an up-to-date version of -[nasm] that can understand the latest instruction sets. Building with an older -assembler version is often possible but the library may lack some function -versions for the best performance. For example, as a minimum, nasm v2.11.01 -can be used to build a limited functionality library but it will not -include any function versions with AVX2, AVX512, or optimizations for many -processors before the assembler's build. The configure or make tools can run -tests to check the assembler's knowledge of new instructions and change build -defines. For autoconf builds, check the output of configure for full nasm -support as it includes the following lines. +[nasm] that can understand the latest instruction sets. +Minimum version of NASM is 2.14.01, supporting all the ISA needed for the library. +The configure or make tools can check for this minimum version. checking for nasm... yes checking for modern nasm... yes - checking for optional nasm AVX512 support... yes - checking for additional nasm AVX512 support... yes If an appropriate nasm is not available from your distro, it is simple to build from source or download an executable from [nasm]. diff --git a/erasure_code/ec_highlevel_func.c b/erasure_code/ec_highlevel_func.c index c9a10ff..8a818a2 100644 --- a/erasure_code/ec_highlevel_func.c +++ b/erasure_code/ec_highlevel_func.c @@ -141,8 +141,6 @@ ec_encode_data_avx2(int len, int k, int rows, unsigned char *g_tbls, unsigned ch } } -#ifdef HAVE_AS_KNOWS_AVX512 - extern int gf_vect_dot_prod_avx512(int len, int k, unsigned char *g_tbls, unsigned char **data, unsigned char *dest); @@ -253,8 +251,6 @@ ec_encode_data_update_avx512(int len, int k, int rows, int vec_i, unsigned char } } -#if AS_FEATURE_LEVEL >= 10 - extern void gf_vect_dot_prod_avx512_gfni(int len, int k, unsigned char *g_tbls, unsigned char **data, unsigned char *dest); @@ -447,9 +443,6 @@ ec_encode_data_update_avx2_gfni(int len, int k, int rows, int vec_i, unsigned ch } } -#endif // AS_FEATURE_LEVEL >= 10 -#endif // HAVE_AS_KNOWS_AVX512 - #if __WORDSIZE == 64 || _WIN64 || __x86_64__ void diff --git a/erasure_code/ec_multibinary.asm b/erasure_code/ec_multibinary.asm index 4246878..c1601c0 100644 --- a/erasure_code/ec_multibinary.asm +++ b/erasure_code/ec_multibinary.asm @@ -39,12 +39,10 @@ extern ec_encode_data_update_sse extern ec_encode_data_update_avx extern ec_encode_data_update_avx2 -%ifdef HAVE_AS_KNOWS_AVX512 extern ec_encode_data_avx512 extern gf_vect_dot_prod_avx512 extern ec_encode_data_update_avx512 extern gf_vect_mad_avx512 -%endif extern gf_vect_mul_sse extern gf_vect_mul_avx @@ -53,13 +51,11 @@ extern gf_vect_mad_avx2 %endif -%if (AS_FEATURE_LEVEL) >= 10 - extern ec_init_tables_gfni - extern ec_encode_data_avx512_gfni - extern ec_encode_data_avx2_gfni - extern ec_encode_data_update_avx512_gfni - extern ec_encode_data_update_avx2_gfni -%endif +extern ec_init_tables_gfni +extern ec_encode_data_avx512_gfni +extern ec_encode_data_avx2_gfni +extern ec_encode_data_update_avx512_gfni +extern ec_encode_data_update_avx2_gfni extern ec_init_tables_base diff --git a/erasure_code/gf_2vect_dot_prod_avx2_gfni.asm b/erasure_code/gf_2vect_dot_prod_avx2_gfni.asm index 5b69a2b..3679c40 100644 --- a/erasure_code/gf_2vect_dot_prod_avx2_gfni.asm +++ b/erasure_code/gf_2vect_dot_prod_avx2_gfni.asm @@ -35,8 +35,6 @@ %include "gf_vect_gfni.inc" %include "memcpy.asm" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -359,4 +357,3 @@ func(gf_2vect_dot_prod_avx2_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_2vect_dot_prod_avx512.asm b/erasure_code/gf_2vect_dot_prod_avx512.asm index b988622..e433201 100644 --- a/erasure_code/gf_2vect_dot_prod_avx512.asm +++ b/erasure_code/gf_2vect_dot_prod_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -222,10 +220,3 @@ func(gf_2vect_dot_prod_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_2vect_dot_prod_avx512 -no_gf_2vect_dot_prod_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_2vect_dot_prod_avx512_gfni.asm b/erasure_code/gf_2vect_dot_prod_avx512_gfni.asm index 8e9827f..db78944 100644 --- a/erasure_code/gf_2vect_dot_prod_avx512_gfni.asm +++ b/erasure_code/gf_2vect_dot_prod_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -206,4 +204,3 @@ func(gf_2vect_dot_prod_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_2vect_mad_avx2_gfni.asm b/erasure_code/gf_2vect_mad_avx2_gfni.asm index ac7367b..07baced 100644 --- a/erasure_code/gf_2vect_mad_avx2_gfni.asm +++ b/erasure_code/gf_2vect_mad_avx2_gfni.asm @@ -35,8 +35,6 @@ %include "gf_vect_gfni.inc" %include "memcpy.asm" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -295,4 +293,3 @@ func(gf_2vect_mad_avx2_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_2vect_mad_avx512.asm b/erasure_code/gf_2vect_mad_avx512.asm index 97830ac..7fa5b65 100644 --- a/erasure_code/gf_2vect_mad_avx512.asm +++ b/erasure_code/gf_2vect_mad_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -221,10 +219,3 @@ func(gf_2vect_mad_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_2vect_mad_avx512 -no_gf_2vect_mad_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_2vect_mad_avx512_gfni.asm b/erasure_code/gf_2vect_mad_avx512_gfni.asm index fba32ae..552df3e 100644 --- a/erasure_code/gf_2vect_mad_avx512_gfni.asm +++ b/erasure_code/gf_2vect_mad_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -186,4 +184,3 @@ func(gf_2vect_mad_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_3vect_dot_prod_avx2_gfni.asm b/erasure_code/gf_3vect_dot_prod_avx2_gfni.asm index 093f770..646f360 100644 --- a/erasure_code/gf_3vect_dot_prod_avx2_gfni.asm +++ b/erasure_code/gf_3vect_dot_prod_avx2_gfni.asm @@ -35,8 +35,6 @@ %include "gf_vect_gfni.inc" %include "memcpy.asm" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -332,4 +330,3 @@ func(gf_3vect_dot_prod_avx2_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_3vect_dot_prod_avx512.asm b/erasure_code/gf_3vect_dot_prod_avx512.asm index 8b183bc..af5c2cf 100644 --- a/erasure_code/gf_3vect_dot_prod_avx512.asm +++ b/erasure_code/gf_3vect_dot_prod_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -251,10 +249,3 @@ func(gf_3vect_dot_prod_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_3vect_dot_prod_avx512 -no_gf_3vect_dot_prod_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_3vect_dot_prod_avx512_gfni.asm b/erasure_code/gf_3vect_dot_prod_avx512_gfni.asm index 9f167cf..08c21c7 100644 --- a/erasure_code/gf_3vect_dot_prod_avx512_gfni.asm +++ b/erasure_code/gf_3vect_dot_prod_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -222,4 +220,3 @@ func(gf_3vect_dot_prod_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_3vect_mad_avx2_gfni.asm b/erasure_code/gf_3vect_mad_avx2_gfni.asm index 5f7e41e..c6ba314 100644 --- a/erasure_code/gf_3vect_mad_avx2_gfni.asm +++ b/erasure_code/gf_3vect_mad_avx2_gfni.asm @@ -1,5 +1,3 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Copyright(c) 2023 Intel Corporation All rights reserved. ; ; Redistribution and use in source and binary forms, with or without ; modification, are permitted provided that the following conditions @@ -35,8 +33,6 @@ %include "gf_vect_gfni.inc" %include "memcpy.asm" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -273,4 +269,3 @@ func(gf_3vect_mad_avx2_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_3vect_mad_avx512.asm b/erasure_code/gf_3vect_mad_avx512.asm index 9d77c01..29348a1 100644 --- a/erasure_code/gf_3vect_mad_avx512.asm +++ b/erasure_code/gf_3vect_mad_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -238,10 +236,3 @@ func(gf_3vect_mad_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_3vect_mad_avx512 -no_gf_3vect_mad_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_3vect_mad_avx512_gfni.asm b/erasure_code/gf_3vect_mad_avx512_gfni.asm index 6fc02e9..595a4b1 100644 --- a/erasure_code/gf_3vect_mad_avx512_gfni.asm +++ b/erasure_code/gf_3vect_mad_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -201,4 +199,3 @@ func(gf_3vect_mad_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_4vect_dot_prod_avx512.asm b/erasure_code/gf_4vect_dot_prod_avx512.asm index 593c031..82fd3e8 100644 --- a/erasure_code/gf_4vect_dot_prod_avx512.asm +++ b/erasure_code/gf_4vect_dot_prod_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -291,10 +289,3 @@ func(gf_4vect_dot_prod_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_4vect_dot_prod_avx512 -no_gf_4vect_dot_prod_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_4vect_dot_prod_avx512_gfni.asm b/erasure_code/gf_4vect_dot_prod_avx512_gfni.asm index 203b6e8..68a8388 100644 --- a/erasure_code/gf_4vect_dot_prod_avx512_gfni.asm +++ b/erasure_code/gf_4vect_dot_prod_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -250,4 +248,3 @@ func(gf_4vect_dot_prod_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_4vect_mad_avx2_gfni.asm b/erasure_code/gf_4vect_mad_avx2_gfni.asm index 9dbfd70..3389fde 100644 --- a/erasure_code/gf_4vect_mad_avx2_gfni.asm +++ b/erasure_code/gf_4vect_mad_avx2_gfni.asm @@ -35,8 +35,6 @@ %include "gf_vect_gfni.inc" %include "memcpy.asm" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -236,4 +234,3 @@ func(gf_4vect_mad_avx2_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_4vect_mad_avx512.asm b/erasure_code/gf_4vect_mad_avx512.asm index dca406a..29acb35 100644 --- a/erasure_code/gf_4vect_mad_avx512.asm +++ b/erasure_code/gf_4vect_mad_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -258,10 +256,3 @@ func(gf_4vect_mad_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_4vect_mad_avx512 -no_gf_4vect_mad_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_4vect_mad_avx512_gfni.asm b/erasure_code/gf_4vect_mad_avx512_gfni.asm index eac36da..ec9c87e 100644 --- a/erasure_code/gf_4vect_mad_avx512_gfni.asm +++ b/erasure_code/gf_4vect_mad_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -220,4 +218,3 @@ func(gf_4vect_mad_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_5vect_dot_prod_avx512.asm b/erasure_code/gf_5vect_dot_prod_avx512.asm index 04e86cd..3b011ee 100644 --- a/erasure_code/gf_5vect_dot_prod_avx512.asm +++ b/erasure_code/gf_5vect_dot_prod_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -325,10 +323,3 @@ func(gf_5vect_dot_prod_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_5vect_dot_prod_avx512 -no_gf_5vect_dot_prod_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_5vect_dot_prod_avx512_gfni.asm b/erasure_code/gf_5vect_dot_prod_avx512_gfni.asm index 91d91c9..d447a66 100644 --- a/erasure_code/gf_5vect_dot_prod_avx512_gfni.asm +++ b/erasure_code/gf_5vect_dot_prod_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -272,4 +270,3 @@ func(gf_5vect_dot_prod_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_5vect_mad_avx2_gfni.asm b/erasure_code/gf_5vect_mad_avx2_gfni.asm index 3987d0e..a00df8d 100644 --- a/erasure_code/gf_5vect_mad_avx2_gfni.asm +++ b/erasure_code/gf_5vect_mad_avx2_gfni.asm @@ -35,8 +35,6 @@ %include "gf_vect_gfni.inc" %include "memcpy.asm" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -262,4 +260,3 @@ func(gf_5vect_mad_avx2_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_5vect_mad_avx512.asm b/erasure_code/gf_5vect_mad_avx512.asm index 7a6962a..529b1fc 100644 --- a/erasure_code/gf_5vect_mad_avx512.asm +++ b/erasure_code/gf_5vect_mad_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -278,10 +276,3 @@ func(gf_5vect_mad_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_5vect_mad_avx512 -no_gf_5vect_mad_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_5vect_mad_avx512_gfni.asm b/erasure_code/gf_5vect_mad_avx512_gfni.asm index 826e7dd..31aa998 100644 --- a/erasure_code/gf_5vect_mad_avx512_gfni.asm +++ b/erasure_code/gf_5vect_mad_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -237,4 +235,3 @@ func(gf_5vect_mad_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_6vect_dot_prod_avx512.asm b/erasure_code/gf_6vect_dot_prod_avx512.asm index ff3075f..4894e66 100644 --- a/erasure_code/gf_6vect_dot_prod_avx512.asm +++ b/erasure_code/gf_6vect_dot_prod_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -344,10 +342,3 @@ func(gf_6vect_dot_prod_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_6vect_dot_prod_avx512 -no_gf_6vect_dot_prod_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_6vect_dot_prod_avx512_gfni.asm b/erasure_code/gf_6vect_dot_prod_avx512_gfni.asm index 5af9209..a7a6151 100644 --- a/erasure_code/gf_6vect_dot_prod_avx512_gfni.asm +++ b/erasure_code/gf_6vect_dot_prod_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -289,4 +287,3 @@ func(gf_6vect_dot_prod_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_6vect_mad_avx512.asm b/erasure_code/gf_6vect_mad_avx512.asm index 1bbcd7d..478c8d0 100644 --- a/erasure_code/gf_6vect_mad_avx512.asm +++ b/erasure_code/gf_6vect_mad_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -312,10 +310,3 @@ func(gf_6vect_mad_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_6vect_mad_avx512 -no_gf_6vect_mad_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_6vect_mad_avx512_gfni.asm b/erasure_code/gf_6vect_mad_avx512_gfni.asm index 97698d1..701faa8 100644 --- a/erasure_code/gf_6vect_mad_avx512_gfni.asm +++ b/erasure_code/gf_6vect_mad_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -256,4 +254,3 @@ func(gf_6vect_mad_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_vect_dot_prod_avx2_gfni.asm b/erasure_code/gf_vect_dot_prod_avx2_gfni.asm index 30f0281..0bd5044 100644 --- a/erasure_code/gf_vect_dot_prod_avx2_gfni.asm +++ b/erasure_code/gf_vect_dot_prod_avx2_gfni.asm @@ -35,8 +35,6 @@ %include "gf_vect_gfni.inc" %include "memcpy.asm" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -315,4 +313,3 @@ func(gf_vect_dot_prod_avx2_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_vect_dot_prod_avx512.asm b/erasure_code/gf_vect_dot_prod_avx512.asm index 7806250..5835923 100644 --- a/erasure_code/gf_vect_dot_prod_avx512.asm +++ b/erasure_code/gf_vect_dot_prod_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -231,10 +229,3 @@ func(gf_vect_dot_prod_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_vect_dot_prod_avx512 -no_gf_vect_dot_prod_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_vect_dot_prod_avx512_gfni.asm b/erasure_code/gf_vect_dot_prod_avx512_gfni.asm index 61aed8f..8189990 100644 --- a/erasure_code/gf_vect_dot_prod_avx512_gfni.asm +++ b/erasure_code/gf_vect_dot_prod_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -187,4 +185,3 @@ func(gf_vect_dot_prod_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_vect_mad_avx2_gfni.asm b/erasure_code/gf_vect_mad_avx2_gfni.asm index 2397db3..281d6dd 100644 --- a/erasure_code/gf_vect_mad_avx2_gfni.asm +++ b/erasure_code/gf_vect_mad_avx2_gfni.asm @@ -35,8 +35,6 @@ %include "gf_vect_gfni.inc" %include "memcpy.asm" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -252,4 +250,3 @@ func(gf_vect_mad_avx2_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/erasure_code/gf_vect_mad_avx512.asm b/erasure_code/gf_vect_mad_avx512.asm index 8827a8f..9003c37 100644 --- a/erasure_code/gf_vect_mad_avx512.asm +++ b/erasure_code/gf_vect_mad_avx512.asm @@ -33,8 +33,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -184,10 +182,3 @@ func(gf_vect_mad_avx512) ret endproc_frame - -%else -%ifidn __OUTPUT_FORMAT__, win64 -global no_gf_vect_mad_avx512 -no_gf_vect_mad_avx512: -%endif -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/erasure_code/gf_vect_mad_avx512_gfni.asm b/erasure_code/gf_vect_mad_avx512_gfni.asm index ce3b42e..e561177 100644 --- a/erasure_code/gf_vect_mad_avx512_gfni.asm +++ b/erasure_code/gf_vect_mad_avx512_gfni.asm @@ -34,8 +34,6 @@ %include "reg_sizes.asm" %include "gf_vect_gfni.inc" -%if AS_FEATURE_LEVEL >= 10 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -172,4 +170,3 @@ func(gf_vect_mad_avx512_gfni) ret endproc_frame -%endif ; if AS_FEATURE_LEVEL >= 10 diff --git a/igzip/encode_df_06.asm b/igzip/encode_df_06.asm index 9e74795..cb83231 100644 --- a/igzip/encode_df_06.asm +++ b/igzip/encode_df_06.asm @@ -32,8 +32,6 @@ %include "data_struct2.asm" %include "stdmac.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %define ARCH 06 %define USE_HSWNI @@ -620,5 +618,3 @@ k_mask_2: dq 0xfffffff0 k_mask_3: dq 0xfffffffc k_mask_4: dw 0x0101, 0x0101, 0x0101, 0x0101 k_mask_5: dq 0xfffffffe - -%endif diff --git a/igzip/igzip_gen_icf_map_lh1_06.asm b/igzip/igzip_gen_icf_map_lh1_06.asm index 7985ab5..d81f35d 100644 --- a/igzip/igzip_gen_icf_map_lh1_06.asm +++ b/igzip/igzip_gen_icf_map_lh1_06.asm @@ -36,7 +36,6 @@ %define USE_HSWNI %define ARCH 06 -%ifdef HAVE_AS_KNOWS_AVX512 %ifidn __OUTPUT_FORMAT__, win64 %define arg1 rcx %define arg2 rdx @@ -578,4 +577,3 @@ lit_len_mask: dd LIT_LEN_MASK shortest_matches: dd MIN_DEF_MATCH -%endif diff --git a/igzip/igzip_multibinary.asm b/igzip/igzip_multibinary.asm index 7997a84..8a1b78b 100644 --- a/igzip/igzip_multibinary.asm +++ b/igzip/igzip_multibinary.asm @@ -61,11 +61,9 @@ extern encode_deflate_icf_04 extern set_long_icf_fg_base extern set_long_icf_fg_04 -%ifdef HAVE_AS_KNOWS_AVX512 extern encode_deflate_icf_06 extern set_long_icf_fg_06 extern gen_icf_map_lh1_06 -%endif extern adler32_base extern adler32_avx2_4 diff --git a/igzip/igzip_set_long_icf_fg_06.asm b/igzip/igzip_set_long_icf_fg_06.asm index 3152ef4..24ffe90 100644 --- a/igzip/igzip_set_long_icf_fg_06.asm +++ b/igzip/igzip_set_long_icf_fg_06.asm @@ -33,7 +33,6 @@ %include "igzip_compare_types.asm" %define NEQ 4 -%ifdef HAVE_AS_KNOWS_AVX512 %ifidn __OUTPUT_FORMAT__, win64 %define arg1 rcx %define arg2 rdx @@ -369,4 +368,3 @@ twosixtytwo: dd 0x106 nlen_mask: dd 0xfffffc00 -%endif diff --git a/include/multibinary.asm b/include/multibinary.asm index 22f9d99..032f6db 100644 --- a/include/multibinary.asm +++ b/include/multibinary.asm @@ -50,10 +50,6 @@ %define mbin_rdx rdx %endif -%ifndef AS_FEATURE_LEVEL -%define AS_FEATURE_LEVEL 4 -%endif - ;;;; ; multibinary macro: ; creates the visible entry point that uses HW optimized call pointer @@ -191,7 +187,6 @@ je _%1_init_done lea mbin_rsi, [%4 WRT_OPT] ; AVX/02 opt -%if AS_FEATURE_LEVEL >= 10 ;; Test for AVX2 xor ecx, ecx mov eax, 7 @@ -211,7 +206,6 @@ cmp ecx, FLAGS_CPUID7_ECX_AVX512_G2 lea mbin_rbx, [%5 WRT_OPT] ; AVX512/10 opt cmove mbin_rsi, mbin_rbx -%endif _%1_init_done: pop mbin_rdi pop mbin_rdx @@ -280,7 +274,6 @@ ret %endmacro -%if AS_FEATURE_LEVEL >= 6 ;;;;; ; mbin_dispatch_init6 parameters ; 1-> function name @@ -350,13 +343,6 @@ ret %endmacro -%else -%macro mbin_dispatch_init6 6 - mbin_dispatch_init5 %1, %2, %3, %4, %5 -%endmacro -%endif - -%if AS_FEATURE_LEVEL >= 10 ;;;;; ; mbin_dispatch_init7 parameters ; 1-> function name @@ -515,13 +501,5 @@ pop mbin_rsi ret %endmacro -%else -%macro mbin_dispatch_init7 7 - mbin_dispatch_init6 %1, %2, %3, %4, %5, %6 -%endmacro -%macro mbin_dispatch_init8 8 - mbin_dispatch_init6 %1, %2, %3, %4, %5, %6 -%endmacro -%endif %endif ; ifndef _MULTIBINARY_ASM_ diff --git a/include/reg_sizes.asm b/include/reg_sizes.asm index 983f8b4..fe14df4 100644 --- a/include/reg_sizes.asm +++ b/include/reg_sizes.asm @@ -30,10 +30,6 @@ %ifndef _REG_SIZES_ASM_ %define _REG_SIZES_ASM_ -%ifndef AS_FEATURE_LEVEL -%define AS_FEATURE_LEVEL 4 -%endif - %define EFLAGS_HAS_CPUID (1<<21) %define FLAG_CPUID1_ECX_CLMUL (1<<1) %define FLAG_CPUID1_EDX_SSE2 (1<<26) @@ -198,7 +194,6 @@ %ifdef INTEL_CET_ENABLED %ifdef __NASM_VER__ - %if AS_FEATURE_LEVEL >= 10 %ifidn __OUTPUT_FORMAT__,elf32 section .note.gnu.property note alloc noexec align=4 DD 0x00000004,0x0000000c,0x00000005,0x00554e47 @@ -209,7 +204,6 @@ section .note.gnu.property note alloc noexec align=8 DD 0x00000004,0x00000010,0x00000005,0x00554e47 DD 0xc0000002,0x00000004,0x00000003,0x00000000 %endif - %endif %endif %endif diff --git a/make.inc b/make.inc index 5cc03db..b544446 100644 --- a/make.inc +++ b/make.inc @@ -179,26 +179,6 @@ $(all_llvm_fuzz_tests): % : %.o $(lib_name) $(CXX) $(CXXFLAGS) $^ $(LDLIBS) $(FUZZLINK) -o $@ -# Check for modern as -test-as = $(shell hash printf && printf $(3) > $(2) && $(AS) $(ASFLAGS) ${tmpf} -o /dev/null 2> /dev/null && echo $(1) || echo $(4)) -as_4 := "pblendvb xmm2, xmm1;" -as_6 := "vinserti32x8 zmm0, ymm1, 1;" -as_10 := "vpcompressb zmm0 {k1}, zmm1;" - -tmpf := $(shell mktemp) -as_feature_level := $(call test-as, 4, $(tmpf), $(as_4), $(as_feature_level)) -as_feature_level := $(call test-as, 6, $(tmpf), $(as_6), $(as_feature_level)) -as_feature_level := $(call test-as, 10, $(tmpf), $(as_10), $(as_feature_level)) -tmpf := $(shell rm ${tmpf}) - -ifneq ($(findstring $(as_feature_level),6 10),) - D_HAVE_AS_KNOWS_AVX512_y := -DHAVE_AS_KNOWS_AVX512 -endif - -CFLAGS += -DAS_FEATURE_LEVEL=$(as_feature_level) $(D_HAVE_AS_KNOWS_AVX512_y) -ASFLAGS += -DAS_FEATURE_LEVEL=$(as_feature_level) $(D_HAVE_AS_KNOWS_AVX512_y) - - # Check for pthreads ifeq ($(arch),mingw) have_threads ?= y diff --git a/mem/mem_multibinary.asm b/mem/mem_multibinary.asm index 7ecae76..38765d6 100644 --- a/mem/mem_multibinary.asm +++ b/mem/mem_multibinary.asm @@ -33,9 +33,7 @@ default rel [bits 64] -%ifdef HAVE_AS_KNOWS_AVX512 - extern mem_zero_detect_avx512 -%endif +extern mem_zero_detect_avx512 extern mem_zero_detect_avx2 extern mem_zero_detect_avx extern mem_zero_detect_sse diff --git a/mem/mem_zero_detect_avx2.asm b/mem/mem_zero_detect_avx2.asm index cc01992..7ca3115 100644 --- a/mem/mem_zero_detect_avx2.asm +++ b/mem/mem_zero_detect_avx2.asm @@ -67,11 +67,8 @@ %define tmp0 arg2 %define tmp1 arg3 -; Workaround for YASM -%ifdef HAVE_AS_KNOWS_AVX512 %use smartalign ALIGNMODE P6 -%endif default rel diff --git a/mem/mem_zero_detect_avx512.asm b/mem/mem_zero_detect_avx512.asm index 15b2de4..20b6af0 100644 --- a/mem/mem_zero_detect_avx512.asm +++ b/mem/mem_zero_detect_avx512.asm @@ -29,8 +29,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -142,5 +140,3 @@ align 16 endproc_frame - -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/raid/pq_gen_avx2_gfni.asm b/raid/pq_gen_avx2_gfni.asm index 52b212a..ad707b9 100644 --- a/raid/pq_gen_avx2_gfni.asm +++ b/raid/pq_gen_avx2_gfni.asm @@ -37,8 +37,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -230,5 +228,3 @@ return_fail: ret endproc_frame - -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/raid/pq_gen_avx512.asm b/raid/pq_gen_avx512.asm index 179ad5c..f8b8c3d 100644 --- a/raid/pq_gen_avx512.asm +++ b/raid/pq_gen_avx512.asm @@ -37,8 +37,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -231,5 +229,3 @@ return_fail: ret endproc_frame - -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/raid/pq_gen_avx512_gfni.asm b/raid/pq_gen_avx512_gfni.asm index 02f9f98..534649f 100644 --- a/raid/pq_gen_avx512_gfni.asm +++ b/raid/pq_gen_avx512_gfni.asm @@ -37,8 +37,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -234,5 +232,3 @@ return_fail: ret endproc_frame - -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/raid/raid_multibinary.asm b/raid/raid_multibinary.asm index ac5c532..b8a30ec 100644 --- a/raid/raid_multibinary.asm +++ b/raid/raid_multibinary.asm @@ -48,15 +48,11 @@ extern pq_check_sse extern xor_check_base extern xor_check_sse -%ifdef HAVE_AS_KNOWS_AVX512 - extern xor_gen_avx512 - extern pq_gen_avx512 -%endif +extern xor_gen_avx512 +extern pq_gen_avx512 -%if (AS_FEATURE_LEVEL) >= 10 - extern pq_gen_avx512_gfni - extern pq_gen_avx2_gfni -%endif +extern pq_gen_avx512_gfni +extern pq_gen_avx2_gfni mbin_interface xor_gen mbin_interface pq_gen diff --git a/raid/xor_gen_avx512.asm b/raid/xor_gen_avx512.asm index 5b07868..a45d58d 100644 --- a/raid/xor_gen_avx512.asm +++ b/raid/xor_gen_avx512.asm @@ -36,8 +36,6 @@ %include "reg_sizes.asm" -%ifdef HAVE_AS_KNOWS_AVX512 - %ifidn __OUTPUT_FORMAT__, elf64 %define arg0 rdi %define arg1 rsi @@ -213,5 +211,3 @@ return_fail: ret endproc_frame - -%endif ; ifdef HAVE_AS_KNOWS_AVX512 diff --git a/tools/gen_nmake.mk b/tools/gen_nmake.mk index 0d13c0e..5362602 100644 --- a/tools/gen_nmake.mk +++ b/tools/gen_nmake.mk @@ -19,13 +19,11 @@ Makefile.nmake tst.nmake: FORCE @echo '' >> $@ @echo '' >> $@ @echo 'INCLUDES = $(INCLUDE)' >> $@ - @echo '# Modern asm feature level, consider upgrading nasm before decreasing feature_level' >> $@ - @echo 'FEAT_FLAGS = -DHAVE_AS_KNOWS_AVX512 -DAS_FEATURE_LEVEL=10' >> $@ @echo 'CFLAGS_REL = -O2 -DNDEBUG /Z7 /Gy' >> $@ @echo 'CFLAGS_DBG = -Od -DDEBUG /Z7' >> $@ @echo 'LINKFLAGS = -nologo -incremental:no -debug' >> $@ - @echo 'CFLAGS = $$(CFLAGS_REL) -nologo -D_USE_MATH_DEFINES $$(FEAT_FLAGS) $$(INCLUDES) $$(D)' >> $@ - @echo 'AFLAGS = -f win64 $$(FEAT_FLAGS) $$(INCLUDES) $$(D)' >> $@ + @echo 'CFLAGS = $$(CFLAGS_REL) -nologo -D_USE_MATH_DEFINES $$(INCLUDES) $$(D)' >> $@ + @echo 'AFLAGS = -f win64 $$(INCLUDES) $$(D)' >> $@ @echo 'CC = cl' >> $@ @echo '# or CC = icl -Qstd=c99' >> $@ @echo 'AS = nasm' >> $@