OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [zlib/] [contrib/] [masmx86/] [gvmat32c.c] - Blame information for rev 22

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 15 jlechner
/* gvmat32.c -- C portion of the optimized longest_match for 32 bits x86
2
 * Copyright (C) 1995-1996 Jean-loup Gailly and Gilles Vollant.
3
 * File written by Gilles Vollant, by modifiying the longest_match
4
 *  from Jean-loup Gailly in deflate.c
5
 *  it prepare all parameters and call the assembly longest_match_gvasm
6
 *  longest_match execute standard C code is wmask != 0x7fff
7
 *     (assembly code is faster with a fixed wmask)
8
 *
9
 * Read comment at beginning of gvmat32.asm for more information
10
 */
11
 
12
#if defined(ASMV) && (!defined(NOOLDPENTIUMCODE))
13
#include "deflate.h"
14
 
15
/* if your C compiler don't add underline before function name,
16
        define ADD_UNDERLINE_ASMFUNC */
17
#ifdef ADD_UNDERLINE_ASMFUNC
18
#define longest_match_7fff _longest_match_7fff
19
#define longest_match_686  _longest_match_686
20
#define cpudetect32        _cpudetect32
21
#endif
22
 
23
 
24
unsigned long cpudetect32();
25
 
26
uInt longest_match_c(
27
    deflate_state *s,
28
    IPos cur_match);                             /* current match */
29
 
30
 
31
uInt longest_match_7fff(
32
    deflate_state *s,
33
    IPos cur_match);                             /* current match */
34
 
35
uInt longest_match_686(
36
    deflate_state *s,
37
    IPos cur_match);                             /* current match */
38
 
39
 
40
static uInt iIsPPro=2;
41
 
42
void match_init ()
43
{
44
    iIsPPro = (((cpudetect32()/0x100)&0xf)>=6) ? 1 : 0;
45
}
46
 
47
uInt longest_match(
48
    deflate_state *s,
49
    IPos cur_match)                             /* current match */
50
{
51
    if (iIsPPro!=0)
52
        return longest_match_686(s,cur_match);
53
 
54
    if (s->w_mask != 0x7fff)
55
        return longest_match_686(s,cur_match);
56
 
57
    /* now ((s->w_mask == 0x7fff) && (iIsPPro==0)) */
58
        return longest_match_7fff(s,cur_match);
59
}
60
 
61
 
62
#endif /* defined(ASMV) && (!defined(NOOLDPENTIUMCODE)) */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.