blob: 2779565fb6357b2cd76ebb2222bc6e591c7a4c2c [file] [log] [blame]
Pierre Ossman82c7f312009-03-09 13:21:27 +00001// This file generates the include file for the assembly
2// implementations by abusing the C preprocessor.
Pierre Ossman3e0e2de2009-03-09 13:25:30 +00003//
4// Note: Some things are manually defined as they need to
5// be mapped to NASM types.
Pierre Ossman82c7f312009-03-09 13:21:27 +00006
7;
8; Automatically generated include file from jsimdcfg.inc.h
9;
10
11#define JPEG_INTERNALS
12
13#include "../jpeglib.h"
14#include "../jconfig.h"
15#include "../jmorecfg.h"
16#include "jsimd.h"
17
18#define define(var) %define _cpp_protection_##var
19#define definev(var) %define _cpp_protection_##var var
20
21;
Pierre Ossman3e0e2de2009-03-09 13:25:30 +000022; -- jpeglib.h
23;
24
25definev(DCTSIZE)
26definev(DCTSIZE2)
27
28;
29; -- jmorecfg.h
30;
31
32definev(RGB_RED)
33definev(RGB_GREEN)
34definev(RGB_BLUE)
35
36definev(RGB_PIXELSIZE)
37
38; Representation of a single sample (pixel element value).
39; On this SIMD implementation, this must be 'unsigned char'.
40;
41
42%define JSAMPLE byte ; unsigned char
43%define SIZEOF_JSAMPLE SIZEOF_BYTE ; sizeof(JSAMPLE)
44
45definev(CENTERJSAMPLE)
46
47; Representation of a DCT frequency coefficient.
48; On this SIMD implementation, this must be 'short'.
49;
50%define JCOEF word ; short
51%define SIZEOF_JCOEF SIZEOF_WORD ; sizeof(JCOEF)
52
53; Datatype used for image dimensions.
54; On this SIMD implementation, this must be 'unsigned int'.
55;
56%define JDIMENSION dword ; unsigned int
57%define SIZEOF_JDIMENSION SIZEOF_DWORD ; sizeof(JDIMENSION)
58
59%define JSAMPROW POINTER ; JSAMPLE FAR * (jpeglib.h)
60%define JSAMPARRAY POINTER ; JSAMPROW * (jpeglib.h)
61%define JSAMPIMAGE POINTER ; JSAMPARRAY * (jpeglib.h)
62%define JCOEFPTR POINTER ; JCOEF FAR * (jpeglib.h)
63%define SIZEOF_JSAMPROW SIZEOF_POINTER ; sizeof(JSAMPROW)
64%define SIZEOF_JSAMPARRAY SIZEOF_POINTER ; sizeof(JSAMPARRAY)
65%define SIZEOF_JSAMPIMAGE SIZEOF_POINTER ; sizeof(JSAMPIMAGE)
66%define SIZEOF_JCOEFPTR SIZEOF_POINTER ; sizeof(JCOEFPTR)
67
68;
69; -- jdct.h
70;
71
72; A forward DCT routine is given a pointer to a work area of type DCTELEM[];
73; the DCT is to be performed in-place in that buffer.
74; To maximize parallelism, Type DCTELEM is changed to short (originally, int).
75;
76%define DCTELEM word ; short
77%define SIZEOF_DCTELEM SIZEOF_WORD ; sizeof(DCTELEM)
78
Pierre Ossman2c2e54b2009-03-09 13:28:10 +000079%define FAST_FLOAT FP32 ; float
80%define SIZEOF_FAST_FLOAT SIZEOF_FP32 ; sizeof(FAST_FLOAT)
81
Pierre Ossman3e0e2de2009-03-09 13:25:30 +000082; To maximize parallelism, Type MULTIPLIER is changed to short.
83;
84%define ISLOW_MULT_TYPE word ; must be short
85%define SIZEOF_ISLOW_MULT_TYPE SIZEOF_WORD ; sizeof(ISLOW_MULT_TYPE)
86
87%define IFAST_MULT_TYPE word ; must be short
88%define SIZEOF_IFAST_MULT_TYPE SIZEOF_WORD ; sizeof(IFAST_MULT_TYPE)
89%define IFAST_SCALE_BITS 2 ; fractional bits in scale factors
90
Pierre Ossman2c2e54b2009-03-09 13:28:10 +000091%define FLOAT_MULT_TYPE FP32 ; must be float
92%define SIZEOF_FLOAT_MULT_TYPE SIZEOF_FP32 ; sizeof(FLOAT_MULT_TYPE)
93
Pierre Ossman3e0e2de2009-03-09 13:25:30 +000094;
Pierre Ossman82c7f312009-03-09 13:21:27 +000095; -- jsimd.h
96;
97
98definev(JSIMD_NONE)
Pierre Ossman3e0e2de2009-03-09 13:25:30 +000099definev(JSIMD_MMX)
Pierre Ossman2c2e54b2009-03-09 13:28:10 +0000100definev(JSIMD_3DNOW)
Pierre Ossman0d37c572009-03-09 13:31:56 +0000101definev(JSIMD_SSE)
Pierre Ossman82c7f312009-03-09 13:21:27 +0000102
103; Short forms of external names for systems with brain-damaged linkers.
104;
105#ifdef NEED_SHORT_EXTERNAL_NAMES
106definev(jpeg_simd_cpu_support)
Pierre Ossman3e0e2de2009-03-09 13:25:30 +0000107definev(jsimd_rgb_ycc_convert_mmx)
108definev(jsimd_ycc_rgb_convert_mmx)
109definev(jsimd_h2v2_downsample_mmx)
110definev(jsimd_h2v1_downsample_mmx)
111definev(jsimd_h2v2_upsample_mmx)
112definev(jsimd_h2v1_upsample_mmx)
113definev(jsimd_h2v1_fancy_upsample_mmx)
114definev(jsimd_h2v2_fancy_upsample_mmx)
115definev(jsimd_h2v1_merged_upsample_mmx)
116definev(jsimd_h2v2_merged_upsample_mmx)
117definev(jsimd_convsamp_mmx)
Pierre Ossman2c2e54b2009-03-09 13:28:10 +0000118definev(jsimd_convsamp_float_3dnow)
Pierre Ossman0d37c572009-03-09 13:31:56 +0000119definev(jsimd_convsamp_float_sse)
Pierre Ossman3e0e2de2009-03-09 13:25:30 +0000120definev(jsimd_fdct_islow_mmx)
121definev(jsimd_fdct_ifast_mmx)
Pierre Ossman2c2e54b2009-03-09 13:28:10 +0000122definev(jsimd_fdct_float_3dnow)
Pierre Ossman0d37c572009-03-09 13:31:56 +0000123definev(jconst_fdct_float_sse)
124definev(jsimd_fdct_float_sse)
Pierre Ossman3e0e2de2009-03-09 13:25:30 +0000125definev(jsimd_quantize_mmx)
Pierre Ossman2c2e54b2009-03-09 13:28:10 +0000126definev(jsimd_quantize_float_3dnow)
Pierre Ossman0d37c572009-03-09 13:31:56 +0000127definev(jsimd_quantize_float_sse)
Pierre Ossman3e0e2de2009-03-09 13:25:30 +0000128definev(jsimd_idct_2x2_mmx)
129definev(jsimd_idct_4x4_mmx)
130definev(jsimd_idct_islow_mmx)
131definev(jsimd_idct_ifast_mmx)
Pierre Ossman2c2e54b2009-03-09 13:28:10 +0000132definev(jsimd_idct_float_3dnow)
Pierre Ossman0d37c572009-03-09 13:31:56 +0000133definev(jconst_idct_float_sse)
134definev(jsimd_idct_float_sse)
Pierre Ossman82c7f312009-03-09 13:21:27 +0000135#endif /* NEED_SHORT_EXTERNAL_NAMES */
136