~ubuntu-branches/ubuntu/raring/perl-tk/raring

« back to all changes in this revision

Viewing changes to PNG/zlib/contrib/masmx86/gvmat32c.c

  • Committer: Bazaar Package Importer
  • Author(s): Colin Tuckley
  • Date: 2008-02-15 13:56:59 UTC
  • mfrom: (1.1.3 upstream) (4.1.1 hardy)
  • Revision ID: james.westby@ubuntu.com-20080215135659-ru2oqlykuju20fav
Tags: 1:804.028-1
* New Upstream Release (Closes: #463080).
* Update to Debhelper v5.
* Build with XFT=1 (Closes: #411129).

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)) */