source: arduino-1-6-7/trunk/fuentes/arduino-ide-amd64/hardware/tools/avr/lib/gcc/avr/4.9.2/include/stdfix.h @ 4837

Last change on this file since 4837 was 4837, checked in by daduve, 2 years ago

Adding new version

File size: 6.8 KB
Line 
1/* Copyright (C) 2007-2014 Free Software Foundation, Inc.
2
3   This file is part of GCC.
4
5   GCC is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 3, or (at your option)
8   any later version.
9
10   GCC is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   Under Section 7 of GPL version 3, you are granted additional
16   permissions described in the GCC Runtime Library Exception, version
17   3.1, as published by the Free Software Foundation.
18
19   You should have received a copy of the GNU General Public License and
20   a copy of the GCC Runtime Library Exception along with this program;
21   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
22   <http://www.gnu.org/licenses/>.  */
23
24/* ISO/IEC JTC1 SC22 WG14 N1169
25 * Date: 2006-04-04
26 * ISO/IEC TR 18037
27 * Programming languages - C - Extensions to support embedded processors
28 */
29
30#ifndef _AVRGCC_STDFIX_H
31#define _AVRGCC_STDFIX_H
32
33/* 7.18a.1 Introduction.  */
34/* 7.18a.3 Precision macros.  */
35
36#include <stdfix-gcc.h>
37
38
39#if __SIZEOF_INT__ == 2
40
41typedef signed char int_hr_t;
42typedef unsigned char uint_uhr_t;
43
44typedef short int int_r_t;
45typedef short unsigned int uint_ur_t;
46
47typedef short int int_hk_t;
48typedef short unsigned int uint_uhk_t;
49
50typedef long int int_lr_t;
51typedef long unsigned int uint_ulr_t;
52
53typedef long int int_k_t;
54typedef long unsigned int uint_uk_t;
55
56typedef long long int int_llr_t;
57typedef long long unsigned int uint_ullr_t;
58
59typedef long long int int_lk_t;
60typedef long long unsigned int uint_ulk_t;
61
62typedef long long int int_llk_t;
63typedef long long unsigned int uint_ullk_t;
64
65#elif __SIZEOF_INT__ == 1  /*  -mint8  */
66
67typedef signed char int_hr_t;
68typedef unsigned char uint_uhr_t;
69
70typedef long int int_r_t;
71typedef long unsigned int uint_ur_t;
72
73typedef long int int_hk_t;
74typedef long unsigned int uint_uhk_t;
75
76typedef long long int int_lr_t;
77typedef long long unsigned int uint_ulr_t;
78
79typedef long long int int_k_t;
80typedef long long unsigned int uint_uk_t;
81
82#endif /* __SIZEOF_INT__ == 1, 2 */
83
84
85/* 7.18a.6  The fixed-point intrinsic functions.  */
86
87
88/* 7.18a.6.2  The fixed-point absolute value functions.  */
89
90#define abshr __builtin_avr_abshr
91#define absr  __builtin_avr_absr
92#define abslr __builtin_avr_abslr
93
94#define abshk __builtin_avr_abshk
95#define absk  __builtin_avr_absk
96
97#if __SIZEOF_INT__ == 2
98
99#define abslk  __builtin_avr_abslk
100#define absllr __builtin_avr_absllr  /* GCC Extension */
101#define absllk __builtin_avr_absllk  /* GCC Extension */
102
103#endif /* sizeof (int) == 2 */
104
105
106/* 7.18a.6.3  The fixed-point round functions.  */
107
108/* The Embedded-C paper specifies results only for rounding points
109
110       0 < RP < FBIT
111 
112   As an extension, the following functions work as expected
113   with rounding points
114
115       -IBIT < RP < FBIT
116 
117   For example, rounding an accum with a rounding point of -1 will
118   result in an even integer value.  */
119
120#define roundhr  __builtin_avr_roundhr
121#define roundr   __builtin_avr_roundr
122#define roundlr  __builtin_avr_roundlr
123
124#define rounduhr __builtin_avr_rounduhr
125#define roundur  __builtin_avr_roundur
126#define roundulr __builtin_avr_roundulr
127
128#define roundhk  __builtin_avr_roundhk
129#define roundk   __builtin_avr_roundk
130
131#define rounduhk __builtin_avr_rounduhk
132#define rounduk  __builtin_avr_rounduk
133
134#if __SIZEOF_INT__ == 2
135
136#define roundlk   __builtin_avr_roundlk
137#define roundulk  __builtin_avr_roundulk
138#define roundllr  __builtin_avr_roundllr  /* GCC Extension */
139#define roundullr __builtin_avr_roundullr /* GCC Extension */
140#define roundllk  __builtin_avr_roundllk  /* GCC Extension */
141#define roundullk __builtin_avr_roundullk /* GCC Extension */
142
143#endif /* sizeof (int) == 2 */
144
145
146/* 7.18a.6.4  The fixed-point bit countls functions.  */
147
148#define countlshr  __builtin_avr_countlshr
149#define countlsr   __builtin_avr_countlsr
150#define countlslr  __builtin_avr_countlslr
151
152#define countlsuhr __builtin_avr_countlsuhr
153#define countlsur  __builtin_avr_countlsur
154#define countlsulr __builtin_avr_countlsulr
155
156#define countlshk  __builtin_avr_countlshk
157#define countlsk   __builtin_avr_countlsk
158
159#define countlsuhk __builtin_avr_countlsuhk
160#define countlsuk  __builtin_avr_countlsuk
161
162#if __SIZEOF_INT__ == 2
163
164#define countlslk   __builtin_avr_countlslk
165#define countlsulk  __builtin_avr_countlsulk
166#define countlsllr  __builtin_avr_countlsllr  /* GCC Extension */
167#define countlsullr __builtin_avr_countlsullr /* GCC Extension */
168#define countlsllk  __builtin_avr_countlsllk  /* GCC Extension */
169#define countlsullk __builtin_avr_countlsullk /* GCC Extension */
170
171#endif /* sizeof (int) == 2 */
172
173
174/* 7.18a.6.5  The bitwise fixed-point to integer conversion functions. */
175
176#define bitshr  __builtin_avr_bitshr
177#define bitsr   __builtin_avr_bitsr
178#define bitslr  __builtin_avr_bitslr
179
180#define bitsuhr __builtin_avr_bitsuhr
181#define bitsur  __builtin_avr_bitsur
182#define bitsulr __builtin_avr_bitsulr
183
184#define bitshk  __builtin_avr_bitshk
185#define bitsk   __builtin_avr_bitsk
186
187#define bitsuhk __builtin_avr_bitsuhk
188#define bitsuk  __builtin_avr_bitsuk
189
190#if __SIZEOF_INT__ == 2
191
192#define bitslk   __builtin_avr_bitslk
193#define bitsulk  __builtin_avr_bitsulk
194#define bitsllr  __builtin_avr_bitsllr  /* GCC Extension */
195#define bitsullr __builtin_avr_bitsullr /* GCC Extension */
196#define bitsllk  __builtin_avr_bitsllk  /* GCC Extension */
197#define bitsullk __builtin_avr_bitsullk /* GCC Extension */
198
199#endif /* sizeof (int) == 2 */
200
201
202/* 7.18a.6.6  The bitwise integer to fixed-point conversion functions. */
203
204#define hrbits  __builtin_avr_hrbits
205#define rbits   __builtin_avr_rbits
206#define lrbits  __builtin_avr_lrbits
207
208#define uhrbits __builtin_avr_uhrbits
209#define urbits  __builtin_avr_urbits
210#define ulrbits __builtin_avr_ulrbits
211
212#define hkbits  __builtin_avr_hkbits
213#define kbits   __builtin_avr_kbits
214
215#define uhkbits __builtin_avr_uhkbits
216#define ukbits  __builtin_avr_ukbits
217
218#if __SIZEOF_INT__ == 2
219
220#define lkbits   __builtin_avr_lkbits
221#define ulkbits  __builtin_avr_ulkbits
222#define llrbits  __builtin_avr_llrbits  /* GCC Extension */
223#define ullrbits __builtin_avr_ullrbits /* GCC Extension */
224#define llkbits  __builtin_avr_llkbits  /* GCC Extension */
225#define ullkbits __builtin_avr_ullkbits /* GCC Extension */
226
227#endif /* sizeof (int) == 2 */
228
229
230/* 7.18a.6.7  Type-generic fixed-point functions.  */
231
232#define absfx     __builtin_avr_absfx
233#define roundfx   __builtin_avr_roundfx
234#define countlsfx __builtin_avr_countlsfx
235
236
237/* Hook in stuff from AVR-Libc.  */
238
239#if (defined (__WITH_AVRLIBC__)                 \
240     && defined (__has_include)                 \
241     && __has_include (<stdfix-avrlibc.h>))
242#include <stdfix-avrlibc.h>
243#endif
244
245#endif /* _AVRGCC_STDFIX_H */
Note: See TracBrowser for help on using the repository browser.