update latest
[external/libjpeg-turbo.git] / simd / jcgrammx.asm
1 ;
2 ; jcgrammx.asm - grayscale colorspace conversion (MMX)
3 ;
4 ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5 ; Copyright 2011 D. R. Commander
6 ;
7 ; Based on
8 ; x86 SIMD extension for IJG JPEG library
9 ; Copyright (C) 1999-2006, MIYASAKA Masaru.
10 ; For conditions of distribution and use, see copyright notice in jsimdext.inc
11 ;
12 ; This file should be assembled with NASM (Netwide Assembler),
13 ; can *not* be assembled with Microsoft's MASM or any compatible
14 ; assembler (including Borland's Turbo Assembler).
15 ; NASM is available from http://nasm.sourceforge.net/ or
16 ; http://sourceforge.net/project/showfiles.php?group_id=6208
17 ;
18 ; [TAB8]
19
20 %include "jsimdext.inc"
21
22 ; --------------------------------------------------------------------------
23
24 %define SCALEBITS       16
25
26 F_0_114 equ      7471                   ; FIX(0.11400)
27 F_0_250 equ     16384                   ; FIX(0.25000)
28 F_0_299 equ     19595                   ; FIX(0.29900)
29 F_0_587 equ     38470                   ; FIX(0.58700)
30 F_0_337 equ     (F_0_587 - F_0_250)     ; FIX(0.58700) - FIX(0.25000)
31
32 ; --------------------------------------------------------------------------
33         SECTION SEG_CONST
34
35         alignz  16
36         global  EXTN(jconst_rgb_gray_convert_mmx)
37
38 EXTN(jconst_rgb_gray_convert_mmx):
39
40 PW_F0299_F0337  times 2 dw  F_0_299, F_0_337
41 PW_F0114_F0250  times 2 dw  F_0_114, F_0_250
42 PD_ONEHALF      times 2 dd  (1 << (SCALEBITS-1))
43
44         alignz  16
45
46 ; --------------------------------------------------------------------------
47         SECTION SEG_TEXT
48         BITS    32
49
50 %include "jcgrymmx.asm"
51
52 %undef RGB_RED
53 %undef RGB_GREEN
54 %undef RGB_BLUE
55 %undef RGB_PIXELSIZE
56 %define RGB_RED EXT_RGB_RED
57 %define RGB_GREEN EXT_RGB_GREEN
58 %define RGB_BLUE EXT_RGB_BLUE
59 %define RGB_PIXELSIZE EXT_RGB_PIXELSIZE
60 %define jsimd_rgb_gray_convert_mmx jsimd_extrgb_gray_convert_mmx
61 %include "jcgrymmx.asm"
62
63 %undef RGB_RED
64 %undef RGB_GREEN
65 %undef RGB_BLUE
66 %undef RGB_PIXELSIZE
67 %define RGB_RED EXT_RGBX_RED
68 %define RGB_GREEN EXT_RGBX_GREEN
69 %define RGB_BLUE EXT_RGBX_BLUE
70 %define RGB_PIXELSIZE EXT_RGBX_PIXELSIZE
71 %define jsimd_rgb_gray_convert_mmx jsimd_extrgbx_gray_convert_mmx
72 %include "jcgrymmx.asm"
73
74 %undef RGB_RED
75 %undef RGB_GREEN
76 %undef RGB_BLUE
77 %undef RGB_PIXELSIZE
78 %define RGB_RED EXT_BGR_RED
79 %define RGB_GREEN EXT_BGR_GREEN
80 %define RGB_BLUE EXT_BGR_BLUE
81 %define RGB_PIXELSIZE EXT_BGR_PIXELSIZE
82 %define jsimd_rgb_gray_convert_mmx jsimd_extbgr_gray_convert_mmx
83 %include "jcgrymmx.asm"
84
85 %undef RGB_RED
86 %undef RGB_GREEN
87 %undef RGB_BLUE
88 %undef RGB_PIXELSIZE
89 %define RGB_RED EXT_BGRX_RED
90 %define RGB_GREEN EXT_BGRX_GREEN
91 %define RGB_BLUE EXT_BGRX_BLUE
92 %define RGB_PIXELSIZE EXT_BGRX_PIXELSIZE
93 %define jsimd_rgb_gray_convert_mmx jsimd_extbgrx_gray_convert_mmx
94 %include "jcgrymmx.asm"
95
96 %undef RGB_RED
97 %undef RGB_GREEN
98 %undef RGB_BLUE
99 %undef RGB_PIXELSIZE
100 %define RGB_RED EXT_XBGR_RED
101 %define RGB_GREEN EXT_XBGR_GREEN
102 %define RGB_BLUE EXT_XBGR_BLUE
103 %define RGB_PIXELSIZE EXT_XBGR_PIXELSIZE
104 %define jsimd_rgb_gray_convert_mmx jsimd_extxbgr_gray_convert_mmx
105 %include "jcgrymmx.asm"
106
107 %undef RGB_RED
108 %undef RGB_GREEN
109 %undef RGB_BLUE
110 %undef RGB_PIXELSIZE
111 %define RGB_RED EXT_XRGB_RED
112 %define RGB_GREEN EXT_XRGB_GREEN
113 %define RGB_BLUE EXT_XRGB_BLUE
114 %define RGB_PIXELSIZE EXT_XRGB_PIXELSIZE
115 %define jsimd_rgb_gray_convert_mmx jsimd_extxrgb_gray_convert_mmx
116 %include "jcgrymmx.asm"