Independent JPEG Group's JPEG software release 6b with x86 SIMD extension for IJG JPEG library version 1.02
157 lines
4.6 KiB
PHP
157 lines
4.6 KiB
PHP
;
|
|
; jcolsamp.inc - private declarations for color conversion & up/downsampling
|
|
;
|
|
; x86 SIMD extension for IJG JPEG library
|
|
; Copyright (C) 1999-2006, MIYASAKA Masaru.
|
|
; For conditions of distribution and use, see copyright notice in jsimdext.inc
|
|
;
|
|
; Last Modified : January 5, 2006
|
|
;
|
|
; [TAB8]
|
|
|
|
; --------------------------------------------------------------------------
|
|
;
|
|
; configuration check: BITS_IN_JSAMPLE==8 (8-bit sample values) is the only
|
|
; valid setting on this SIMD extension.
|
|
;
|
|
%if BITS_IN_JSAMPLE != 8
|
|
%error "Sorry, this SIMD code only copes with 8-bit sample values."
|
|
%endif
|
|
|
|
; Short forms of external names for systems with brain-damaged linkers.
|
|
;
|
|
%ifdef NEED_SHORT_EXTERNAL_NAMES
|
|
%define jpeg_rgb_ycc_convert_mmx jMRgbYccCnv ; jccolmmx.asm
|
|
%define jpeg_rgb_ycc_convert_sse2 jSRgbYccCnv ; jccolss2.asm
|
|
%define jpeg_h2v1_downsample_mmx jM21Downsample ; jcsammmx.asm
|
|
%define jpeg_h2v2_downsample_mmx jM22Downsample ; jcsammmx.asm
|
|
%define jpeg_h2v1_downsample_sse2 jS21Downsample ; jcsamss2.asm
|
|
%define jpeg_h2v2_downsample_sse2 jS22Downsample ; jcsamss2.asm
|
|
%define jpeg_ycc_rgb_convert_mmx jMYccRgbCnv ; jdcolmmx.asm
|
|
%define jpeg_ycc_rgb_convert_sse2 jSYccRgbCnv ; jdcolss2.asm
|
|
%define jpeg_h2v1_merged_upsample_mmx jM21MerUpsample ; jdmermmx.asm
|
|
%define jpeg_h2v2_merged_upsample_mmx jM22MerUpsample ; jdmermmx.asm
|
|
%define jpeg_h2v1_merged_upsample_sse2 jS21MerUpsample ; jdmerss2.asm
|
|
%define jpeg_h2v2_merged_upsample_sse2 jS22MerUpsample ; jdmerss2.asm
|
|
%define jpeg_h2v1_fancy_upsample_mmx jM21FanUpsample ; jdsammmx.asm
|
|
%define jpeg_h2v2_fancy_upsample_mmx jM22FanUpsample ; jdsammmx.asm
|
|
%define jpeg_h1v2_fancy_upsample_mmx jM12FanUpsample ; jdsammmx.asm
|
|
%define jpeg_h2v1_upsample_mmx jM21Upsample ; jdsammmx.asm
|
|
%define jpeg_h2v2_upsample_mmx jM22Upsample ; jdsammmx.asm
|
|
%define jpeg_h2v1_fancy_upsample_sse2 jS21FanUpsample ; jdsamss2.asm
|
|
%define jpeg_h2v2_fancy_upsample_sse2 jS22FanUpsample ; jdsamss2.asm
|
|
%define jpeg_h1v2_fancy_upsample_sse2 jS12FanUpsample ; jdsamss2.asm
|
|
%define jpeg_h2v1_upsample_sse2 jS21Upsample ; jdsamss2.asm
|
|
%define jpeg_h2v2_upsample_sse2 jS22Upsample ; jdsamss2.asm
|
|
%define jconst_rgb_ycc_convert_mmx jMCRgbYccCnv ; jccolmmx.asm
|
|
%define jconst_rgb_ycc_convert_sse2 jSCRgbYccCnv ; jccolss2.asm
|
|
%define jconst_ycc_rgb_convert_mmx jMCYccRgbCnv ; jdcolmmx.asm
|
|
%define jconst_ycc_rgb_convert_sse2 jSCYccRgbCnv ; jdcolss2.asm
|
|
%define jconst_merged_upsample_mmx jMCMerUpsample ; jdmermmx.asm
|
|
%define jconst_merged_upsample_sse2 jSCMerUpsample ; jdmerss2.asm
|
|
%define jconst_fancy_upsample_mmx jMCFanUpsample ; jdsammmx.asm
|
|
%define jconst_fancy_upsample_sse2 jSCFanUpsample ; jdsamss2.asm
|
|
%endif ; NEED_SHORT_EXTERNAL_NAMES
|
|
|
|
; --------------------------------------------------------------------------
|
|
|
|
; pseudo-resisters to make ordering of RGB configurable
|
|
;
|
|
%if RGB_PIXELSIZE == 3 || RGB_PIXELSIZE == 4
|
|
%if RGB_RED < 0 || RGB_RED >= RGB_PIXELSIZE || RGB_GREEN < 0 || \
|
|
RGB_GREEN >= RGB_PIXELSIZE || RGB_BLUE < 0 || RGB_BLUE >= RGB_PIXELSIZE || \
|
|
RGB_RED == RGB_GREEN || RGB_GREEN == RGB_BLUE || RGB_RED == RGB_BLUE
|
|
%error "Incorrect RGB pixel offset."
|
|
%endif
|
|
|
|
%if RGB_RED == 0
|
|
%define mmA mm0
|
|
%define mmB mm1
|
|
%define xmmA xmm0
|
|
%define xmmB xmm1
|
|
%elif RGB_GREEN == 0
|
|
%define mmA mm2
|
|
%define mmB mm3
|
|
%define xmmA xmm2
|
|
%define xmmB xmm3
|
|
%elif RGB_BLUE == 0
|
|
%define mmA mm4
|
|
%define mmB mm5
|
|
%define xmmA xmm4
|
|
%define xmmB xmm5
|
|
%else
|
|
%define mmA mm6
|
|
%define mmB mm7
|
|
%define xmmA xmm6
|
|
%define xmmB xmm7
|
|
%endif
|
|
|
|
%if RGB_RED == 1
|
|
%define mmC mm0
|
|
%define mmD mm1
|
|
%define xmmC xmm0
|
|
%define xmmD xmm1
|
|
%elif RGB_GREEN == 1
|
|
%define mmC mm2
|
|
%define mmD mm3
|
|
%define xmmC xmm2
|
|
%define xmmD xmm3
|
|
%elif RGB_BLUE == 1
|
|
%define mmC mm4
|
|
%define mmD mm5
|
|
%define xmmC xmm4
|
|
%define xmmD xmm5
|
|
%else
|
|
%define mmC mm6
|
|
%define mmD mm7
|
|
%define xmmC xmm6
|
|
%define xmmD xmm7
|
|
%endif
|
|
|
|
%if RGB_RED == 2
|
|
%define mmE mm0
|
|
%define mmF mm1
|
|
%define xmmE xmm0
|
|
%define xmmF xmm1
|
|
%elif RGB_GREEN == 2
|
|
%define mmE mm2
|
|
%define mmF mm3
|
|
%define xmmE xmm2
|
|
%define xmmF xmm3
|
|
%elif RGB_BLUE == 2
|
|
%define mmE mm4
|
|
%define mmF mm5
|
|
%define xmmE xmm4
|
|
%define xmmF xmm5
|
|
%else
|
|
%define mmE mm6
|
|
%define mmF mm7
|
|
%define xmmE xmm6
|
|
%define xmmF xmm7
|
|
%endif
|
|
|
|
%if RGB_RED == 3
|
|
%define mmG mm0
|
|
%define mmH mm1
|
|
%define xmmG xmm0
|
|
%define xmmH xmm1
|
|
%elif RGB_GREEN == 3
|
|
%define mmG mm2
|
|
%define mmH mm3
|
|
%define xmmG xmm2
|
|
%define xmmH xmm3
|
|
%elif RGB_BLUE == 3
|
|
%define mmG mm4
|
|
%define mmH mm5
|
|
%define xmmG xmm4
|
|
%define xmmH xmm5
|
|
%else
|
|
%define mmG mm6
|
|
%define mmH mm7
|
|
%define xmmG xmm6
|
|
%define xmmH xmm7
|
|
%endif
|
|
%endif ; RGB_PIXELSIZE == 3 || RGB_PIXELSIZE == 4
|
|
|
|
; --------------------------------------------------------------------------
|