~ubuntu-branches/ubuntu/maverick/alsa-lib/maverick-proposed

« back to all changes in this revision

Viewing changes to .pc/relibtoolise.patch/src/pcm/plugin_ops.h

  • Committer: Bazaar Package Importer
  • Author(s): Daniel T Chen
  • Date: 2010-08-29 13:13:19 UTC
  • Revision ID: james.westby@ubuntu.com-20100829131319-ybw1m417ja2d2nv4
Tags: 1.0.23-1ubuntu2
* Apply upstream git changesets aadcbab through 72c7260ce
  and rediff debian/patches/relibtoolise.patch
  - correctly free dl handles, fixes LP: #552411, #584393
    (Closes: #589896)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  Plugin sample operators with fast switch
 
3
 *  Copyright (c) 2000 by Jaroslav Kysela <perex@perex.cz>
 
4
 *
 
5
 *
 
6
 *   This library is free software; you can redistribute it and/or modify
 
7
 *   it under the terms of the GNU Lesser General Public License as
 
8
 *   published by the Free Software Foundation; either version 2.1 of
 
9
 *   the License, or (at your option) any later version.
 
10
 *
 
11
 *   This program is distributed in the hope that it will be useful,
 
12
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 *   GNU Lesser General Public License for more details.
 
15
 *
 
16
 *   You should have received a copy of the GNU Lesser General Public
 
17
 *   License along with this library; if not, write to the Free Software
 
18
 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 
19
 *
 
20
 */
 
21
 
 
22
#ifndef SX_INLINES
 
23
#define SX_INLINES
 
24
static inline u_int32_t sx24(u_int32_t x)
 
25
{
 
26
        if(x&0x00800000)
 
27
                return x|0xFF000000;
 
28
        return x&0x00FFFFFF;
 
29
}
 
30
static inline u_int32_t sx24s(u_int32_t x)
 
31
{
 
32
        if(x&0x00008000)
 
33
                return x|0x000000FF;
 
34
        return x&0xFFFFFF00;
 
35
}
 
36
#endif
 
37
 
 
38
#define as_u8(ptr) (*(u_int8_t*)(ptr))
 
39
#define as_u16(ptr) (*(u_int16_t*)(ptr))
 
40
#define as_u32(ptr) (*(u_int32_t*)(ptr))
 
41
#define as_u64(ptr) (*(u_int64_t*)(ptr))
 
42
#define as_s8(ptr) (*(int8_t*)(ptr))
 
43
#define as_s16(ptr) (*(int16_t*)(ptr))
 
44
#define as_s32(ptr) (*(int32_t*)(ptr))
 
45
#define as_s64(ptr) (*(int64_t*)(ptr))
 
46
#define as_float(ptr) (*(float_t*)(ptr))
 
47
#define as_double(ptr) (*(double_t*)(ptr))
 
48
 
 
49
#define as_u8c(ptr) (*(const u_int8_t*)(ptr))
 
50
#define as_u16c(ptr) (*(const u_int16_t*)(ptr))
 
51
#define as_u32c(ptr) (*(const u_int32_t*)(ptr))
 
52
#define as_u64c(ptr) (*(const u_int64_t*)(ptr))
 
53
#define as_s8c(ptr) (*(const int8_t*)(ptr))
 
54
#define as_s16c(ptr) (*(const int16_t*)(ptr))
 
55
#define as_s32c(ptr) (*(const int32_t*)(ptr))
 
56
#define as_s64c(ptr) (*(const int64_t*)(ptr))
 
57
#define as_floatc(ptr) (*(const float_t*)(ptr))
 
58
#define as_doublec(ptr) (*(const double_t*)(ptr))
 
59
 
 
60
#define _get_triple_le(ptr) (*(u_int8_t*)(ptr) | (u_int32_t)*((u_int8_t*)(ptr) + 1) << 8 | (u_int32_t)*((u_int8_t*)(ptr) + 2) << 16)
 
61
#define _get_triple_be(ptr) ((u_int32_t)*(u_int8_t*)(ptr) << 16 | (u_int32_t)*((u_int8_t*)(ptr) + 1) << 8 | *((u_int8_t*)(ptr) + 2))
 
62
#define _put_triple_le(ptr,val) do { \
 
63
        u_int8_t *_tmp = (u_int8_t *)(ptr); \
 
64
        u_int32_t _val = (val); \
 
65
        _tmp[0] = _val; \
 
66
        _tmp[1] = _val >> 8; \
 
67
        _tmp[2] = _val >> 16; \
 
68
} while(0)
 
69
#define _put_triple_be(ptr,val) do { \
 
70
        u_int8_t *_tmp = (u_int8_t *)(ptr); \
 
71
        u_int32_t _val = (val); \
 
72
        _tmp[0] = _val >> 16; \
 
73
        _tmp[1] = _val >> 8; \
 
74
        _tmp[2] = _val; \
 
75
} while(0)
 
76
 
 
77
#ifdef SNDRV_LITTLE_ENDIAN
 
78
#define _get_triple(ptr) _get_triple_le(ptr)
 
79
#define _get_triple_s(ptr) _get_triple_be(ptr)
 
80
#define _put_triple(ptr,val) _put_triple_le(ptr,val)
 
81
#define _put_triple_s(ptr,val) _put_triple_be(ptr,val)
 
82
#else
 
83
#define _get_triple(ptr) _get_triple_be(ptr)
 
84
#define _get_triple_s(ptr) _get_triple_le(ptr)
 
85
#define _put_triple(ptr,val) _put_triple_be(ptr,val)
 
86
#define _put_triple_s(ptr,val) _put_triple_le(ptr,val)
 
87
#endif
 
88
 
 
89
#ifdef COPY_LABELS
 
90
static void *copy_labels[5] = {
 
91
        &&copy_8,
 
92
        &&copy_16,
 
93
        &&copy_24
 
94
        &&copy_32,
 
95
        &&copy_64
 
96
};
 
97
#endif
 
98
 
 
99
#ifdef COPY_END
 
100
while(0) {
 
101
copy_8: as_s8(dst) = as_s8c(src); goto COPY_END;
 
102
copy_16: as_s16(dst) = as_s16c(src); goto COPY_END;
 
103
copy_24: memcpy(dst,src,3); goto COPY_END;
 
104
copy_32: as_s32(dst) = as_s32c(src); goto COPY_END;
 
105
copy_64: as_s64(dst) = as_s64c(src); goto COPY_END;
 
106
}
 
107
#endif
 
108
 
 
109
#ifdef CONV_LABELS
 
110
/* src_wid src_endswap sign_toggle dst_wid dst_endswap */
 
111
static void *const conv_labels[4 * 2 * 2 * 4 * 2] = {
 
112
        &&conv_xxx1_xxx1,        /*  8h ->  8h */
 
113
        &&conv_xxx1_xxx1,        /*  8h ->  8s */
 
114
        &&conv_xxx1_xx10,        /*  8h -> 16h */
 
115
        &&conv_xxx1_xx01,        /*  8h -> 16s */
 
116
        &&conv_xxx1_x100,        /*  8h -> 24h */
 
117
        &&conv_xxx1_001x,        /*  8h -> 24s */
 
118
        &&conv_xxx1_1000,        /*  8h -> 32h */
 
119
        &&conv_xxx1_0001,        /*  8h -> 32s */
 
120
        &&conv_xxx1_xxx9,        /*  8h ^>  8h */
 
121
        &&conv_xxx1_xxx9,        /*  8h ^>  8s */
 
122
        &&conv_xxx1_xx90,        /*  8h ^> 16h */
 
123
        &&conv_xxx1_xx09,        /*  8h ^> 16s */
 
124
        &&conv_xxx1_x900,        /*  8h ^> 24h */
 
125
        &&conv_xxx1_009x,        /*  8h ^> 24s */
 
126
        &&conv_xxx1_9000,        /*  8h ^> 32h */
 
127
        &&conv_xxx1_0009,        /*  8h ^> 32s */
 
128
        &&conv_xxx1_xxx1,        /*  8s ->  8h */
 
129
        &&conv_xxx1_xxx1,        /*  8s ->  8s */
 
130
        &&conv_xxx1_xx10,        /*  8s -> 16h */
 
131
        &&conv_xxx1_xx01,        /*  8s -> 16s */
 
132
        &&conv_xxx1_x100,        /*  8s -> 24h */
 
133
        &&conv_xxx1_001x,        /*  8s -> 24s */
 
134
        &&conv_xxx1_1000,        /*  8s -> 32h */
 
135
        &&conv_xxx1_0001,        /*  8s -> 32s */
 
136
        &&conv_xxx1_xxx9,        /*  8s ^>  8h */
 
137
        &&conv_xxx1_xxx9,        /*  8s ^>  8s */
 
138
        &&conv_xxx1_xx90,        /*  8s ^> 16h */
 
139
        &&conv_xxx1_xx09,        /*  8s ^> 16s */
 
140
        &&conv_xxx1_x900,        /*  8s ^> 24h */
 
141
        &&conv_xxx1_009x,        /*  8s ^> 24s */
 
142
        &&conv_xxx1_9000,        /*  8s ^> 32h */
 
143
        &&conv_xxx1_0009,        /*  8s ^> 32s */
 
144
        &&conv_xx12_xxx1,        /* 16h ->  8h */
 
145
        &&conv_xx12_xxx1,        /* 16h ->  8s */
 
146
        &&conv_xx12_xx12,        /* 16h -> 16h */
 
147
        &&conv_xx12_xx21,        /* 16h -> 16s */
 
148
        &&conv_xx12_x120,        /* 16h -> 24h */
 
149
        &&conv_xx12_021x,        /* 16h -> 24s */
 
150
        &&conv_xx12_1200,        /* 16h -> 32h */
 
151
        &&conv_xx12_0021,        /* 16h -> 32s */
 
152
        &&conv_xx12_xxx9,        /* 16h ^>  8h */
 
153
        &&conv_xx12_xxx9,        /* 16h ^>  8s */
 
154
        &&conv_xx12_xx92,        /* 16h ^> 16h */
 
155
        &&conv_xx12_xx29,        /* 16h ^> 16s */
 
156
        &&conv_xx12_x920,        /* 16h ^> 24h */
 
157
        &&conv_xx12_029x,        /* 16h ^> 24s */
 
158
        &&conv_xx12_9200,        /* 16h ^> 32h */
 
159
        &&conv_xx12_0029,        /* 16h ^> 32s */
 
160
        &&conv_xx12_xxx2,        /* 16s ->  8h */
 
161
        &&conv_xx12_xxx2,        /* 16s ->  8s */
 
162
        &&conv_xx12_xx21,        /* 16s -> 16h */
 
163
        &&conv_xx12_xx12,        /* 16s -> 16s */
 
164
        &&conv_xx12_x210,        /* 16s -> 24h */
 
165
        &&conv_xx12_012x,        /* 16s -> 24s */
 
166
        &&conv_xx12_2100,        /* 16s -> 32h */
 
167
        &&conv_xx12_0012,        /* 16s -> 32s */
 
168
        &&conv_xx12_xxxA,        /* 16s ^>  8h */
 
169
        &&conv_xx12_xxxA,        /* 16s ^>  8s */
 
170
        &&conv_xx12_xxA1,        /* 16s ^> 16h */
 
171
        &&conv_xx12_xx1A,        /* 16s ^> 16s */
 
172
        &&conv_xx12_xA10,        /* 16s ^> 24h */
 
173
        &&conv_xx12_01Ax,        /* 16s ^> 24s */
 
174
        &&conv_xx12_A100,        /* 16s ^> 32h */
 
175
        &&conv_xx12_001A,        /* 16s ^> 32s */
 
176
        &&conv_x123_xxx1,        /* 24h ->  8h */
 
177
        &&conv_x123_xxx1,        /* 24h ->  8s */
 
178
        &&conv_x123_xx12,        /* 24h -> 16h */
 
179
        &&conv_x123_xx21,        /* 24h -> 16s */
 
180
        &&conv_x123_x123,        /* 24h -> 24h */
 
181
        &&conv_x123_321x,        /* 24h -> 24s */
 
182
        &&conv_x123_1230,        /* 24h -> 32h */
 
183
        &&conv_x123_0321,        /* 24h -> 32s */
 
184
        &&conv_x123_xxx9,        /* 24h ^>  8h */
 
185
        &&conv_x123_xxx9,        /* 24h ^>  8s */
 
186
        &&conv_x123_xx92,        /* 24h ^> 16h */
 
187
        &&conv_x123_xx29,        /* 24h ^> 16s */
 
188
        &&conv_x123_x923,        /* 24h ^> 24h */
 
189
        &&conv_x123_329x,        /* 24h ^> 24s */
 
190
        &&conv_x123_9230,        /* 24h ^> 32h */
 
191
        &&conv_x123_0329,        /* 24h ^> 32s */
 
192
        &&conv_123x_xxx3,        /* 24s ->  8h */
 
193
        &&conv_123x_xxx3,        /* 24s ->  8s */
 
194
        &&conv_123x_xx32,        /* 24s -> 16h */
 
195
        &&conv_123x_xx23,        /* 24s -> 16s */
 
196
        &&conv_123x_x321,        /* 24s -> 24h */
 
197
        &&conv_123x_123x,        /* 24s -> 24s */
 
198
        &&conv_123x_3210,        /* 24s -> 32h */
 
199
        &&conv_123x_0123,        /* 24s -> 32s */
 
200
        &&conv_123x_xxxB,        /* 24s ^>  8h */
 
201
        &&conv_123x_xxxB,        /* 24s ^>  8s */
 
202
        &&conv_123x_xxB2,        /* 24s ^> 16h */
 
203
        &&conv_123x_xx2B,        /* 24s ^> 16s */
 
204
        &&conv_123x_xB21,        /* 24s ^> 24h */
 
205
        &&conv_123x_12Bx,        /* 24s ^> 24s */
 
206
        &&conv_123x_B210,        /* 24s ^> 32h */
 
207
        &&conv_123x_012B,        /* 24s ^> 32s */
 
208
        &&conv_1234_xxx1,        /* 32h ->  8h */
 
209
        &&conv_1234_xxx1,        /* 32h ->  8s */
 
210
        &&conv_1234_xx12,        /* 32h -> 16h */
 
211
        &&conv_1234_xx21,        /* 32h -> 16s */
 
212
        &&conv_1234_x123,        /* 32h -> 24h */
 
213
        &&conv_1234_321x,        /* 32h -> 24s */
 
214
        &&conv_1234_1234,        /* 32h -> 32h */
 
215
        &&conv_1234_4321,        /* 32h -> 32s */
 
216
        &&conv_1234_xxx9,        /* 32h ^>  8h */
 
217
        &&conv_1234_xxx9,        /* 32h ^>  8s */
 
218
        &&conv_1234_xx92,        /* 32h ^> 16h */
 
219
        &&conv_1234_xx29,        /* 32h ^> 16s */
 
220
        &&conv_1234_x923,        /* 32h ^> 24h */
 
221
        &&conv_1234_329x,        /* 32h ^> 24s */
 
222
        &&conv_1234_9234,        /* 32h ^> 32h */
 
223
        &&conv_1234_4329,        /* 32h ^> 32s */
 
224
        &&conv_1234_xxx4,        /* 32s ->  8h */
 
225
        &&conv_1234_xxx4,        /* 32s ->  8s */
 
226
        &&conv_1234_xx43,        /* 32s -> 16h */
 
227
        &&conv_1234_xx34,        /* 32s -> 16s */
 
228
        &&conv_1234_x432,        /* 32s -> 24h */
 
229
        &&conv_1234_234x,        /* 32s -> 24s */
 
230
        &&conv_1234_4321,        /* 32s -> 32h */
 
231
        &&conv_1234_1234,        /* 32s -> 32s */
 
232
        &&conv_1234_xxxC,        /* 32s ^>  8h */
 
233
        &&conv_1234_xxxC,        /* 32s ^>  8s */
 
234
        &&conv_1234_xxC3,        /* 32s ^> 16h */
 
235
        &&conv_1234_xx3C,        /* 32s ^> 16s */
 
236
        &&conv_1234_xC32,        /* 32s ^> 24h */
 
237
        &&conv_1234_23Cx,        /* 32s ^> 24s */
 
238
        &&conv_1234_C321,        /* 32s ^> 32h */
 
239
        &&conv_1234_123C,        /* 32s ^> 32s */
 
240
};
 
241
#endif
 
242
 
 
243
#ifdef CONV_END
 
244
while(0) {
 
245
conv_xxx1_xxx1: as_u8(dst) = as_u8c(src); goto CONV_END;
 
246
conv_xxx1_xx10: as_u16(dst) = (u_int16_t)as_u8c(src) << 8; goto CONV_END;
 
247
conv_xxx1_xx01: as_u16(dst) = (u_int16_t)as_u8c(src); goto CONV_END;
 
248
conv_xxx1_x100: as_u32(dst) = sx24((u_int32_t)as_u8c(src) << 16); goto CONV_END;
 
249
conv_xxx1_001x: as_u32(dst) = sx24s((u_int32_t)as_u8c(src) << 8); goto CONV_END;
 
250
conv_xxx1_1000: as_u32(dst) = (u_int32_t)as_u8c(src) << 24; goto CONV_END;
 
251
conv_xxx1_0001: as_u32(dst) = (u_int32_t)as_u8c(src); goto CONV_END;
 
252
conv_xxx1_xxx9: as_u8(dst) = as_u8c(src) ^ 0x80; goto CONV_END;
 
253
conv_xxx1_xx90: as_u16(dst) = (u_int16_t)(as_u8c(src) ^ 0x80) << 8; goto CONV_END;
 
254
conv_xxx1_xx09: as_u16(dst) = (u_int16_t)(as_u8c(src) ^ 0x80); goto CONV_END;
 
255
conv_xxx1_x900: as_u32(dst) = sx24((u_int32_t)(as_u8c(src) ^ 0x80) << 16); goto CONV_END;
 
256
conv_xxx1_009x: as_u32(dst) = sx24s((u_int32_t)(as_u8c(src) ^ 0x80) << 8); goto CONV_END;
 
257
conv_xxx1_9000: as_u32(dst) = (u_int32_t)(as_u8c(src) ^ 0x80) << 24; goto CONV_END;
 
258
conv_xxx1_0009: as_u32(dst) = (u_int32_t)(as_u8c(src) ^ 0x80); goto CONV_END;
 
259
conv_xx12_xxx1: as_u8(dst) = as_u16c(src) >> 8; goto CONV_END;
 
260
conv_xx12_xx12: as_u16(dst) = as_u16c(src); goto CONV_END;
 
261
conv_xx12_xx21: as_u16(dst) = bswap_16(as_u16c(src)); goto CONV_END;
 
262
conv_xx12_x120: as_u32(dst) = sx24((u_int32_t)as_u16c(src) << 8); goto CONV_END;
 
263
conv_xx12_021x: as_u32(dst) = sx24s((u_int32_t)bswap_16(as_u16c(src)) << 8); goto CONV_END;
 
264
conv_xx12_1200: as_u32(dst) = (u_int32_t)as_u16c(src) << 16; goto CONV_END;
 
265
conv_xx12_0021: as_u32(dst) = (u_int32_t)bswap_16(as_u16c(src)); goto CONV_END;
 
266
conv_xx12_xxx9: as_u8(dst) = (as_u16c(src) >> 8) ^ 0x80; goto CONV_END;
 
267
conv_xx12_xx92: as_u16(dst) = as_u16c(src) ^ 0x8000; goto CONV_END;
 
268
conv_xx12_xx29: as_u16(dst) = bswap_16(as_u16c(src)) ^ 0x80; goto CONV_END;
 
269
conv_xx12_x920: as_u32(dst) = sx24((u_int32_t)(as_u16c(src) ^ 0x8000) << 8); goto CONV_END;
 
270
conv_xx12_029x: as_u32(dst) = sx24s((u_int32_t)(bswap_16(as_u16c(src)) ^ 0x80) << 8); goto CONV_END;
 
271
conv_xx12_9200: as_u32(dst) = (u_int32_t)(as_u16c(src) ^ 0x8000) << 16; goto CONV_END;
 
272
conv_xx12_0029: as_u32(dst) = (u_int32_t)(bswap_16(as_u16c(src)) ^ 0x80); goto CONV_END;
 
273
conv_xx12_xxx2: as_u8(dst) = as_u16c(src) & 0xff; goto CONV_END;
 
274
conv_xx12_x210: as_u32(dst) = sx24((u_int32_t)bswap_16(as_u16c(src)) << 8); goto CONV_END;
 
275
conv_xx12_012x: as_u32(dst) = sx24s((u_int32_t)as_u16c(src) << 8); goto CONV_END;
 
276
conv_xx12_2100: as_u32(dst) = (u_int32_t)bswap_16(as_u16c(src)) << 16; goto CONV_END;
 
277
conv_xx12_0012: as_u32(dst) = (u_int32_t)as_u16c(src); goto CONV_END; 
 
278
conv_xx12_xxxA: as_u8(dst) = (as_u16c(src) ^ 0x80) & 0xff; goto CONV_END;
 
279
conv_xx12_xxA1: as_u16(dst) = bswap_16(as_u16c(src) ^ 0x80); goto CONV_END;
 
280
conv_xx12_xx1A: as_u16(dst) = as_u16c(src) ^ 0x80; goto CONV_END;
 
281
conv_xx12_xA10: as_u32(dst) = sx24((u_int32_t)bswap_16(as_u16c(src) ^ 0x80) << 8); goto CONV_END;
 
282
conv_xx12_01Ax: as_u32(dst) = sx24s((u_int32_t)(as_u16c(src) ^ 0x80) << 8); goto CONV_END;
 
283
conv_xx12_A100: as_u32(dst) = (u_int32_t)bswap_16(as_u16c(src) ^ 0x80) << 16; goto CONV_END;
 
284
conv_xx12_001A: as_u32(dst) = (u_int32_t)(as_u16c(src) ^ 0x80); goto CONV_END;
 
285
conv_x123_xxx1: as_u8(dst) = as_u32c(src) >> 16; goto CONV_END;
 
286
conv_x123_xx12: as_u16(dst) = as_u32c(src) >> 8; goto CONV_END;
 
287
conv_x123_xx21: as_u16(dst) = bswap_16(as_u32c(src) >> 8); goto CONV_END;
 
288
conv_x123_x123: as_u32(dst) = sx24(as_u32c(src)); goto CONV_END;
 
289
conv_x123_321x: as_u32(dst) = sx24s(bswap_32(as_u32c(src))); goto CONV_END;
 
290
conv_x123_1230: as_u32(dst) = as_u32c(src) << 8; goto CONV_END;
 
291
conv_x123_0321: as_u32(dst) = bswap_32(as_u32c(src)) >> 8; goto CONV_END;
 
292
conv_x123_xxx9: as_u8(dst) = (as_u32c(src) >> 16) ^ 0x80; goto CONV_END;
 
293
conv_x123_xx92: as_u16(dst) = (as_u32c(src) >> 8) ^ 0x8000; goto CONV_END;
 
294
conv_x123_xx29: as_u16(dst) = bswap_16(as_u32c(src) >> 8) ^ 0x80; goto CONV_END;
 
295
conv_x123_x923: as_u32(dst) = sx24(as_u32c(src) ^ 0x800000); goto CONV_END;
 
296
conv_x123_329x: as_u32(dst) = sx24s(bswap_32(as_u32c(src)) ^ 0x8000); goto CONV_END;
 
297
conv_x123_9230: as_u32(dst) = (as_u32c(src) ^ 0x800000) << 8; goto CONV_END;
 
298
conv_x123_0329: as_u32(dst) = (bswap_32(as_u32c(src)) >> 8) ^ 0x80; goto CONV_END;
 
299
conv_123x_xxx3: as_u8(dst) = (as_u32c(src) >> 8) & 0xff; goto CONV_END;
 
300
conv_123x_xx32: as_u16(dst) = bswap_16(as_u32c(src) >> 8); goto CONV_END;
 
301
conv_123x_xx23: as_u16(dst) = (as_u32c(src) >> 8) & 0xffff; goto CONV_END;
 
302
conv_123x_x321: as_u32(dst) = sx24(bswap_32(as_u32c(src))); goto CONV_END;
 
303
conv_123x_123x: as_u32(dst) = sx24s(as_u32c(src)); goto CONV_END;
 
304
conv_123x_3210: as_u32(dst) = bswap_32(as_u32c(src)) << 8; goto CONV_END;
 
305
conv_123x_0123: as_u32(dst) = as_u32c(src) >> 8; goto CONV_END;
 
306
conv_123x_xxxB: as_u8(dst) = ((as_u32c(src) >> 8) & 0xff) ^ 0x80; goto CONV_END;
 
307
conv_123x_xxB2: as_u16(dst) = bswap_16((as_u32c(src) >> 8) ^ 0x80); goto CONV_END;
 
308
conv_123x_xx2B: as_u16(dst) = ((as_u32c(src) >> 8) & 0xffff) ^ 0x80; goto CONV_END;
 
309
conv_123x_xB21: as_u32(dst) = sx24(bswap_32(as_u32c(src)) ^ 0x800000); goto CONV_END;
 
310
conv_123x_12Bx: as_u32(dst) = sx24s(as_u32c(src) ^ 0x8000); goto CONV_END;
 
311
conv_123x_B210: as_u32(dst) = bswap_32(as_u32c(src) ^ 0x8000) << 8; goto CONV_END;
 
312
conv_123x_012B: as_u32(dst) = (as_u32c(src) >> 8) ^ 0x80; goto CONV_END;
 
313
conv_1234_xxx1: as_u8(dst) = as_u32c(src) >> 24; goto CONV_END;
 
314
conv_1234_xx12: as_u16(dst) = as_u32c(src) >> 16; goto CONV_END;
 
315
conv_1234_xx21: as_u16(dst) = bswap_16(as_u32c(src) >> 16); goto CONV_END;
 
316
conv_1234_x123: as_u32(dst) = sx24(as_u32c(src) >> 8); goto CONV_END;
 
317
conv_1234_321x: as_u32(dst) = sx24s(bswap_32(as_u32c(src)) << 8); goto CONV_END;
 
318
conv_1234_1234: as_u32(dst) = as_u32c(src); goto CONV_END;
 
319
conv_1234_4321: as_u32(dst) = bswap_32(as_u32c(src)); goto CONV_END;
 
320
conv_1234_xxx9: as_u8(dst) = (as_u32c(src) >> 24) ^ 0x80; goto CONV_END;
 
321
conv_1234_xx92: as_u16(dst) = (as_u32c(src) >> 16) ^ 0x8000; goto CONV_END;
 
322
conv_1234_xx29: as_u16(dst) = bswap_16(as_u32c(src) >> 16) ^ 0x80; goto CONV_END;
 
323
conv_1234_x923: as_u32(dst) = sx24((as_u32c(src) >> 8) ^ 0x800000); goto CONV_END;
 
324
conv_1234_329x: as_u32(dst) = sx24s((bswap_32(as_u32c(src)) ^ 0x80) << 8); goto CONV_END;
 
325
conv_1234_9234: as_u32(dst) = as_u32c(src) ^ 0x80000000; goto CONV_END;
 
326
conv_1234_4329: as_u32(dst) = bswap_32(as_u32c(src)) ^ 0x80; goto CONV_END;
 
327
conv_1234_xxx4: as_u8(dst) = as_u32c(src) & 0xff; goto CONV_END;
 
328
conv_1234_xx43: as_u16(dst) = bswap_16(as_u32c(src)); goto CONV_END;
 
329
conv_1234_xx34: as_u16(dst) = as_u32c(src) & 0xffff; goto CONV_END;
 
330
conv_1234_x432: as_u32(dst) = sx24(bswap_32(as_u32c(src)) >> 8); goto CONV_END;
 
331
conv_1234_234x: as_u32(dst) = sx24s(as_u32c(src) << 8); goto CONV_END;
 
332
conv_1234_xxxC: as_u8(dst) = (as_u32c(src) & 0xff) ^ 0x80; goto CONV_END;
 
333
conv_1234_xxC3: as_u16(dst) = bswap_16(as_u32c(src) ^ 0x80); goto CONV_END;
 
334
conv_1234_xx3C: as_u16(dst) = (as_u32c(src) & 0xffff) ^ 0x80; goto CONV_END;
 
335
conv_1234_xC32: as_u32(dst) = sx24((bswap_32(as_u32c(src)) >> 8) ^ 0x800000); goto CONV_END;
 
336
conv_1234_23Cx: as_u32(dst) = sx24s((as_u32c(src) ^ 0x80) << 8); goto CONV_END;
 
337
conv_1234_C321: as_u32(dst) = bswap_32(as_u32c(src) ^ 0x80); goto CONV_END;
 
338
conv_1234_123C: as_u32(dst) = as_u32c(src) ^ 0x80; goto CONV_END;
 
339
}
 
340
#endif
 
341
 
 
342
#ifdef GET16_LABELS
 
343
/* src_wid src_endswap sign_toggle */
 
344
static void *const get16_labels[4 * 2 * 2 + 4 * 3] = {
 
345
        &&get16_1_10,    /*  8h -> 16h */
 
346
        &&get16_1_90,    /*  8h ^> 16h */
 
347
        &&get16_1_10,    /*  8s -> 16h */
 
348
        &&get16_1_90,    /*  8s ^> 16h */
 
349
        &&get16_12_12,   /* 16h -> 16h */
 
350
        &&get16_12_92,   /* 16h ^> 16h */
 
351
        &&get16_12_21,   /* 16s -> 16h */
 
352
        &&get16_12_A1,   /* 16s ^> 16h */
 
353
        &&get16_0123_12, /* 24h -> 16h */
 
354
        &&get16_0123_92, /* 24h ^> 16h */
 
355
        &&get16_1230_32, /* 24s -> 16h */
 
356
        &&get16_1230_B2, /* 24s ^> 16h */
 
357
        &&get16_1234_12, /* 32h -> 16h */
 
358
        &&get16_1234_92, /* 32h ^> 16h */
 
359
        &&get16_1234_43, /* 32s -> 16h */
 
360
        &&get16_1234_C3, /* 32s ^> 16h */
 
361
        /* 3bytes format */
 
362
        &&get16_123_12,  /* 24h -> 16h */
 
363
        &&get16_123_92,  /* 24h ^> 16h */
 
364
        &&get16_123_32,  /* 24s -> 16h */
 
365
        &&get16_123_B2,  /* 24s ^> 16h */
 
366
        &&get16_123_12_20,       /* 20h -> 16h */
 
367
        &&get16_123_92_20,       /* 20h ^> 16h */
 
368
        &&get16_123_32_20,       /* 20s -> 16h */
 
369
        &&get16_123_B2_20,       /* 20s ^> 16h */
 
370
        &&get16_123_12_18,       /* 18h -> 16h */
 
371
        &&get16_123_92_18,       /* 18h ^> 16h */
 
372
        &&get16_123_32_18,       /* 18s -> 16h */
 
373
        &&get16_123_B2_18,       /* 18s ^> 16h */
 
374
};
 
375
#endif
 
376
 
 
377
#ifdef GET16_END
 
378
while(0) {
 
379
get16_1_10: sample = (u_int16_t)as_u8c(src) << 8; goto GET16_END;
 
380
get16_1_90: sample = (u_int16_t)(as_u8c(src) ^ 0x80) << 8; goto GET16_END;
 
381
get16_12_12: sample = as_u16c(src); goto GET16_END;
 
382
get16_12_92: sample = as_u16c(src) ^ 0x8000; goto GET16_END;
 
383
get16_12_21: sample = bswap_16(as_u16c(src)); goto GET16_END;
 
384
get16_12_A1: sample = bswap_16(as_u16c(src) ^ 0x80); goto GET16_END;
 
385
get16_0123_12: sample = as_u32c(src) >> 8; goto GET16_END;
 
386
get16_0123_92: sample = (as_u32c(src) >> 8) ^ 0x8000; goto GET16_END;
 
387
get16_1230_32: sample = bswap_16(as_u32c(src) >> 8); goto GET16_END;
 
388
get16_1230_B2: sample = bswap_16((as_u32c(src) >> 8) ^ 0x80); goto GET16_END;
 
389
get16_1234_12: sample = as_u32c(src) >> 16; goto GET16_END;
 
390
get16_1234_92: sample = (as_u32c(src) >> 16) ^ 0x8000; goto GET16_END;
 
391
get16_1234_43: sample = bswap_16(as_u32c(src)); goto GET16_END;
 
392
get16_1234_C3: sample = bswap_16(as_u32c(src) ^ 0x80); goto GET16_END;
 
393
get16_123_12: sample = _get_triple(src) >> 8; goto GET16_END;
 
394
get16_123_92: sample = (_get_triple(src) >> 8) ^ 0x8000; goto GET16_END;
 
395
get16_123_32: sample = _get_triple_s(src) >> 8; goto GET16_END;
 
396
get16_123_B2: sample = (_get_triple_s(src) >> 8) ^ 0x8000; goto GET16_END;
 
397
get16_123_12_20: sample = _get_triple(src) >> 4; goto GET16_END;
 
398
get16_123_92_20: sample = (_get_triple(src) >> 4) ^ 0x8000; goto GET16_END;
 
399
get16_123_32_20: sample = _get_triple_s(src) >> 4; goto GET16_END;
 
400
get16_123_B2_20: sample = (_get_triple_s(src) >> 4) ^ 0x8000; goto GET16_END;
 
401
get16_123_12_18: sample = _get_triple(src) >> 2; goto GET16_END;
 
402
get16_123_92_18: sample = (_get_triple(src) >> 2) ^ 0x8000; goto GET16_END;
 
403
get16_123_32_18: sample = _get_triple_s(src) >> 2; goto GET16_END;
 
404
get16_123_B2_18: sample = (_get_triple_s(src) >> 2) ^ 0x8000; goto GET16_END;
 
405
}
 
406
#endif
 
407
 
 
408
#ifdef PUT16_LABELS
 
409
/* dst_wid dst_endswap sign_toggle */
 
410
static void *const put16_labels[4 * 2 * 2] = {
 
411
        &&put16_12_1,            /* 16h ->  8h */
 
412
        &&put16_12_9,            /* 16h ^>  8h */
 
413
        &&put16_12_1,            /* 16h ->  8s */
 
414
        &&put16_12_9,            /* 16h ^>  8s */
 
415
        &&put16_12_12,           /* 16h -> 16h */
 
416
        &&put16_12_92,           /* 16h ^> 16h */
 
417
        &&put16_12_21,           /* 16h -> 16s */
 
418
        &&put16_12_29,           /* 16h ^> 16s */
 
419
        &&put16_12_0120,         /* 16h -> 24h */
 
420
        &&put16_12_0920,         /* 16h ^> 24h */
 
421
        &&put16_12_0210,         /* 16h -> 24s */
 
422
        &&put16_12_0290,         /* 16h ^> 24s */
 
423
        &&put16_12_1200,         /* 16h -> 32h */
 
424
        &&put16_12_9200,         /* 16h ^> 32h */
 
425
        &&put16_12_0021,         /* 16h -> 32s */
 
426
        &&put16_12_0029,         /* 16h ^> 32s */
 
427
};
 
428
#endif
 
429
 
 
430
#ifdef PUT16_END
 
431
while (0) {
 
432
put16_12_1: as_u8(dst) = sample >> 8; goto PUT16_END;
 
433
put16_12_9: as_u8(dst) = (sample >> 8) ^ 0x80; goto PUT16_END;
 
434
put16_12_12: as_u16(dst) = sample; goto PUT16_END;
 
435
put16_12_92: as_u16(dst) = sample ^ 0x8000; goto PUT16_END;
 
436
put16_12_21: as_u16(dst) = bswap_16(sample); goto PUT16_END;
 
437
put16_12_29: as_u16(dst) = bswap_16(sample) ^ 0x80; goto PUT16_END;
 
438
put16_12_0120: as_u32(dst) = sx24((u_int32_t)sample << 8); goto PUT16_END;
 
439
put16_12_0920: as_u32(dst) = sx24((u_int32_t)(sample ^ 0x8000) << 8); goto PUT16_END;
 
440
put16_12_0210: as_u32(dst) = sx24s((u_int32_t)bswap_16(sample) << 8); goto PUT16_END;
 
441
put16_12_0290: as_u32(dst) = sx24s((u_int32_t)(bswap_16(sample) ^ 0x80) << 8); goto PUT16_END;
 
442
put16_12_1200: as_u32(dst) = (u_int32_t)sample << 16; goto PUT16_END;
 
443
put16_12_9200: as_u32(dst) = (u_int32_t)(sample ^ 0x8000) << 16; goto PUT16_END;
 
444
put16_12_0021: as_u32(dst) = (u_int32_t)bswap_16(sample); goto PUT16_END;
 
445
put16_12_0029: as_u32(dst) = (u_int32_t)bswap_16(sample) ^ 0x80; goto PUT16_END;
 
446
}
 
447
#endif
 
448
 
 
449
#ifdef CONV24_LABELS
 
450
#define GET32_LABELS
 
451
#define PUT32_LABELS
 
452
#endif
 
453
 
 
454
#ifdef GET32_LABELS
 
455
/* src_wid src_endswap sign_toggle */
 
456
static void *const get32_labels[4 * 2 * 2 + 4 * 3] = {
 
457
        &&get32_1_1000,          /*  8h -> 32h */
 
458
        &&get32_1_9000,          /*  8h ^> 32h */
 
459
        &&get32_1_1000,          /*  8s -> 32h */
 
460
        &&get32_1_9000,          /*  8s ^> 32h */
 
461
        &&get32_12_1200,         /* 16h -> 32h */
 
462
        &&get32_12_9200,         /* 16h ^> 32h */
 
463
        &&get32_12_2100,         /* 16s -> 32h */
 
464
        &&get32_12_A100,         /* 16s ^> 32h */
 
465
        &&get32_0123_1230,       /* 24h -> 32h */
 
466
        &&get32_0123_9230,       /* 24h ^> 32h */
 
467
        &&get32_1230_3210,       /* 24s -> 32h */
 
468
        &&get32_1230_B210,       /* 24s ^> 32h */
 
469
        &&get32_1234_1234,       /* 32h -> 32h */
 
470
        &&get32_1234_9234,       /* 32h ^> 32h */
 
471
        &&get32_1234_4321,       /* 32s -> 32h */
 
472
        &&get32_1234_C321,       /* 32s ^> 32h */
 
473
        /* 3bytes format */
 
474
        &&get32_123_1230,        /* 24h -> 32h */
 
475
        &&get32_123_9230,        /* 24h ^> 32h */
 
476
        &&get32_123_3210,        /* 24s -> 32h */
 
477
        &&get32_123_B210,        /* 24s ^> 32h */
 
478
        &&get32_123_1230_20,     /* 20h -> 32h */
 
479
        &&get32_123_9230_20,     /* 20h ^> 32h */
 
480
        &&get32_123_3210_20,     /* 20s -> 32h */
 
481
        &&get32_123_B210_20,     /* 20s ^> 32h */
 
482
        &&get32_123_1230_18,     /* 18h -> 32h */
 
483
        &&get32_123_9230_18,     /* 18h ^> 32h */
 
484
        &&get32_123_3210_18,     /* 18s -> 32h */
 
485
        &&get32_123_B210_18,     /* 18s ^> 32h */
 
486
};
 
487
#endif
 
488
 
 
489
#ifdef CONV24_END
 
490
#define GET32_END __conv24_get
 
491
#endif
 
492
 
 
493
#ifdef GET32_END
 
494
while (0) {
 
495
get32_1_1000: sample = (u_int32_t)as_u8c(src) << 24; goto GET32_END;
 
496
get32_1_9000: sample = (u_int32_t)(as_u8c(src) ^ 0x80) << 24; goto GET32_END;
 
497
get32_12_1200: sample = (u_int32_t)as_u16c(src) << 16; goto GET32_END;
 
498
get32_12_9200: sample = (u_int32_t)(as_u16c(src) ^ 0x8000) << 16; goto GET32_END;
 
499
get32_12_2100: sample = (u_int32_t)bswap_16(as_u16c(src)) << 16; goto GET32_END;
 
500
get32_12_A100: sample = (u_int32_t)bswap_16(as_u16c(src) ^ 0x80) << 16; goto GET32_END;
 
501
get32_0123_1230: sample = as_u32c(src) << 8; goto GET32_END;
 
502
get32_0123_9230: sample = (as_u32c(src) << 8) ^ 0x80000000; goto GET32_END;
 
503
get32_1230_3210: sample = bswap_32(as_u32c(src) >> 8); goto GET32_END;
 
504
get32_1230_B210: sample = bswap_32((as_u32c(src) >> 8) ^ 0x80); goto GET32_END;
 
505
get32_1234_1234: sample = as_u32c(src); goto GET32_END;
 
506
get32_1234_9234: sample = as_u32c(src) ^ 0x80000000; goto GET32_END;
 
507
get32_1234_4321: sample = bswap_32(as_u32c(src)); goto GET32_END;
 
508
get32_1234_C321: sample = bswap_32(as_u32c(src) ^ 0x80); goto GET32_END;
 
509
get32_123_1230: sample = _get_triple(src) << 8; goto GET32_END;
 
510
get32_123_9230: sample = (_get_triple(src) << 8) ^ 0x80000000; goto GET32_END;
 
511
get32_123_3210: sample = _get_triple_s(src) << 8; goto GET32_END;
 
512
get32_123_B210: sample = (_get_triple_s(src) << 8) ^ 0x80000000; goto GET32_END;
 
513
get32_123_1230_20: sample = _get_triple(src) << 12; goto GET32_END;
 
514
get32_123_9230_20: sample = (_get_triple(src) << 12) ^ 0x80000000; goto GET32_END;
 
515
get32_123_3210_20: sample = _get_triple_s(src) << 12; goto GET32_END;
 
516
get32_123_B210_20: sample = (_get_triple_s(src) << 12) ^ 0x80000000; goto GET32_END;
 
517
get32_123_1230_18: sample = _get_triple(src) << 14; goto GET32_END;
 
518
get32_123_9230_18: sample = (_get_triple(src) << 14) ^ 0x80000000; goto GET32_END;
 
519
get32_123_3210_18: sample = _get_triple_s(src) << 14; goto GET32_END;
 
520
get32_123_B210_18: sample = (_get_triple_s(src) << 14) ^ 0x80000000; goto GET32_END;
 
521
}
 
522
#endif
 
523
 
 
524
#ifdef CONV24_END
 
525
__conv24_get: goto *put;
 
526
#define PUT32_END CONV24_END
 
527
#endif
 
528
 
 
529
#ifdef PUT32_LABELS
 
530
/* dst_wid dst_endswap sign_toggle */
 
531
static void *const put32_labels[4 * 2 * 2 + 4 * 3] = {
 
532
        &&put32_1234_1,          /* 32h ->  8h */
 
533
        &&put32_1234_9,          /* 32h ^>  8h */
 
534
        &&put32_1234_1,          /* 32h ->  8s */
 
535
        &&put32_1234_9,          /* 32h ^>  8s */
 
536
        &&put32_1234_12,         /* 32h -> 16h */
 
537
        &&put32_1234_92,         /* 32h ^> 16h */
 
538
        &&put32_1234_21,         /* 32h -> 16s */
 
539
        &&put32_1234_29,         /* 32h ^> 16s */
 
540
        &&put32_1234_0123,       /* 32h -> 24h */
 
541
        &&put32_1234_0923,       /* 32h ^> 24h */
 
542
        &&put32_1234_3210,       /* 32h -> 24s */
 
543
        &&put32_1234_3290,       /* 32h ^> 24s */
 
544
        &&put32_1234_1234,       /* 32h -> 32h */
 
545
        &&put32_1234_9234,       /* 32h ^> 32h */
 
546
        &&put32_1234_4321,       /* 32h -> 32s */
 
547
        &&put32_1234_4329,       /* 32h ^> 32s */
 
548
        /* 3bytes format */
 
549
        &&put32_1234_123,        /* 32h -> 24h */
 
550
        &&put32_1234_923,        /* 32h ^> 24h */
 
551
        &&put32_1234_321,        /* 32h -> 24s */
 
552
        &&put32_1234_329,        /* 32h ^> 24s */
 
553
        &&put32_1234_123_20,     /* 32h -> 24h */
 
554
        &&put32_1234_923_20,     /* 32h ^> 24h */
 
555
        &&put32_1234_321_20,     /* 32h -> 24s */
 
556
        &&put32_1234_329_20,     /* 32h ^> 24s */
 
557
        &&put32_1234_123_18,     /* 32h -> 24h */
 
558
        &&put32_1234_923_18,     /* 32h ^> 24h */
 
559
        &&put32_1234_321_18,     /* 32h -> 24s */
 
560
        &&put32_1234_329_18,     /* 32h ^> 24s */
 
561
};
 
562
#endif
 
563
 
 
564
#ifdef CONV24_LABELS
 
565
#undef GET32_LABELS
 
566
#undef PUT32_LABELS
 
567
#endif
 
568
 
 
569
#ifdef PUT32_END
 
570
while (0) {
 
571
put32_1234_1: as_u8(dst) = sample >> 24; goto PUT32_END;
 
572
put32_1234_9: as_u8(dst) = (sample >> 24) ^ 0x80; goto PUT32_END;
 
573
put32_1234_12: as_u16(dst) = sample >> 16; goto PUT32_END;
 
574
put32_1234_92: as_u16(dst) = (sample >> 16) ^ 0x8000; goto PUT32_END;
 
575
put32_1234_21: as_u16(dst) = bswap_16(sample >> 16); goto PUT32_END;
 
576
put32_1234_29: as_u16(dst) = bswap_16(sample >> 16) ^ 0x80; goto PUT32_END;
 
577
put32_1234_0123: as_u32(dst) = sx24(sample >> 8); goto PUT32_END;
 
578
put32_1234_0923: as_u32(dst) = sx24((sample >> 8) ^ 0x800000); goto PUT32_END;
 
579
put32_1234_3210: as_u32(dst) = sx24s(bswap_32(sample) << 8); goto PUT32_END;
 
580
put32_1234_3290: as_u32(dst) = sx24s((bswap_32(sample) ^ 0x80) << 8); goto PUT32_END;
 
581
put32_1234_1234: as_u32(dst) = sample; goto PUT32_END;
 
582
put32_1234_9234: as_u32(dst) = sample ^ 0x80000000; goto PUT32_END;
 
583
put32_1234_4321: as_u32(dst) = bswap_32(sample); goto PUT32_END;
 
584
put32_1234_4329: as_u32(dst) = bswap_32(sample) ^ 0x80; goto PUT32_END;
 
585
put32_1234_123: _put_triple(dst, sample >> 8); goto PUT32_END;
 
586
put32_1234_923: _put_triple(dst, (sample ^ 0x80000000) >> 8); goto PUT32_END;
 
587
put32_1234_321: _put_triple_s(dst, sample >> 8); goto PUT32_END;
 
588
put32_1234_329: _put_triple_s(dst, (sample ^ 0x80000000) >> 8); goto PUT32_END;
 
589
put32_1234_123_20: _put_triple(dst, sample >> 12); goto PUT32_END;
 
590
put32_1234_923_20: _put_triple(dst, (sample ^ 0x80000000) >> 12); goto PUT32_END;
 
591
put32_1234_321_20: _put_triple_s(dst, sample >> 12); goto PUT32_END;
 
592
put32_1234_329_20: _put_triple_s(dst, (sample ^ 0x80000000) >> 12); goto PUT32_END;
 
593
put32_1234_123_18: _put_triple(dst, sample >> 14); goto PUT32_END;
 
594
put32_1234_923_18: _put_triple(dst, (sample ^ 0x80000000) >> 14); goto PUT32_END;
 
595
put32_1234_321_18: _put_triple_s(dst, sample >> 14); goto PUT32_END;
 
596
put32_1234_329_18: _put_triple_s(dst, (sample ^ 0x80000000) >> 14); goto PUT32_END;
 
597
}
 
598
#endif
 
599
 
 
600
#ifdef CONV24_END
 
601
#undef GET32_END
 
602
#undef PUT32_END
 
603
#endif
 
604
 
 
605
#ifdef GETU_LABELS
 
606
/* width endswap sign_toggle */
 
607
static void *const getu_labels[4 * 2 * 2] = {
 
608
        &&getu_1_1,             /*  8h ->  8h */
 
609
        &&getu_1_9,             /*  8h ^>  8h */
 
610
        &&getu_1_1,             /*  8s ->  8h */
 
611
        &&getu_1_9,             /*  8s ^>  8h */
 
612
        &&getu_12_12,           /* 16h -> 16h */
 
613
        &&getu_12_92,           /* 16h ^> 16h */
 
614
        &&getu_12_21,           /* 16s -> 16h */
 
615
        &&getu_12_A1,           /* 16s ^> 16h */
 
616
        &&getu_0123_0123,       /* 24h -> 24h */
 
617
        &&getu_0123_0923,       /* 24h ^> 24h */
 
618
        &&getu_1230_0321,       /* 24s -> 24h */
 
619
        &&getu_1230_0B21,       /* 24s ^> 24h */
 
620
        &&getu_1234_1234,       /* 32h -> 32h */
 
621
        &&getu_1234_9234,       /* 32h ^> 32h */
 
622
        &&getu_1234_4321,       /* 32s -> 32h */
 
623
        &&getu_1234_C321,       /* 32s ^> 32h */
 
624
};
 
625
#endif
 
626
 
 
627
#ifdef GETU_END
 
628
while (0) {
 
629
getu_1_1: sample = as_u8c(src); goto GETU_END;
 
630
getu_1_9: sample = as_u8c(src) ^ 0x80; goto GETU_END;
 
631
getu_12_12: sample = as_u16c(src); goto GETU_END;
 
632
getu_12_92: sample = as_u16c(src) ^ 0x8000; goto GETU_END;
 
633
getu_12_21: sample = bswap_16(as_u16c(src)); goto GETU_END;
 
634
getu_12_A1: sample = bswap_16(as_u16c(src) ^ 0x80); goto GETU_END;
 
635
getu_0123_0123: sample = sx24(as_u32c(src)); goto GETU_END;
 
636
getu_0123_0923: sample = sx24(as_u32c(src) ^ 0x800000); goto GETU_END;
 
637
getu_1230_0321: sample = sx24(bswap_32(as_u32c(src))); goto GETU_END;
 
638
getu_1230_0B21: sample = sx24(bswap_32(as_u32c(src) ^ 0x8000)); goto GETU_END;
 
639
getu_1234_1234: sample = as_u32c(src); goto GETU_END;
 
640
getu_1234_9234: sample = as_u32c(src) ^ 0x80000000; goto GETU_END;
 
641
getu_1234_4321: sample = bswap_32(as_u32c(src)); goto GETU_END;
 
642
getu_1234_C321: sample = bswap_32(as_u32c(src) ^ 0x80); goto GETU_END;
 
643
}
 
644
#endif
 
645
 
 
646
#ifdef GETS_LABELS
 
647
/* width endswap sign_toggle */
 
648
static void *const gets_labels[4 * 2 * 2] = {
 
649
        &&gets_1_1,             /*  8h ->  8h */
 
650
        &&gets_1_9,             /*  8h ^>  8h */
 
651
        &&gets_1_1,             /*  8s ->  8h */
 
652
        &&gets_1_9,             /*  8s ^>  8h */
 
653
        &&gets_12_12,           /* 16h -> 16h */
 
654
        &&gets_12_92,           /* 16h ^> 16h */
 
655
        &&gets_12_21,           /* 16s -> 16h */
 
656
        &&gets_12_A1,           /* 16s ^> 16h */
 
657
        &&gets_0123_0123,       /* 24h -> 24h */
 
658
        &&gets_0123_0923,       /* 24h ^> 24h */
 
659
        &&gets_1230_0321,       /* 24s -> 24h */
 
660
        &&gets_1230_0B21,       /* 24s ^> 24h */
 
661
        &&gets_1234_1234,       /* 32h -> 32h */
 
662
        &&gets_1234_9234,       /* 32h ^> 32h */
 
663
        &&gets_1234_4321,       /* 32s -> 32h */
 
664
        &&gets_1234_C321,       /* 32s ^> 32h */
 
665
};
 
666
#endif
 
667
 
 
668
#ifdef GETS_END
 
669
while (0) {
 
670
gets_1_1: sample = as_s8c(src); goto GETS_END;
 
671
gets_1_9: sample = (int8_t)(as_s8c(src) ^ 0x80); goto GETS_END;
 
672
gets_12_12: sample = as_s16c(src); goto GETS_END;
 
673
gets_12_92: sample = (int16_t)(as_s16c(src) ^ 0x8000); goto GETS_END;
 
674
gets_12_21: sample = (int16_t)bswap_16(as_s16c(src)); goto GETS_END;
 
675
gets_12_A1: sample = (int16_t)bswap_16(as_s16c(src) ^ 0x80); goto GETS_END;
 
676
gets_0123_0123: sample = sx24((int32_t)(as_s32c(src) << 8) >> 8); goto GETS_END;
 
677
gets_0123_0923: sample = sx24((int32_t)((as_s32c(src) ^ 0x800000) << 8) >> 8); goto GETS_END;
 
678
gets_1230_0321: sample = sx24((int32_t)(bswap_32(as_s32c(src)) << 8) >> 8); goto GETS_END;
 
679
gets_1230_0B21: sample = sx24((int32_t)(bswap_32(as_s32c(src) ^ 0x8000) << 8) >> 8); goto GETS_END;
 
680
gets_1234_1234: sample = as_s32c(src); goto GETS_END;
 
681
gets_1234_9234: sample = (int32_t)(as_s32c(src) ^ 0x80000000); goto GETS_END;
 
682
gets_1234_4321: sample = (int32_t)bswap_32(as_s32c(src)); goto GETS_END;
 
683
gets_1234_C321: sample = (int32_t)bswap_32(as_s32c(src) ^ 0x80); goto GETS_END;
 
684
}
 
685
#endif
 
686
 
 
687
#ifdef PUT_LABELS
 
688
/* width endswap sign_toggle */
 
689
static void *const put_labels[4 * 2 * 2] = {
 
690
        &&put_1_1,              /*  8h ->  8h */
 
691
        &&put_1_9,              /*  8h ^>  8h */
 
692
        &&put_1_1,              /*  8h ->  8s */
 
693
        &&put_1_9,              /*  8h ^>  8s */
 
694
        &&put_12_12,            /* 16h -> 16h */
 
695
        &&put_12_92,            /* 16h ^> 16h */
 
696
        &&put_12_21,            /* 16h -> 16s */
 
697
        &&put_12_29,            /* 16h ^> 16s */
 
698
        &&put_0123_0123,        /* 24h -> 24h */
 
699
        &&put_0123_0923,        /* 24h ^> 24h */
 
700
        &&put_0123_3210,        /* 24h -> 24s */
 
701
        &&put_0123_3290,        /* 24h ^> 24s */
 
702
        &&put_1234_1234,        /* 32h -> 32h */
 
703
        &&put_1234_9234,        /* 32h ^> 32h */
 
704
        &&put_1234_4321,        /* 32h -> 32s */
 
705
        &&put_1234_4329,        /* 32h ^> 32s */
 
706
};
 
707
#endif
 
708
 
 
709
#ifdef PUT_END
 
710
put_1_1: as_s8(dst) = sample; goto PUT_END;
 
711
put_1_9: as_u8(dst) = sample ^ 0x80; goto PUT_END;
 
712
put_12_12: as_s16(dst) = sample; goto PUT_END;
 
713
put_12_92: as_u16(dst) = sample ^ 0x8000; goto PUT_END;
 
714
put_12_21: as_s16(dst) = bswap_16(sample); goto PUT_END;
 
715
put_12_29: as_u16(dst) = bswap_16(sample) ^ 0x80; goto PUT_END;
 
716
/* this always writes the unused byte in 24-bit formats as 0x00 */
 
717
put_0123_0123: as_s32(dst) = sx24(sample & 0x00ffffff); goto PUT_END;
 
718
put_0123_0923: as_u32(dst) = sx24((sample & 0x00ffffff) ^ 0x800000); goto PUT_END;
 
719
put_0123_3210: as_s32(dst) = sx24s(bswap_32(sample) & 0xffffff00); goto PUT_END;
 
720
put_0123_3290: as_u32(dst) = sx24s((bswap_32(sample) & 0xffffff00) ^ 0x8000); goto PUT_END;
 
721
put_1234_1234: as_s32(dst) = sample; goto PUT_END;
 
722
put_1234_9234: as_u32(dst) = sample ^ 0x80000000; goto PUT_END;
 
723
put_1234_4321: as_s32(dst) = bswap_32(sample); goto PUT_END;
 
724
put_1234_4329: as_u32(dst) = bswap_32(sample) ^ 0x80; goto PUT_END;
 
725
#endif
 
726
 
 
727
#ifdef PUT32F_LABELS
 
728
/* type (0 = float, 1 = float64), endswap */
 
729
static void *const put32float_labels[2 * 2] = {
 
730
        &&put32f_1234_1234F,    /* 32h -> (float)h */
 
731
        &&put32f_1234_4321F,    /* 32h -> (float)s */
 
732
        &&put32f_1234_1234D,    /* 32h -> (float64)h */
 
733
        &&put32f_1234_4321D,    /* 32h -> (float64)s */
 
734
};
 
735
#endif
 
736
 
 
737
#ifdef PUT32F_END
 
738
put32f_1234_1234F: as_float(dst) = (float_t)((int32_t)sample) / (float_t)0x80000000UL; goto PUT32F_END;
 
739
put32f_1234_4321F: tmp_float.f = (float_t)((int32_t)sample) / (float_t)0x80000000UL;
 
740
                   as_u32(dst) = bswap_32(tmp_float.i); goto PUT32F_END;
 
741
put32f_1234_1234D: as_double(dst) = (double_t)((int32_t)sample) / (double_t)0x80000000UL; goto PUT32F_END;
 
742
put32f_1234_4321D: tmp_double.d = (double_t)((int32_t)sample) / (double_t)0x80000000UL;
 
743
                   as_u64(dst) = bswap_64(tmp_double.l); goto PUT32F_END;
 
744
#endif
 
745
 
 
746
#ifdef GET32F_LABELS
 
747
/* type (0 = float, 1 = float64), endswap */
 
748
static void *const get32float_labels[2 * 2] = {
 
749
        &&get32f_1234F_1234,    /* (float)h -> 32h */
 
750
        &&get32f_4321F_1234,    /* (float)s -> 32h */
 
751
        &&get32f_1234D_1234,    /* (float64)h -> 32h */
 
752
        &&get32f_4321D_1234,    /* (float64)s -> 32h */
 
753
};
 
754
#endif
 
755
 
 
756
#ifdef GET32F_END
 
757
get32f_1234F_1234: tmp_float.f = as_floatc(src);
 
758
                   if (tmp_float.f >= 1.0)
 
759
                        sample = 0x7fffffff;
 
760
                   else if (tmp_float.f <= -1.0)
 
761
                        sample = 0x80000000;
 
762
                   else
 
763
                        sample = (int32_t)(tmp_float.f * (float_t)0x80000000UL);
 
764
                   goto GET32F_END;
 
765
get32f_4321F_1234: tmp_float.i = bswap_32(as_u32c(src));
 
766
                   if (tmp_float.f >= 1.0)
 
767
                        sample = 0x7fffffff;
 
768
                   else if (tmp_float.f <= -1.0)
 
769
                        sample = 0x80000000;
 
770
                   else
 
771
                        sample = (int32_t)(tmp_float.f * (float_t)0x80000000UL);
 
772
                   goto GET32F_END;
 
773
get32f_1234D_1234: tmp_double.d = as_doublec(src);
 
774
                   if (tmp_double.d >= 1.0)
 
775
                        sample = 0x7fffffff;
 
776
                   else if (tmp_double.d <= -1.0)
 
777
                        sample = 0x80000000;
 
778
                   else
 
779
                        sample = (int32_t)(tmp_double.d * (double_t)0x80000000UL);
 
780
                   goto GET32F_END;
 
781
get32f_4321D_1234: tmp_double.l = bswap_64(as_u64c(src));
 
782
                   if (tmp_double.d >= 1.0)
 
783
                        sample = 0x7fffffff;
 
784
                   else if (tmp_double.d <= -1.0)
 
785
                        sample = 0x80000000;
 
786
                   else
 
787
                        sample = (int32_t)(tmp_double.d * (double_t)0x80000000UL);
 
788
                   goto GET32F_END;
 
789
#endif
 
790
 
 
791
#ifdef NORMS_LABELS
 
792
static inline void _norms(const void *src, void *dst,
 
793
                          int src_wid,
 
794
                          int dst_sign, int dst_wid, int dst_end)
 
795
{
 
796
        int32_t s;
 
797
        switch (src_wid) {
 
798
        case 8:
 
799
                s = *(int32_t*)src;
 
800
                if (s >= 0x7f)
 
801
                        goto _max;
 
802
                else if (s <= -0x80)
 
803
                        goto _min;
 
804
                break;
 
805
        case 16:
 
806
                s = *(int32_t*)src;
 
807
                if (s >= 0x7fff)
 
808
                        goto _max;
 
809
                else if (s <= -0x8000)
 
810
                        goto _min;
 
811
                break;
 
812
        case 24:
 
813
                s = *(int32_t*)src;
 
814
                if (s >= 0x7fffff)
 
815
                        goto _max;
 
816
                else if (s <= -0x800000)
 
817
                        goto _min;
 
818
                break;
 
819
        case 32:
 
820
        {
 
821
                int64_t s64;
 
822
                s64 = *(int64_t*)src;
 
823
                if (s64 >= 0x7fffffff)
 
824
                        goto _max;
 
825
                else if (s64 <= -0x80000000)
 
826
                        goto _min;
 
827
                s = s64;
 
828
                break;
 
829
        }
 
830
        default:
 
831
                assert(0);
 
832
                return;
 
833
        }
 
834
        if (src_wid < dst_wid) {
 
835
                unsigned int bits = dst_wid - src_wid;
 
836
                s *= 1 << bits;
 
837
        } else if (src_wid > dst_wid) {
 
838
                unsigned int bits = src_wid - dst_wid;
 
839
                s = (s + (1 << (bits - 1))) / (1 << bits);
 
840
        }
 
841
        if (!dst_sign)
 
842
                s += (1U << (dst_wid - 1));
 
843
        switch (dst_wid) {
 
844
        case 8:
 
845
                *(u_int8_t*)dst = s;
 
846
                break;
 
847
        case 16:
 
848
                if (dst_end)
 
849
                        s = bswap_16(s);
 
850
                *(u_int16_t*)dst = s;
 
851
                break;
 
852
        case 24:
 
853
        case 32:
 
854
                if (dst_end)
 
855
                        s = bswap_32(s);
 
856
                *(u_int32_t*)dst = s;
 
857
                break;
 
858
        }
 
859
        return;
 
860
 
 
861
 _min:
 
862
        switch (dst_wid) {
 
863
        case 8:
 
864
                if (dst_sign)
 
865
                        *(u_int8_t*)dst = 0x80;
 
866
                else
 
867
                        *(u_int8_t*)dst = 0;
 
868
                break;
 
869
        case 16:
 
870
                if (dst_sign)
 
871
                        *(u_int16_t*)dst = dst_end ? 0x0080 : 0x8000;
 
872
                else
 
873
                        *(u_int16_t*)dst = 0;
 
874
                break;
 
875
        case 24:
 
876
                if (dst_sign)
 
877
                        *(u_int32_t*)dst = dst_end ? 0x00008000 : 0x00800000;
 
878
                else
 
879
                        *(u_int32_t*)dst = 0;
 
880
                break;
 
881
        case 32:
 
882
                if (dst_sign)
 
883
                        *(u_int32_t*)dst = dst_end ? 0x00000080 : 0x80000000;
 
884
                else
 
885
                        *(u_int32_t*)dst = 0;
 
886
                break;
 
887
        default:
 
888
                assert(0);
 
889
                break;
 
890
        }
 
891
        return;
 
892
 
 
893
 _max:
 
894
        switch (dst_wid) {
 
895
        case 8:
 
896
                if (dst_sign)
 
897
                        *(u_int8_t*)dst = 0x7f;
 
898
                else
 
899
                        *(u_int8_t*)dst = 0xff;
 
900
                break;
 
901
        case 16:
 
902
                if (dst_sign)
 
903
                        *(u_int16_t*)dst = dst_end ? 0xff7f : 0x7fff;
 
904
                else
 
905
                        *(u_int16_t*)dst = 0;
 
906
                break;
 
907
        case 24:
 
908
                if (dst_sign)
 
909
                        *(u_int32_t*)dst = dst_end ? 0xffff7f00 : 0x007fffff;
 
910
                else
 
911
                        *(u_int32_t*)dst = 0;
 
912
                break;
 
913
        case 32:
 
914
                if (dst_sign)
 
915
                        *(u_int32_t*)dst = dst_end ? 0xffffff7f : 0x7fffffff;
 
916
                else
 
917
                        *(u_int32_t*)dst = 0;
 
918
                break;
 
919
        default:
 
920
                assert(0);
 
921
                break;
 
922
        }
 
923
        return;
 
924
}
 
925
 
 
926
/* src_wid dst_sign dst_wid dst_end */
 
927
static void *const norms_labels[4 * 2 * 4 * 2] = {
 
928
        &&norms_8_u8,           /*  s8 -> u8 */
 
929
        &&norms_8_u8,           /*  s8 -> u8 */
 
930
        &&norms_8_u16h,         /*  s8 -> u16h */
 
931
        &&norms_8_u16s,         /*  s8 -> u16s */
 
932
        &&norms_8_u24h,         /*  s8 -> u24h */
 
933
        &&norms_8_u24s,         /*  s8 -> u24s */
 
934
        &&norms_8_u32h,         /*  s8 -> u32h */
 
935
        &&norms_8_u32s,         /*  s8 -> u32s */
 
936
        &&norms_8_s8,           /*  s8 -> s8 */
 
937
        &&norms_8_s8,           /*  s8 -> s8 */
 
938
        &&norms_8_s16h,         /*  s8 -> s16h */
 
939
        &&norms_8_s16s,         /*  s8 -> s16s */
 
940
        &&norms_8_s24h,         /*  s8 -> s24h */
 
941
        &&norms_8_s24s,         /*  s8 -> s24s */
 
942
        &&norms_8_s32h,         /*  s8 -> s32h */
 
943
        &&norms_8_s32s,         /*  s8 -> s32s */
 
944
        &&norms_16_u8,          /* s16 -> u8 */
 
945
        &&norms_16_u8,          /* s16 -> u8 */
 
946
        &&norms_16_u16h,        /* s16 -> u16h */
 
947
        &&norms_16_u16s,        /* s16 -> u16s */
 
948
        &&norms_16_u24h,        /* s16 -> u24h */
 
949
        &&norms_16_u24s,        /* s16 -> u24s */
 
950
        &&norms_16_u32h,        /* s16 -> u32h */
 
951
        &&norms_16_u32s,        /* s16 -> u32s */
 
952
        &&norms_16_s8,          /* s16 -> s8 h*/
 
953
        &&norms_16_s8,          /* s16 -> s8 */
 
954
        &&norms_16_s16h,        /* s16 -> s16h */
 
955
        &&norms_16_s16s,        /* s16 -> s16s */
 
956
        &&norms_16_s24h,        /* s16 -> s24h */
 
957
        &&norms_16_s24s,        /* s16 -> s24s */
 
958
        &&norms_16_s32h,        /* s16 -> s32h */
 
959
        &&norms_16_s32s,        /* s16 -> s32s */
 
960
        &&norms_24_u8,          /* s24 -> u8 */
 
961
        &&norms_24_u8,          /* s24 -> u8 */
 
962
        &&norms_24_u16h,        /* s24 -> u16h */
 
963
        &&norms_24_u16s,        /* s24 -> u16s */
 
964
        &&norms_24_u24h,        /* s24 -> u24h */
 
965
        &&norms_24_u24s,        /* s24 -> u24s */
 
966
        &&norms_24_u32h,        /* s24 -> u32h */
 
967
        &&norms_24_u32s,        /* s24 -> u32s */
 
968
        &&norms_24_s8,          /* s24 -> s8 */
 
969
        &&norms_24_s8,          /* s24 -> s8 */
 
970
        &&norms_24_s16h,        /* s24 -> s16h */
 
971
        &&norms_24_s16s,        /* s24 -> s16s */
 
972
        &&norms_24_s24h,        /* s24 -> s24h */
 
973
        &&norms_24_s24s,        /* s24 -> s24s */
 
974
        &&norms_24_s32h,        /* s24 -> s32h */
 
975
        &&norms_24_s32s,        /* s24 -> s32s */
 
976
        &&norms_32_u8,          /* s32 -> u8 */
 
977
        &&norms_32_u8,          /* s32 -> u8 */
 
978
        &&norms_32_u16h,        /* s32 -> u16h */
 
979
        &&norms_32_u16s,        /* s32 -> u16s */
 
980
        &&norms_32_u24h,        /* s32 -> u24h */
 
981
        &&norms_32_u24s,        /* s32 -> u24s */
 
982
        &&norms_32_u32h,        /* s32 -> u32h */
 
983
        &&norms_32_u32s,        /* s32 -> u32s */
 
984
        &&norms_32_s8,          /* s32 -> s8 */
 
985
        &&norms_32_s8,          /* s32 -> s8 */
 
986
        &&norms_32_s16h,        /* s32 -> s16h */
 
987
        &&norms_32_s16s,        /* s32 -> s16s */
 
988
        &&norms_32_s24h,        /* s32 -> s24h */
 
989
        &&norms_32_s24s,        /* s32 -> s24s */
 
990
        &&norms_32_s32h,        /* s32 -> s32h */
 
991
        &&norms_32_s32s,        /* s32 -> s32s */
 
992
};
 
993
#endif
 
994
 
 
995
#ifdef NORMS_END
 
996
norms_8_u8:     _norms(src, dst,  8, 0,  8, 0); goto NORMS_END;
 
997
norms_8_u16h:   _norms(src, dst,  8, 0,  16, 0); goto NORMS_END;
 
998
norms_8_u16s:   _norms(src, dst,  8, 0,  16, 1); goto NORMS_END;
 
999
norms_8_u24h:   _norms(src, dst,  8, 0,  24, 0); goto NORMS_END;
 
1000
norms_8_u24s:   _norms(src, dst,  8, 0,  24, 1); goto NORMS_END;
 
1001
norms_8_u32h:   _norms(src, dst,  8, 0,  32, 0); goto NORMS_END;
 
1002
norms_8_u32s:   _norms(src, dst,  8, 0,  32, 1); goto NORMS_END;
 
1003
norms_8_s8:     _norms(src, dst,  8, 1,  8, 0); goto NORMS_END;
 
1004
norms_8_s16h:   _norms(src, dst,  8, 1,  16, 0); goto NORMS_END;
 
1005
norms_8_s16s:   _norms(src, dst,  8, 1,  16, 1); goto NORMS_END;
 
1006
norms_8_s24h:   _norms(src, dst,  8, 1,  24, 0); goto NORMS_END;
 
1007
norms_8_s24s:   _norms(src, dst,  8, 1,  24, 1); goto NORMS_END;
 
1008
norms_8_s32h:   _norms(src, dst,  8, 1,  32, 0); goto NORMS_END;
 
1009
norms_8_s32s:   _norms(src, dst,  8, 1,  32, 1); goto NORMS_END;
 
1010
norms_16_u8:    _norms(src, dst, 16, 0,  8, 0); goto NORMS_END;
 
1011
norms_16_u16h:  _norms(src, dst, 16, 0,  16, 0); goto NORMS_END;
 
1012
norms_16_u16s:  _norms(src, dst, 16, 0,  16, 1); goto NORMS_END;
 
1013
norms_16_u24h:  _norms(src, dst, 16, 0,  24, 0); goto NORMS_END;
 
1014
norms_16_u24s:  _norms(src, dst, 16, 0,  24, 1); goto NORMS_END;
 
1015
norms_16_u32h:  _norms(src, dst, 16, 0,  32, 0); goto NORMS_END;
 
1016
norms_16_u32s:  _norms(src, dst, 16, 0,  32, 1); goto NORMS_END;
 
1017
norms_16_s8:    _norms(src, dst, 16, 1,  8, 0); goto NORMS_END;
 
1018
norms_16_s16h:  _norms(src, dst, 16, 1,  16, 0); goto NORMS_END;
 
1019
norms_16_s16s:  _norms(src, dst, 16, 1,  16, 1); goto NORMS_END;
 
1020
norms_16_s24h:  _norms(src, dst, 16, 1,  24, 0); goto NORMS_END;
 
1021
norms_16_s24s:  _norms(src, dst, 16, 1,  24, 1); goto NORMS_END;
 
1022
norms_16_s32h:  _norms(src, dst, 16, 1,  32, 0); goto NORMS_END;
 
1023
norms_16_s32s:  _norms(src, dst, 16, 1,  32, 1); goto NORMS_END;
 
1024
norms_24_u8:    _norms(src, dst, 24, 0,  8, 0); goto NORMS_END;
 
1025
norms_24_u16h:  _norms(src, dst, 24, 0,  16, 0); goto NORMS_END;
 
1026
norms_24_u16s:  _norms(src, dst, 24, 0,  16, 1); goto NORMS_END;
 
1027
norms_24_u24h:  _norms(src, dst, 24, 0,  24, 0); goto NORMS_END;
 
1028
norms_24_u24s:  _norms(src, dst, 24, 0,  24, 1); goto NORMS_END;
 
1029
norms_24_u32h:  _norms(src, dst, 24, 0,  32, 0); goto NORMS_END;
 
1030
norms_24_u32s:  _norms(src, dst, 24, 0,  32, 1); goto NORMS_END;
 
1031
norms_24_s8:    _norms(src, dst, 24, 1,  8, 0); goto NORMS_END;
 
1032
norms_24_s16h:  _norms(src, dst, 24, 1,  16, 0); goto NORMS_END;
 
1033
norms_24_s16s:  _norms(src, dst, 24, 1,  16, 1); goto NORMS_END;
 
1034
norms_24_s24h:  _norms(src, dst, 24, 1,  24, 0); goto NORMS_END;
 
1035
norms_24_s24s:  _norms(src, dst, 24, 1,  24, 1); goto NORMS_END;
 
1036
norms_24_s32h:  _norms(src, dst, 24, 1,  32, 0); goto NORMS_END;
 
1037
norms_24_s32s:  _norms(src, dst, 24, 1,  32, 1); goto NORMS_END;
 
1038
norms_32_u8:    _norms(src, dst, 32, 0,  8, 0); goto NORMS_END;
 
1039
norms_32_u16h:  _norms(src, dst, 32, 0,  16, 0); goto NORMS_END;
 
1040
norms_32_u16s:  _norms(src, dst, 32, 0,  16, 1); goto NORMS_END;
 
1041
norms_32_u24h:  _norms(src, dst, 32, 0,  24, 0); goto NORMS_END;
 
1042
norms_32_u24s:  _norms(src, dst, 32, 0,  24, 1); goto NORMS_END;
 
1043
norms_32_u32h:  _norms(src, dst, 32, 0,  32, 0); goto NORMS_END;
 
1044
norms_32_u32s:  _norms(src, dst, 32, 0,  32, 1); goto NORMS_END;
 
1045
norms_32_s8:    _norms(src, dst, 32, 1,  8, 0); goto NORMS_END;
 
1046
norms_32_s16h:  _norms(src, dst, 32, 1,  16, 0); goto NORMS_END;
 
1047
norms_32_s16s:  _norms(src, dst, 32, 1,  16, 1); goto NORMS_END;
 
1048
norms_32_s24h:  _norms(src, dst, 32, 1,  24, 0); goto NORMS_END;
 
1049
norms_32_s24s:  _norms(src, dst, 32, 1,  24, 1); goto NORMS_END;
 
1050
norms_32_s32h:  _norms(src, dst, 32, 1,  32, 0); goto NORMS_END;
 
1051
norms_32_s32s:  _norms(src, dst, 32, 1,  32, 1); goto NORMS_END;
 
1052
#endif
 
1053
 
 
1054
 
 
1055
#undef as_u8
 
1056
#undef as_u16
 
1057
#undef as_u32
 
1058
#undef as_s8
 
1059
#undef as_s16
 
1060
#undef as_s32
 
1061
#undef as_float
 
1062
#undef as_double
 
1063
 
 
1064
#undef as_u8c
 
1065
#undef as_u16c
 
1066
#undef as_u32c
 
1067
#undef as_s8c
 
1068
#undef as_s16c
 
1069
#undef as_s32c
 
1070
#undef as_floatc
 
1071
#undef as_doublec
 
1072
 
 
1073
#undef _get_triple
 
1074
#undef _get_triple_s
 
1075
#undef _get_triple_le
 
1076
#undef _get_triple_be
 
1077
#undef _put_triple
 
1078
#undef _put_triple_s
 
1079
#undef _put_triple_le
 
1080
#undef _put_triple_be
 
1081