add_library(ec_isa SHARED ${isa_srcs})
add_dependencies(ec_isa ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)
target_link_libraries(ec_isa ${EXTRALIBS})
-set_target_properties(ec_isa PROPERTIES VERSION 2.10.0 SOVERSION 2)
+set_target_properties(ec_isa PROPERTIES VERSION 2.14.0 SOVERSION 2)
install(TARGETS ec_isa DESTINATION lib/erasure-code)
libec_isa_la_CCASFLAGS = ${AM_CCASFLAGS} -I $(abs_srcdir)/erasure-code/isa/isa-l/include/
libec_isa_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
-libec_isa_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:13:0
+libec_isa_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:14:0
if LINUX
libec_isa_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*'
endif
pop arg1
ret
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
-
;;; func core, ver, snum
-slversion ec_encode_data, 00, 03, 0133
-slversion gf_vect_mul, 00, 02, 0134
-slversion ec_encode_data_update, 00, 02, 0212
-slversion gf_vect_dot_prod, 00, 02, 0138
-slversion gf_vect_mad, 00, 01, 0213
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion ec_encode_data, 00, 04, 0133
+slversion gf_vect_mul, 00, 03, 0134
+slversion ec_encode_data_update, 00, 03, 0212
+slversion gf_vect_dot_prod, 00, 03, 0138
+slversion gf_vect_mad, 00, 02, 0213
;;; gf_2vect_dot_prod_avx(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_2vect_dot_prod_avx, 02, 04, 0191
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_2vect_dot_prod_avx, 02, 05, 0191
;;; gf_2vect_dot_prod_avx2(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
section .data
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_2vect_dot_prod_avx2, 04, 04, 0196
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_2vect_dot_prod_avx2, 04, 05, 0196
;;; gf_2vect_dot_prod_sse(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_2vect_dot_prod_sse, 00, 03, 0062
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_2vect_dot_prod_sse, 00, 04, 0062
;;; gf_2vect_mad_avx(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_2vect_mad_avx, 02, 00, 0204
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_2vect_mad_avx, 02, 01, 0204
;;; gf_2vect_mad_avx2(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
section .data
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_2vect_mad_avx2, 04, 00, 0205
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_2vect_mad_avx2, 04, 01, 0205
;;; gf_2vect_mad_sse(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
mask0f:
ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_2vect_mad_sse, 00, 00, 0203
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_2vect_mad_sse, 00, 01, 0203
;;; gf_3vect_dot_prod_avx(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_3vect_dot_prod_avx, 02, 04, 0192
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_3vect_dot_prod_avx, 02, 05, 0192
;;; gf_3vect_dot_prod_avx2(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
section .data
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_3vect_dot_prod_avx2, 04, 04, 0197
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_3vect_dot_prod_avx2, 04, 05, 0197
;;; gf_3vect_dot_prod_sse(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_3vect_dot_prod_sse, 00, 05, 0063
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_3vect_dot_prod_sse, 00, 06, 0063
;;; gf_3vect_mad_avx(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
constip16:
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_3vect_mad_avx, 02, 00, 0207
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_3vect_mad_avx, 02, 01, 0207
;;; gf_3vect_mad_avx2(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
ddq 0xe0e1e2e3e4e5e6e7e8e9eaebecedeeef
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_3vect_mad_avx2, 04, 00, 0208
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_3vect_mad_avx2, 04, 01, 0208
;;; gf_3vect_mad_sse(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
%define arg0 rcx
constip16:
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_3vect_mad_sse, 00, 00, 0206
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_3vect_mad_sse, 00, 01, 0206
;;; gf_4vect_dot_prod_avx(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_4vect_dot_prod_avx, 02, 04, 0193
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_4vect_dot_prod_avx, 02, 05, 0193
;;; gf_4vect_dot_prod_avx2(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
section .data
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_4vect_dot_prod_avx2, 04, 04, 0198
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_4vect_dot_prod_avx2, 04, 05, 0198
;;; gf_4vect_dot_prod_sse(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_4vect_dot_prod_sse, 00, 05, 0064
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_4vect_dot_prod_sse, 00, 06, 0064
;;; gf_4vect_mad_avx(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
constip16:
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
-
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_4vect_mad_avx, 02, 00, 020a
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_4vect_mad_avx, 02, 01, 020a
;;; gf_4vect_mad_avx2(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
ddq 0xe0e1e2e3e4e5e6e7e8e9eaebecedeeef
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_4vect_mad_avx2, 04, 00, 020b
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_4vect_mad_avx2, 04, 01, 020b
;;; gf_4vect_mad_sse(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
constip16:
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_4vect_mad_sse, 00, 00, 0209
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_4vect_mad_sse, 00, 01, 0209
;;; gf_5vect_dot_prod_avx(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_5vect_dot_prod_avx, 02, 03, 0194
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_5vect_dot_prod_avx, 02, 04, 0194
;;; gf_5vect_dot_prod_avx2(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
section .data
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_5vect_dot_prod_avx2, 04, 03, 0199
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_5vect_dot_prod_avx2, 04, 04, 0199
;;; gf_5vect_dot_prod_sse(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_5vect_dot_prod_sse, 00, 04, 0065
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_5vect_dot_prod_sse, 00, 05, 0065
;;; gf_5vect_mad_avx(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
constip16:
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_5vect_mad_avx, 02, 00, 020d
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_5vect_mad_avx, 02, 01, 020d
;;; gf_5vect_mad_avx2(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
ddq 0xe0e1e2e3e4e5e6e7e8e9eaebecedeeef
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_5vect_mad_avx2, 04, 00, 020e
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_5vect_mad_avx2, 04, 01, 020e
;;; gf_5vect_mad_sse(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
constip16:
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_5vect_mad_sse, 00, 00, 020c
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_5vect_mad_sse, 00, 01, 020c
;;; gf_6vect_dot_prod_avx(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_6vect_dot_prod_avx, 02, 03, 0195
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_6vect_dot_prod_avx, 02, 04, 0195
;;; gf_6vect_dot_prod_avx2(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
section .data
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_6vect_dot_prod_avx2, 04, 03, 019a
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_6vect_dot_prod_avx2, 04, 04, 019a
;;; gf_6vect_dot_prod_sse(len, vec, *g_tbls, **buffs, **dests);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
align 16
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_6vect_dot_prod_sse, 00, 04, 0066
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_6vect_dot_prod_sse, 00, 05, 0066
;;; gf_6vect_mad_avx(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
constip16:
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_6vect_mad_avx, 02, 00, 0210
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_6vect_mad_avx, 02, 01, 0210
;;; gf_6vect_mad_avx2(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
%define PS 8
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
ddq 0xe0e1e2e3e4e5e6e7e8e9eaebecedeeef
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_6vect_mad_avx2, 04, 00, 0211
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_6vect_mad_avx2, 04, 01, 0211
;;; gf_6vect_mad_sse(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%define PS 8
%ifidn __OUTPUT_FORMAT__, win64
constip16:
ddq 0xf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_6vect_mad_sse, 00, 00, 020f
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_6vect_mad_sse, 00, 01, 020f
;;; gf_vect_dot_prod_avx(len, vec, *g_tbls, **buffs, *dest);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
mask0f:
ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_vect_dot_prod_avx, 02, 04, 0061
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_vect_dot_prod_avx, 02, 05, 0061
;;; gf_vect_dot_prod_avx2(len, vec, *g_tbls, **buffs, *dest);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
section .data
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_vect_dot_prod_avx2, 04, 04, 0190
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_vect_dot_prod_avx2, 04, 05, 0190
;;; gf_vect_dot_prod_sse(len, vec, *g_tbls, **buffs, *dest);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_vect_dot_prod_sse, 00, 04, 0060
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_vect_dot_prod_sse, 00, 05, 0060
;;; gf_vect_mad_avx(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, win64
%define arg0 rcx
%define arg0.w ecx
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_vect_mad_avx, 02, 00, 0201
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_vect_mad_avx, 02, 01, 0201
;;; gf_vect_mad_avx2(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, win64
%define arg0 rcx
%define arg0.w ecx
section .data
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_vect_mad_avx2, 04, 00, 0202
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_vect_mad_avx2, 04, 01, 0202
;;; gf_vect_mad_sse(len, vec, vec_i, mul_array, src, dest);
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, win64
%define arg0 rcx
%define arg0.w ecx
mask0f: ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_vect_mad_sse, 00, 00, 0200
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_vect_mad_sse, 00, 01, 0200
;;; gf_vect_mul_avx(len, mul_array, src, dest)
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
mask0f:
ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_vect_mul_avx, 01, 02, 0036
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_vect_mul_avx, 01, 03, 0036
;;; gf_vect_mul_sse(len, mul_array, src, dest)
;;;
+%include "reg_sizes.asm"
+
%ifidn __OUTPUT_FORMAT__, elf64
%define arg0 rdi
%define arg1 rsi
mask0f:
ddq 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-%macro slversion 4
-global %1_slver_%2%3%4
-global %1_slver
-%1_slver:
-%1_slver_%2%3%4:
- dw 0x%4
- db 0x%3, 0x%2
-%endmacro
;;; func core, ver, snum
-slversion gf_vect_mul_sse, 00, 02, 0034
-; inform linker that this doesn't require executable stack
-section .note.GNU-stack noalloc noexec nowrite progbits
+slversion gf_vect_mul_sse, 00, 03, 0034
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+%ifndef _REG_SIZES_ASM_
+%define _REG_SIZES_ASM_
+
%define EFLAGS_HAS_CPUID (1<<21)
%define FLAG_CPUID1_ECX_CLMUL (1<<1)
%define FLAG_CPUID1_EDX_SSE2 (1<<26)
%define BYTE(reg) reg %+ b
%define XWORD(reg) reg %+ x
+
+%ifidn __OUTPUT_FORMAT__,elf32
+section .note.GNU-stack noalloc noexec nowrite progbits
+section .text
+%endif
+%ifidn __OUTPUT_FORMAT__,elf64
+section .note.GNU-stack noalloc noexec nowrite progbits
+section .text
+%endif
+%ifidn __OUTPUT_FORMAT__, macho64
+%define elf64 macho64
+%endif
+
+%macro slversion 4
+ section .text
+ global %1_slver_%2%3%4
+ global %1_slver
+ %1_slver:
+ %1_slver_%2%3%4:
+ dw 0x%4
+ db 0x%3, 0x%2
+%endmacro
+
+%endif ; ifndef _REG_SIZES_ASM_
extern "C" {
#endif
-#ifndef __unix__
+#ifdef __WIN32__
#ifdef __MINGW32__
# include <_mingw.h>
#endif
#endif
-#ifdef __unix__
+#if defined __unix__ || defined __APPLE__
# define DECLARE_ALIGNED(decl, alignval) decl __attribute__((aligned(alignval)))
# define __forceinline static inline
+# define aligned_free(x) free(x)
#else
-# define DECLARE_ALIGNED(decl, alignval) __declspec(align(alignval)) decl
-# define posix_memalign(p, algn, len) (NULL == (*((char**)(p)) = (void*) _aligned_malloc(len, algn)))
+# ifdef __MINGW32__
+# define DECLARE_ALIGNED(decl, alignval) decl __attribute__((aligned(alignval)))
+# define posix_memalign(p, algn, len) (NULL == (*((char**)(p)) = (void*) _aligned_malloc(len, algn)))
+# define aligned_free(x) _aligned_free(x)
+# else
+# define DECLARE_ALIGNED(decl, alignval) __declspec(align(alignval)) decl
+# define posix_memalign(p, algn, len) (NULL == (*((char**)(p)) = (void*) _aligned_malloc(len, algn)))
+# define aligned_free(x) _aligned_free(x)
+# endif
#endif
#ifdef DEBUG