blob: 03f5dbd57cf613387585b19d7ff45f3516a929cf [file] [log] [blame]
;
; 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
; --------------------------------------------------------------------------