~ubuntu-branches/ubuntu/wily/opencollada/wily-proposed

« back to all changes in this revision

Viewing changes to Externals/zlib/src/gvmat32c.c

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2015-05-14 17:23:27 UTC
  • Revision ID: package-import@ubuntu.com-20150514172327-f862u8envms01fra
Tags: upstream-0.1.0~20140703.ddf8f47+dfsg1
ImportĀ upstreamĀ versionĀ 0.1.0~20140703.ddf8f47+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 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)) */