diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2011-07-04 10:02:34 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2011-07-04 10:02:34 +0000 |
commit | 6dab9931f8f4b4366c3e1670902ace73e736ac4d (patch) | |
tree | 465b14227b9bdddb17ca31127b3fdfa9d0615aa3 | |
parent | f027ee7cb0ed39a3c84b74673655bac4e22d335f (diff) | |
download | gcc-6dab9931f8f4b4366c3e1670902ace73e736ac4d.zip gcc-6dab9931f8f4b4366c3e1670902ace73e736ac4d.tar.gz gcc-6dab9931f8f4b4366c3e1670902ace73e736ac4d.tar.bz2 |
t-avr (intfuncs16): Add _clrsbXX2.
libgcc/
* config/avr/t-avr (intfuncs16): Add _clrsbXX2.
gcc/
* longlong.h (count_leading_zeros, count_trailing_zeros,
COUNT_LEADING_ZEROS_0): Define for target avr if W_TYPE_SIZE is 16
resp. 64.
From-SVN: r175800
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/longlong.h | 20 | ||||
-rw-r--r-- | libgcc/ChangeLog | 4 | ||||
-rw-r--r-- | libgcc/config/avr/t-avr | 2 |
4 files changed, 29 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 28ff471..8c0dc9a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-04 Georg-Johann Lay <avr@gjlay.de> + + * longlong.h (count_leading_zeros, count_trailing_zeros, + COUNT_LEADING_ZEROS_0): Define for target avr if W_TYPE_SIZE is 16 + resp. 64. + 2011-07-03 Ira Rosen <ira.rosen@linaro.org> PR tree-optimization/49610 diff --git a/gcc/longlong.h b/gcc/longlong.h index 7d11e10..cd4c40f 100644 --- a/gcc/longlong.h +++ b/gcc/longlong.h @@ -250,11 +250,27 @@ UDItype __umulsidi3 (USItype, USItype); #define COUNT_LEADING_ZEROS_0 32 #endif -#if defined (__AVR__) && W_TYPE_SIZE == 32 +#if defined (__AVR__) + +#if W_TYPE_SIZE == 16 +#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X)) +#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctz (X)) +#define COUNT_LEADING_ZEROS_0 16 +#endif /* W_TYPE_SIZE == 16 */ + +#if W_TYPE_SIZE == 32 #define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzl (X)) #define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzl (X)) #define COUNT_LEADING_ZEROS_0 32 -#endif /* defined (__AVR__) && W_TYPE_SIZE == 32 */ +#endif /* W_TYPE_SIZE == 32 */ + +#if W_TYPE_SIZE == 64 +#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzll (X)) +#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzll (X)) +#define COUNT_LEADING_ZEROS_0 64 +#endif /* W_TYPE_SIZE == 64 */ + +#endif /* defined (__AVR__) */ #if defined (__CRIS__) && __CRIS_arch_version >= 3 #define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clz (X)) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 358cc1e..626a32a 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,7 @@ +2011-07-04 Georg-Johann Lay <avr@gjlay.de> + + * config/avr/t-avr (intfuncs16): Add _clrsbXX2. + 2011-06-28 Nick Clifton <nickc@redhat.com> * config.host: Recognize all V850 variants. diff --git a/libgcc/config/avr/t-avr b/libgcc/config/avr/t-avr index 7c8783e..78829c7 100644 --- a/libgcc/config/avr/t-avr +++ b/libgcc/config/avr/t-avr @@ -1,5 +1,5 @@ # Extra 16-bit integer functions. -intfuncs16 = _absvXX2 _addvXX3 _subvXX3 _mulvXX3 _negvXX2 +intfuncs16 = _absvXX2 _addvXX3 _subvXX3 _mulvXX3 _negvXX2 _clrsbXX2 hiintfuncs16 = $(subst XX,hi,$(intfuncs16)) siintfuncs16 = $(subst XX,si,$(intfuncs16)) |