libgcc2.c (__bswapdi2): Rename from bswapDI2.

2006-11-07  Eric Christopher  <echristo@apple.com>

        * libgcc2.c (__bswapdi2): Rename from bswapDI2.
        (__bswapsi2): Ditto.
        * libgcc2.h: Remove transformation of bswap routines.
        * config/i386/i386.md (bswapsi2): New.
        (bswapdi2): Ditto.

2006-11-07  Eric Christopher  <echristo@apple.com>

        * gcc.target/i386/builtin-bswap-1.c: Rewrite for 64-bit.
        Test using scan-assembler-not.

From-SVN: r118576
This commit is contained in:
Eric Christopher 2006-11-08 02:24:26 +00:00
parent 701640b1f9
commit 6300f037d0
6 changed files with 328 additions and 295 deletions

View File

@ -1,3 +1,11 @@
2006-11-07 Eric Christopher <echristo@apple.com>
* libgcc2.c (__bswapdi2): Rename from bswapDI2.
(__bswapsi2): Ditto.
* libgcc2.h: Remove transformation of bswap routines.
* config/i386/i386.md (bswapsi2): New.
(bswapdi2): Ditto.
2006-11-07 Jakub Jelinek <jakub@redhat.com> 2006-11-07 Jakub Jelinek <jakub@redhat.com>
* c-common.c (c_common_attributes): Add gnu_inline attribyte. * c-common.c (c_common_attributes): Add gnu_inline attribyte.
@ -14,7 +22,7 @@
2006-11-06 Anatoly Sokolov <aesok@post.ru> 2006-11-06 Anatoly Sokolov <aesok@post.ru>
* config/avr/avr-protos.h (mask_one_bit_p, const_int_pow2_p): Remove * config/avr/avr-protos.h (mask_one_bit_p, const_int_pow2_p): Remove
prototype. prototype.
* config/avr/avr.c (mask_one_bit_p, const_int_pow2_p): Remove. * config/avr/avr.c (mask_one_bit_p, const_int_pow2_p): Remove.
(output_movhi, ashlhi3_out, ashlsi3_out, ashrhi3_out, ashrsi3_out, (output_movhi, ashlhi3_out, ashlsi3_out, ashrhi3_out, ashrsi3_out,
@ -50,9 +58,9 @@
* gcc.c (process_command): Treat -b as normal switch if its argument * gcc.c (process_command): Treat -b as normal switch if its argument
has no dash. has no dash.
2006-11-07 David Ung <davidu@mips.com> 2006-11-07 David Ung <davidu@mips.com>
* config/mips/mips.h (ISA_HAS_PREFETCHX): Add ISA_MIPS32R2 to the * config/mips/mips.h (ISA_HAS_PREFETCHX): Add ISA_MIPS32R2 to the
list. list.

File diff suppressed because it is too large Load Diff

View File

@ -494,7 +494,7 @@ __ashrdi3 (DWtype u, word_type b)
#ifdef L_bswapsi2 #ifdef L_bswapsi2
UWtype UWtype
__bswapSI2 (UWtype u) __bswapsi2 (UWtype u)
{ {
return ((((u) & 0xff000000) >> 24) return ((((u) & 0xff000000) >> 24)
| (((u) & 0x00ff0000) >> 8) | (((u) & 0x00ff0000) >> 8)
@ -504,7 +504,7 @@ __bswapSI2 (UWtype u)
#endif #endif
#ifdef L_bswapdi2 #ifdef L_bswapdi2
UDWtype UDWtype
__bswapDI2 (UDWtype u) __bswapdi2 (UDWtype u)
{ {
return ((((u) & 0xff00000000000000ull) >> 56) return ((((u) & 0xff00000000000000ull) >> 56)
| (((u) & 0x00ff000000000000ull) >> 40) | (((u) & 0x00ff000000000000ull) >> 40)
@ -1886,7 +1886,7 @@ CONCAT3(__div,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYPE d)
{ {
MTYPE denom, ratio, x, y; MTYPE denom, ratio, x, y;
/* ??? We can get better behavior from logarithmic scaling instead of /* ??? We can get better behavior from logarithmic scaling instead of
the division. But that would mean starting to link libgcc against the division. But that would mean starting to link libgcc against
libm. We could implement something akin to ldexp/frexp as gcc builtins libm. We could implement something akin to ldexp/frexp as gcc builtins
fairly easily... */ fairly easily... */

View File

@ -304,13 +304,11 @@ typedef int word_type __attribute__ ((mode (__word__)));
#define __ctzSI2 __NW(ctz,2) #define __ctzSI2 __NW(ctz,2)
#define __popcountSI2 __NW(popcount,2) #define __popcountSI2 __NW(popcount,2)
#define __paritySI2 __NW(parity,2) #define __paritySI2 __NW(parity,2)
#define __bswapSI2 __NW(bswap,2)
#define __ffsDI2 __NDW(ffs,2) #define __ffsDI2 __NDW(ffs,2)
#define __clzDI2 __NDW(clz,2) #define __clzDI2 __NDW(clz,2)
#define __ctzDI2 __NDW(ctz,2) #define __ctzDI2 __NDW(ctz,2)
#define __popcountDI2 __NDW(popcount,2) #define __popcountDI2 __NDW(popcount,2)
#define __parityDI2 __NDW(parity,2) #define __parityDI2 __NDW(parity,2)
#define __bswapDI2 __NDW(bswap,2)
extern DWtype __muldi3 (DWtype, DWtype); extern DWtype __muldi3 (DWtype, DWtype);
extern DWtype __divdi3 (DWtype, DWtype); extern DWtype __divdi3 (DWtype, DWtype);
@ -347,13 +345,13 @@ extern Wtype __addvSI3 (Wtype, Wtype);
extern Wtype __subvSI3 (Wtype, Wtype); extern Wtype __subvSI3 (Wtype, Wtype);
extern Wtype __mulvSI3 (Wtype, Wtype); extern Wtype __mulvSI3 (Wtype, Wtype);
extern Wtype __negvSI2 (Wtype); extern Wtype __negvSI2 (Wtype);
extern UWtype __bswapSI2 (UWtype); extern UWtype __bswapsi2 (UWtype);
extern DWtype __absvDI2 (DWtype); extern DWtype __absvDI2 (DWtype);
extern DWtype __addvDI3 (DWtype, DWtype); extern DWtype __addvDI3 (DWtype, DWtype);
extern DWtype __subvDI3 (DWtype, DWtype); extern DWtype __subvDI3 (DWtype, DWtype);
extern DWtype __mulvDI3 (DWtype, DWtype); extern DWtype __mulvDI3 (DWtype, DWtype);
extern DWtype __negvDI2 (DWtype); extern DWtype __negvDI2 (DWtype);
extern UDWtype __bswapDI2 (UDWtype); extern UDWtype __bswapdi2 (UDWtype);
#ifdef COMPAT_SIMODE_TRAPPING_ARITHMETIC #ifdef COMPAT_SIMODE_TRAPPING_ARITHMETIC
extern SItype __absvsi2 (SItype); extern SItype __absvsi2 (SItype);

View File

@ -1,3 +1,8 @@
2006-11-07 Eric Christopher <echristo@apple.com>
* gcc.target/i386/builtin-bswap-1.c: Rewrite for 64-bit.
Test using scan-assembler-not.
2006-11-07 Jakub Jelinek <jakub@redhat.com> 2006-11-07 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/inline-17.c: New test. * gcc.dg/inline-17.c: New test.
@ -216,7 +221,7 @@
PR fortran/29641 PR fortran/29641
* gfortran.dg/used_types_11.f90: New test. * gfortran.dg/used_types_11.f90: New test.
2006-10-30 Dirk Mueller <dmueller@suse.de> 2006-10-30 Dirk Mueller <dmueller@suse.de>
* g++.old-deja/g++.pt/eichin01a.C (main): Fix prototype. * g++.old-deja/g++.pt/eichin01a.C (main): Fix prototype.
@ -305,7 +310,7 @@
2006-10-28 Tobias Burnus <burnus@net-b.de> 2006-10-28 Tobias Burnus <burnus@net-b.de>
PR libgfortran/24313 PR libgfortran/24313
* gfortran.dg/csqrt_2.f: Remove xfail *-*-linux-gnu. * gfortran.dg/csqrt_2.f: Remove xfail *-*-linux-gnu.
2006-10-29 Kazu Hirata <kazu@codesourcery.com> 2006-10-29 Kazu Hirata <kazu@codesourcery.com>
@ -332,9 +337,9 @@
2006-10-28 Tobias Burnus <burnus@net-b.de> 2006-10-28 Tobias Burnus <burnus@net-b.de>
PR fortran/28224 PR fortran/28224
* gfortran.dg/io_constraints_2.f90: Use -std=f95. * gfortran.dg/io_constraints_2.f90: Use -std=f95.
* gfortran.dg/namelist_internal.f90: New test. * gfortran.dg/namelist_internal.f90: New test.
2006-10-28 Tobias Burnus <burnus@net-b.de> 2006-10-28 Tobias Burnus <burnus@net-b.de>
@ -358,7 +363,7 @@
* gcc.dg/builtins-44.c: Likewise. * gcc.dg/builtins-44.c: Likewise.
* gcc.dg/builtins-45.c: Likewise. * gcc.dg/builtins-45.c: Likewise.
* gcc.dg/pr28796-2.c: Likewise. * gcc.dg/pr28796-2.c: Likewise.
* gcc.dg/unordered-3.c: Likewise. * gcc.dg/unordered-3.c: Likewise.
2006-10-27 Jerry DeLisle <jvdelisle@gcc.gnu.org> 2006-10-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
@ -416,7 +421,7 @@
* gcc.dg/torture/builtin-math-2.c: Add checks for asin, acos, * gcc.dg/torture/builtin-math-2.c: Add checks for asin, acos,
acosh and atanh. acosh and atanh.
* gcc.dg/torture/builtin-math-3.c (TESTIT): Append 'F' and 'L' * gcc.dg/torture/builtin-math-3.c (TESTIT): Append 'F' and 'L'
floating point modifiers to arguments passed to float and long floating point modifiers to arguments passed to float and long
double functions respectively. Update all callers to use floating double functions respectively. Update all callers to use floating
@ -517,11 +522,11 @@
* gcc.dg/torture/pr26898-2.c: Likewise. * gcc.dg/torture/pr26898-2.c: Likewise.
2006-10-20 Lee Millward <lee.millward@codesourcery.com> 2006-10-20 Lee Millward <lee.millward@codesourcery.com>
PR c++/28053 PR c++/28053
* g++.dg/parse/bitfield1.C: Adjust error markers. * g++.dg/parse/bitfield1.C: Adjust error markers.
* g++.dg/parse/bitfield2.C: New test. * g++.dg/parse/bitfield2.C: New test.
2006-10-20 Adam Nemet <anemet@caviumnetworks.com> 2006-10-20 Adam Nemet <anemet@caviumnetworks.com>
* gcc.dg/tree-ssa/ivopts-2.c: Match final candidates line only. * gcc.dg/tree-ssa/ivopts-2.c: Match final candidates line only.
@ -563,7 +568,7 @@
PR c++/27952 PR c++/27952
* g++.dg/inherit/virtual1.C: New test. * g++.dg/inherit/virtual1.C: New test.
2006-10-17 Mark Mitchell <mark@codesourcery.com> 2006-10-17 Mark Mitchell <mark@codesourcery.com>
PR c++/28261 PR c++/28261
@ -573,7 +578,7 @@
PR c++/29039 PR c++/29039
* g++.dg/init/ctor8.C: New test. * g++.dg/init/ctor8.C: New test.
2006-10-17 Mark Mitchell <mark@codesourcery.com> 2006-10-17 Mark Mitchell <mark@codesourcery.com>
PR c++/27270 PR c++/27270

View File

@ -1,12 +1,16 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-march=i486" } */ /* { dg-options "-march=nocona" } */
/* { dg-final { scan-assembler "bswap" } } */ /* { dg-final { scan-assembler-not "builtin_bswap" } } */
int foo (int a) long foo (long a)
{ {
int b; long b;
b = __builtin_bswap (a); #if __LP64__
b = __builtin_bswap64 (a);
#else
b = __builtin_bswap32 (a);
#endif
return b; return b;
} }