1f316e962SGreg Tucker /********************************************************************** 2f316e962SGreg Tucker Copyright(c) 2011-2017 Intel Corporation All rights reserved. 3f316e962SGreg Tucker 4f316e962SGreg Tucker Redistribution and use in source and binary forms, with or without 5f316e962SGreg Tucker modification, are permitted provided that the following conditions 6f316e962SGreg Tucker are met: 7f316e962SGreg Tucker * Redistributions of source code must retain the above copyright 8f316e962SGreg Tucker notice, this list of conditions and the following disclaimer. 9f316e962SGreg Tucker * Redistributions in binary form must reproduce the above copyright 10f316e962SGreg Tucker notice, this list of conditions and the following disclaimer in 11f316e962SGreg Tucker the documentation and/or other materials provided with the 12f316e962SGreg Tucker distribution. 13f316e962SGreg Tucker * Neither the name of Intel Corporation nor the names of its 14f316e962SGreg Tucker contributors may be used to endorse or promote products derived 15f316e962SGreg Tucker from this software without specific prior written permission. 16f316e962SGreg Tucker 17f316e962SGreg Tucker THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18f316e962SGreg Tucker "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19f316e962SGreg Tucker LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20f316e962SGreg Tucker A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21f316e962SGreg Tucker OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22f316e962SGreg Tucker SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23f316e962SGreg Tucker LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24f316e962SGreg Tucker DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25f316e962SGreg Tucker THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26f316e962SGreg Tucker (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27f316e962SGreg Tucker OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28f316e962SGreg Tucker **********************************************************************/ 29f316e962SGreg Tucker 30f316e962SGreg Tucker #include <stdint.h> 31f316e962SGreg Tucker #include "igzip_lib.h" 32f316e962SGreg Tucker #include "encode_df.h" 334ae2d1beSRoy Oursler #include "igzip_level_buf_structs.h" 34f316e962SGreg Tucker 3555fbfabfSMarcel Cornu void 3655fbfabfSMarcel Cornu isal_deflate_body_base(struct isal_zstream *stream); 3755fbfabfSMarcel Cornu void 3855fbfabfSMarcel Cornu isal_deflate_finish_base(struct isal_zstream *stream); 3955fbfabfSMarcel Cornu void 4055fbfabfSMarcel Cornu isal_deflate_icf_body_hash_hist_base(struct isal_zstream *stream); 4155fbfabfSMarcel Cornu void 4255fbfabfSMarcel Cornu icf_body_hash1_fillgreedy_lazy(struct isal_zstream *stream); 4355fbfabfSMarcel Cornu void 4455fbfabfSMarcel Cornu isal_deflate_icf_finish_hash_hist_base(struct isal_zstream *stream); 4555fbfabfSMarcel Cornu void 4655fbfabfSMarcel Cornu isal_deflate_icf_finish_hash_map_base(struct isal_zstream *stream); 4755fbfabfSMarcel Cornu void 4855fbfabfSMarcel Cornu isal_update_histogram_base(uint8_t *start_stream, int length, 49f316e962SGreg Tucker struct isal_huff_histogram *histogram); 5055fbfabfSMarcel Cornu struct deflate_icf * 5155fbfabfSMarcel Cornu encode_deflate_icf_base(struct deflate_icf *next_in, struct deflate_icf *end_in, struct BitBuf2 *bb, 52f316e962SGreg Tucker struct hufftables_icf *hufftables); 5355fbfabfSMarcel Cornu uint32_t 5455fbfabfSMarcel Cornu adler32_base(uint32_t init, const unsigned char *buf, uint64_t len); 5555fbfabfSMarcel Cornu int 5655fbfabfSMarcel Cornu decode_huffman_code_block_stateless_base(struct inflate_state *s, uint8_t *start_out); 579203f96cSRoy Oursler 5855fbfabfSMarcel Cornu extern void 5955fbfabfSMarcel Cornu isal_deflate_hash_base(uint16_t *, uint32_t, uint32_t, uint8_t *, uint32_t); 609203f96cSRoy Oursler 6155fbfabfSMarcel Cornu void 62*e3c2d243SMattias Ellert set_long_icf_fg_base(uint8_t *next_in, uint64_t processed, uint64_t input_size, 63*e3c2d243SMattias Ellert struct deflate_icf *match_lookup); 64*e3c2d243SMattias Ellert 65*e3c2d243SMattias Ellert uint64_t 6655fbfabfSMarcel Cornu gen_icf_map_h1_base(struct isal_zstream *stream, struct deflate_icf *matches_icf_lookup, 6755fbfabfSMarcel Cornu uint64_t input_size); 68f316e962SGreg Tucker 6955fbfabfSMarcel Cornu void 7055fbfabfSMarcel Cornu isal_deflate_body(struct isal_zstream *stream) 71f316e962SGreg Tucker { 72f316e962SGreg Tucker isal_deflate_body_base(stream); 73f316e962SGreg Tucker } 74f316e962SGreg Tucker 7555fbfabfSMarcel Cornu void 7655fbfabfSMarcel Cornu isal_deflate_finish(struct isal_zstream *stream) 77f316e962SGreg Tucker { 78f316e962SGreg Tucker isal_deflate_finish_base(stream); 79f316e962SGreg Tucker } 80f316e962SGreg Tucker 8155fbfabfSMarcel Cornu void 8255fbfabfSMarcel Cornu isal_deflate_icf_body_lvl1(struct isal_zstream *stream) 83f316e962SGreg Tucker { 8403bef684SRoy Oursler isal_deflate_icf_body_hash_hist_base(stream); 854ae2d1beSRoy Oursler } 864ae2d1beSRoy Oursler 8755fbfabfSMarcel Cornu void 8855fbfabfSMarcel Cornu isal_deflate_icf_body_lvl2(struct isal_zstream *stream) 898965584aSRoy Oursler { 908965584aSRoy Oursler isal_deflate_icf_body_hash_hist_base(stream); 918965584aSRoy Oursler } 928965584aSRoy Oursler 9355fbfabfSMarcel Cornu void 9455fbfabfSMarcel Cornu isal_deflate_icf_body_lvl3(struct isal_zstream *stream) 954b45beffSRoy Oursler { 964b45beffSRoy Oursler icf_body_hash1_fillgreedy_lazy(stream); 974b45beffSRoy Oursler } 984b45beffSRoy Oursler 9955fbfabfSMarcel Cornu void 10055fbfabfSMarcel Cornu isal_deflate_icf_finish_lvl1(struct isal_zstream *stream) 1014ae2d1beSRoy Oursler { 10203bef684SRoy Oursler isal_deflate_icf_finish_hash_hist_base(stream); 1034ae2d1beSRoy Oursler } 1044ae2d1beSRoy Oursler 10555fbfabfSMarcel Cornu void 10655fbfabfSMarcel Cornu isal_deflate_icf_finish_lvl2(struct isal_zstream *stream) 1074ae2d1beSRoy Oursler { 1088965584aSRoy Oursler isal_deflate_icf_finish_hash_hist_base(stream); 1098965584aSRoy Oursler } 1108965584aSRoy Oursler 11155fbfabfSMarcel Cornu void 11255fbfabfSMarcel Cornu isal_deflate_icf_finish_lvl3(struct isal_zstream *stream) 1138965584aSRoy Oursler { 1147a12bcb2SRoy Oursler isal_deflate_icf_finish_hash_map_base(stream); 115f316e962SGreg Tucker } 116f316e962SGreg Tucker 11755fbfabfSMarcel Cornu void 11855fbfabfSMarcel Cornu isal_update_histogram(uint8_t *start_stream, int length, struct isal_huff_histogram *histogram) 119f316e962SGreg Tucker { 120f316e962SGreg Tucker isal_update_histogram_base(start_stream, length, histogram); 121f316e962SGreg Tucker } 122f316e962SGreg Tucker 12355fbfabfSMarcel Cornu struct deflate_icf * 12455fbfabfSMarcel Cornu encode_deflate_icf(struct deflate_icf *next_in, struct deflate_icf *end_in, struct BitBuf2 *bb, 125f316e962SGreg Tucker struct hufftables_icf *hufftables) 126f316e962SGreg Tucker { 127f316e962SGreg Tucker return encode_deflate_icf_base(next_in, end_in, bb, hufftables); 128f316e962SGreg Tucker } 129dbab2ddaSGreg Tucker 13055fbfabfSMarcel Cornu uint32_t 13155fbfabfSMarcel Cornu isal_adler32(uint32_t init, const unsigned char *buf, uint64_t len) 13242591691SRoy Oursler { 13342591691SRoy Oursler return adler32_base(init, buf, len); 13442591691SRoy Oursler } 13542591691SRoy Oursler 13655fbfabfSMarcel Cornu int 13755fbfabfSMarcel Cornu decode_huffman_code_block_stateless(struct inflate_state *s, uint8_t *start_out) 13882702374SGreg Tucker { 139b4dfd61dSRoy Oursler return decode_huffman_code_block_stateless_base(s, start_out); 14082702374SGreg Tucker } 141ed15402fSRoy Oursler 14255fbfabfSMarcel Cornu void 14355fbfabfSMarcel Cornu isal_deflate_hash_lvl0(uint16_t *hash_table, uint32_t hash_mask, uint32_t current_index, 14455fbfabfSMarcel Cornu uint8_t *dict, uint32_t dict_len) 145ed15402fSRoy Oursler { 1469203f96cSRoy Oursler isal_deflate_hash_base(hash_table, hash_mask, current_index, dict, dict_len); 1474ae2d1beSRoy Oursler } 1484ae2d1beSRoy Oursler 14955fbfabfSMarcel Cornu void 15055fbfabfSMarcel Cornu isal_deflate_hash_lvl1(uint16_t *hash_table, uint32_t hash_mask, uint32_t current_index, 15155fbfabfSMarcel Cornu uint8_t *dict, uint32_t dict_len) 1527a12bcb2SRoy Oursler { 1537a12bcb2SRoy Oursler isal_deflate_hash_base(hash_table, hash_mask, current_index, dict, dict_len); 1547a12bcb2SRoy Oursler } 1557a12bcb2SRoy Oursler 15655fbfabfSMarcel Cornu void 15755fbfabfSMarcel Cornu isal_deflate_hash_lvl2(uint16_t *hash_table, uint32_t hash_mask, uint32_t current_index, 15855fbfabfSMarcel Cornu uint8_t *dict, uint32_t dict_len) 1594ae2d1beSRoy Oursler { 1609203f96cSRoy Oursler isal_deflate_hash_base(hash_table, hash_mask, current_index, dict, dict_len); 1614ae2d1beSRoy Oursler } 1624ae2d1beSRoy Oursler 16355fbfabfSMarcel Cornu void 16455fbfabfSMarcel Cornu isal_deflate_hash_lvl3(uint16_t *hash_table, uint32_t hash_mask, uint32_t current_index, 16555fbfabfSMarcel Cornu uint8_t *dict, uint32_t dict_len) 1668965584aSRoy Oursler { 1678965584aSRoy Oursler isal_deflate_hash_base(hash_table, hash_mask, current_index, dict, dict_len); 1688965584aSRoy Oursler } 1698965584aSRoy Oursler 17055fbfabfSMarcel Cornu void 171*e3c2d243SMattias Ellert set_long_icf_fg(uint8_t *next_in, uint64_t processed, uint64_t input_size, 172*e3c2d243SMattias Ellert struct deflate_icf *match_lookup) 1734ae2d1beSRoy Oursler { 174*e3c2d243SMattias Ellert set_long_icf_fg_base(next_in, processed, input_size, match_lookup); 1754ae2d1beSRoy Oursler } 1764ae2d1beSRoy Oursler 177*e3c2d243SMattias Ellert uint64_t 17855fbfabfSMarcel Cornu gen_icf_map_lh1(struct isal_zstream *stream, struct deflate_icf *matches_icf_lookup, 17955fbfabfSMarcel Cornu uint64_t input_size) 1804ae2d1beSRoy Oursler { 181*e3c2d243SMattias Ellert return gen_icf_map_h1_base(stream, matches_icf_lookup, input_size); 182ed15402fSRoy Oursler } 183