gvmat32c.c
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
- /* gvmat32.c -- C portion of the optimized longest_match for 32 bits x86
- * Copyright (C) 1995-1996 Jean-loup Gailly and Gilles Vollant.
- * File written by Gilles Vollant, by modifiying the longest_match
- * from Jean-loup Gailly in deflate.c
- * it prepare all parameters and call the assembly longest_match_gvasm
- * longest_match execute standard C code is wmask != 0x7fff
- * (assembly code is faster with a fixed wmask)
- *
- * Read comment at beginning of gvmat32.asm for more information
- */
- #if defined(ASMV) && (!defined(NOOLDPENTIUMCODE))
- #include "deflate.h"
- /* if your C compiler don't add underline before function name,
- define ADD_UNDERLINE_ASMFUNC */
- #ifdef ADD_UNDERLINE_ASMFUNC
- #define longest_match_7fff _longest_match_7fff
- #define longest_match_686 _longest_match_686
- #define cpudetect32 _cpudetect32
- #endif
- unsigned long cpudetect32();
- uInt longest_match_c(
- deflate_state *s,
- IPos cur_match); /* current match */
- uInt longest_match_7fff(
- deflate_state *s,
- IPos cur_match); /* current match */
- uInt longest_match_686(
- deflate_state *s,
- IPos cur_match); /* current match */
- static uInt iIsPPro=2;
- void match_init ()
- {
- iIsPPro = (((cpudetect32()/0x100)&0xf)>=6) ? 1 : 0;
- }
- uInt longest_match(
- deflate_state *s,
- IPos cur_match) /* current match */
- {
- if (iIsPPro!=0)
- return longest_match_686(s,cur_match);
- if (s->w_mask != 0x7fff)
- return longest_match_686(s,cur_match);
- /* now ((s->w_mask == 0x7fff) && (iIsPPro==0)) */
- return longest_match_7fff(s,cur_match);
- }
- #endif /* defined(ASMV) && (!defined(NOOLDPENTIUMCODE)) */