| ; |
| ; 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 |
| |
| ; -------------------------------------------------------------------------- |