1 /* lzo_asm.h -- assembler prototypes for the LZO data compression library
3 This file is part of the LZO real-time data compression library.
5 Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
8 The LZO library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License as
10 published by the Free Software Foundation; either version 2 of
11 the License, or (at your option) any later version.
13 The LZO library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with the LZO library; see the file COPYING.
20 If not, write to the Free Software Foundation, Inc.,
21 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 Markus F.X.J. Oberhumer
24 <markus@oberhumer.com>
25 http://www.oberhumer.com/opensource/lzo/
29 #ifndef __LZO_ASM_H_INCLUDED
30 #define __LZO_ASM_H_INCLUDED 1
32 #ifndef __LZOCONF_H_INCLUDED
33 #include <lzo/lzoconf.h>
41 /***********************************************************************
42 // i386 assembly decompressors
47 // - For reasons of speed all fast assembler decompressors (having '_fast'
48 // in their name) can access (write to) up to 3 bytes past the end of
49 // the decompressed ("dst") block. Data past the end of the compressed
50 // ("src") block is never accessed (read from).
51 // [ technical note: because data is transferred in 32-bit units ]
53 // - Please also see asm/i386/00README.TXT and doc/LZO.FAQ for more
54 // important details about the assembler versions.
56 ************************************************************************/
58 LZO_EXTERN(int) lzo1c_decompress_asm
59 (const lzo_bytep src
, lzo_uint src_len
,
60 lzo_bytep dst
, lzo_uintp dst_len
,
62 LZO_EXTERN(int) lzo1c_decompress_asm_safe
63 (const lzo_bytep src
, lzo_uint src_len
,
64 lzo_bytep dst
, lzo_uintp dst_len
,
67 LZO_EXTERN(int) lzo1f_decompress_asm_fast
68 (const lzo_bytep src
, lzo_uint src_len
,
69 lzo_bytep dst
, lzo_uintp dst_len
,
71 LZO_EXTERN(int) lzo1f_decompress_asm_fast_safe
72 (const lzo_bytep src
, lzo_uint src_len
,
73 lzo_bytep dst
, lzo_uintp dst_len
,
76 LZO_EXTERN(int) lzo1x_decompress_asm
77 (const lzo_bytep src
, lzo_uint src_len
,
78 lzo_bytep dst
, lzo_uintp dst_len
,
80 LZO_EXTERN(int) lzo1x_decompress_asm_safe
81 (const lzo_bytep src
, lzo_uint src_len
,
82 lzo_bytep dst
, lzo_uintp dst_len
,
84 LZO_EXTERN(int) lzo1x_decompress_asm_fast
85 (const lzo_bytep src
, lzo_uint src_len
,
86 lzo_bytep dst
, lzo_uintp dst_len
,
88 LZO_EXTERN(int) lzo1x_decompress_asm_fast_safe
89 (const lzo_bytep src
, lzo_uint src_len
,
90 lzo_bytep dst
, lzo_uintp dst_len
,
93 LZO_EXTERN(int) lzo1y_decompress_asm
94 (const lzo_bytep src
, lzo_uint src_len
,
95 lzo_bytep dst
, lzo_uintp dst_len
,
97 LZO_EXTERN(int) lzo1y_decompress_asm_safe
98 (const lzo_bytep src
, lzo_uint src_len
,
99 lzo_bytep dst
, lzo_uintp dst_len
,
101 LZO_EXTERN(int) lzo1y_decompress_asm_fast
102 (const lzo_bytep src
, lzo_uint src_len
,
103 lzo_bytep dst
, lzo_uintp dst_len
,
105 LZO_EXTERN(int) lzo1y_decompress_asm_fast_safe
106 (const lzo_bytep src
, lzo_uint src_len
,
107 lzo_bytep dst
, lzo_uintp dst_len
,
111 /***********************************************************************
112 // checksum and misc functions
113 ************************************************************************/
117 LZO_EXTERN(lzo_uint32_t
)
118 lzo_crc32_asm(lzo_uint32_t c
, const lzo_bytep buf
, lzo_uint len
,
119 const lzo_uint32_tp tab
);
121 LZO_EXTERN(lzo_uint32_t
)
122 lzo_crc32_asm_small(lzo_uint32_t c
, const lzo_bytep buf
, lzo_uint len
);
125 lzo_cpuid_asm(lzo_uint32_tp
/* lzo_uint32_t info[16] */ );
127 LZO_EXTERN(lzo_uint32_t
)
128 lzo_rdtsc_asm(lzo_uint32_tp
/* lzo_uint32_t ticks[2] */ );
137 #endif /* already included */
140 /* vim:set ts=4 sw=4 et: */