xref: /isa-l/igzip/igzip_multibinary.asm (revision bc48c1e2dcfef19e81cc9ead4f324ad4fa54f978)
1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2;  Copyright(c) 2011-2016 Intel Corporation All rights reserved.
3;
4;  Redistribution and use in source and binary forms, with or without
5;  modification, are permitted provided that the following conditions
6;  are met:
7;    * Redistributions of source code must retain the above copyright
8;      notice, this list of conditions and the following disclaimer.
9;    * Redistributions in binary form must reproduce the above copyright
10;      notice, this list of conditions and the following disclaimer in
11;      the documentation and/or other materials provided with the
12;      distribution.
13;    * Neither the name of Intel Corporation nor the names of its
14;      contributors may be used to endorse or promote products derived
15;      from this software without specific prior written permission.
16;
17;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18;  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20;  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21;  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22;  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24;  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25;  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27;  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
29
30default rel
31[bits 64]
32
33%include "reg_sizes.asm"
34
35extern isal_deflate_body_base
36extern isal_deflate_body_01
37extern isal_deflate_body_02
38extern isal_deflate_body_04
39extern isal_deflate_finish_base
40extern isal_deflate_finish_01
41
42extern isal_deflate_icf_body_hash8k_base
43extern isal_deflate_icf_body_hash8k_01
44extern isal_deflate_icf_body_hash8k_02
45extern isal_deflate_icf_body_hash8k_04
46extern isal_deflate_icf_finish_hash8k_base
47extern isal_deflate_icf_finish_hash8k_01
48
49extern isal_deflate_icf_body_hash_hist_base
50extern isal_deflate_icf_body_hash_hist_01
51extern isal_deflate_icf_body_hash_hist_02
52extern isal_deflate_icf_body_hash_hist_04
53extern isal_deflate_icf_finish_hash_hist_base
54extern isal_deflate_icf_finish_hash_hist_01
55
56extern isal_deflate_icf_finish_hash_map_base
57
58extern isal_update_histogram_base
59extern isal_update_histogram_01
60extern isal_update_histogram_04
61
62extern gen_icf_map_h1_base
63extern gen_icf_map_lh1_04
64
65extern encode_deflate_icf_base
66extern encode_deflate_icf_04
67
68extern set_long_icf_fg_base
69extern set_long_icf_fg_04
70
71%ifdef HAVE_AS_KNOWS_AVX512
72extern encode_deflate_icf_06
73extern set_long_icf_fg_06
74extern gen_icf_map_lh1_06
75%endif
76
77extern crc32_gzip_base
78extern crc32_gzip_01
79
80extern adler32_base
81extern adler32_avx2_4
82extern adler32_sse
83
84extern isal_deflate_hash_base
85extern isal_deflate_hash_crc_01
86
87extern isal_deflate_hash_mad_base
88
89extern icf_body_hash1_fillgreedy_lazy
90extern icf_body_lazyhash1_fillgreedy_greedy
91
92section .text
93
94%include "multibinary.asm"
95
96mbin_interface		isal_deflate_body
97mbin_dispatch_init5	isal_deflate_body, isal_deflate_body_base, isal_deflate_body_01, isal_deflate_body_02, isal_deflate_body_04
98mbin_interface		isal_deflate_finish
99mbin_dispatch_init5	isal_deflate_finish, isal_deflate_finish_base, isal_deflate_finish_01, isal_deflate_finish_01, isal_deflate_finish_01
100
101mbin_interface		isal_deflate_icf_body_lvl1
102mbin_dispatch_init5	isal_deflate_icf_body_lvl1, isal_deflate_icf_body_hash8k_base, isal_deflate_icf_body_hash8k_01, isal_deflate_icf_body_hash8k_02, isal_deflate_icf_body_hash8k_04
103
104mbin_interface		isal_deflate_icf_body_lvl2
105mbin_dispatch_init5	isal_deflate_icf_body_lvl2, isal_deflate_icf_body_hash_hist_base, isal_deflate_icf_body_hash_hist_01, isal_deflate_icf_body_hash_hist_02, isal_deflate_icf_body_hash_hist_04
106
107mbin_interface		isal_deflate_icf_body_lvl3
108mbin_dispatch_init5	isal_deflate_icf_body_lvl3, icf_body_hash1_fillgreedy_lazy, icf_body_hash1_fillgreedy_lazy, icf_body_hash1_fillgreedy_lazy, icf_body_lazyhash1_fillgreedy_greedy
109
110mbin_interface		isal_deflate_icf_finish_lvl1
111mbin_dispatch_init5	isal_deflate_icf_finish_lvl1, isal_deflate_icf_finish_hash8k_base, isal_deflate_icf_finish_hash8k_01, isal_deflate_icf_finish_hash8k_01, isal_deflate_icf_finish_hash8k_01
112
113mbin_interface		isal_deflate_icf_finish_lvl2
114mbin_dispatch_init5	isal_deflate_icf_finish_lvl2, isal_deflate_icf_finish_hash_hist_base, isal_deflate_icf_finish_hash_hist_01, isal_deflate_icf_finish_hash_hist_01, isal_deflate_icf_finish_hash_hist_01
115
116mbin_interface		isal_deflate_icf_finish_lvl3
117mbin_dispatch_init5	isal_deflate_icf_finish_lvl3, isal_deflate_icf_finish_hash_map_base, isal_deflate_icf_finish_hash_map_base, isal_deflate_icf_finish_hash_map_base, isal_deflate_icf_finish_hash_map_base
118
119mbin_interface		isal_update_histogram
120mbin_dispatch_init5	isal_update_histogram, isal_update_histogram_base, isal_update_histogram_01, isal_update_histogram_01, isal_update_histogram_04
121
122%ifdef HAVE_AS_KNOWS_AVX512
123mbin_interface		encode_deflate_icf
124mbin_dispatch_init6	encode_deflate_icf, encode_deflate_icf_base, encode_deflate_icf_base, encode_deflate_icf_base, encode_deflate_icf_04, encode_deflate_icf_06
125
126mbin_interface		set_long_icf_fg
127mbin_dispatch_init6	set_long_icf_fg, set_long_icf_fg_base, set_long_icf_fg_base, set_long_icf_fg_base, set_long_icf_fg_04, set_long_icf_fg_06
128
129mbin_interface		gen_icf_map_lh1
130mbin_dispatch_init6	gen_icf_map_lh1, gen_icf_map_h1_base, gen_icf_map_h1_base, gen_icf_map_h1_base, gen_icf_map_lh1_04, gen_icf_map_lh1_06
131%else
132mbin_interface		encode_deflate_icf
133mbin_dispatch_init5	encode_deflate_icf, encode_deflate_icf_base, encode_deflate_icf_base, encode_deflate_icf_base, encode_deflate_icf_04
134
135mbin_interface		set_long_icf_fg
136mbin_dispatch_init5	set_long_icf_fg, set_long_icf_fg_base, set_long_icf_fg_base, set_long_icf_fg_base, set_long_icf_fg_04
137
138mbin_interface		gen_icf_map_lh1
139mbin_dispatch_init5	gen_icf_map_lh1, gen_icf_map_h1_base, gen_icf_map_h1_base, gen_icf_map_h1_base, gen_icf_map_lh1_04
140%endif
141
142mbin_interface		crc32_gzip
143mbin_dispatch_init_clmul	crc32_gzip, crc32_gzip_base, crc32_gzip_01
144
145mbin_interface		isal_adler32
146mbin_dispatch_init5	isal_adler32, adler32_base, adler32_sse, adler32_sse, adler32_avx2_4
147
148mbin_interface		isal_deflate_hash_lvl0
149mbin_dispatch_init5	isal_deflate_hash_lvl0, isal_deflate_hash_base, isal_deflate_hash_crc_01, isal_deflate_hash_crc_01, isal_deflate_hash_crc_01
150
151mbin_interface		isal_deflate_hash_lvl1
152mbin_dispatch_init5	isal_deflate_hash_lvl1, isal_deflate_hash_base, isal_deflate_hash_crc_01, isal_deflate_hash_crc_01, isal_deflate_hash_crc_01
153
154mbin_interface		isal_deflate_hash_lvl2
155mbin_dispatch_init5	isal_deflate_hash_lvl2, isal_deflate_hash_base, isal_deflate_hash_crc_01, isal_deflate_hash_crc_01, isal_deflate_hash_crc_01
156
157mbin_interface		isal_deflate_hash_lvl3
158mbin_dispatch_init5	isal_deflate_hash_lvl3, isal_deflate_hash_base, isal_deflate_hash_base, isal_deflate_hash_base, isal_deflate_hash_mad_base
159
160