This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [wide-int] Add fast path for hosts with HWI widening multiplication

everyone who has a private port will hate you forever. note that i have 2 of them.
On 05/08/2014 02:31 PM, Richard Sandiford wrote:
"Joseph S. Myers" <> writes:
On Thu, 8 May 2014, Ramana Radhakrishnan wrote:

<DATE>  Ramana Radhakrishnan  <>

        * (UTItype): Define.
        (UDWtype): Define for appropriate W_TYPE_SIZE.
This breaks builds for 32-bit hosts, where TImode isn't supported.  You
can only use TImode on the host if it's 64-bit. error: unable to emulate 'TI'
The longlong.h interface seems to be designed to be as difficult to use
as possible :-(  So maybe we really do need to limit it to hosts that are
known to work and benefit from it.

How about the following?  I tested that it produces identical
wide-int.o .text for x86_64.

I think additions to or removals from the list should be treated as


	* Only include longlong.h for certain targets.

Index: gcc/
--- gcc/	2014-05-08 19:13:15.782158808 +0100
+++ gcc/	2014-05-08 19:28:52.880742385 +0100
@@ -27,19 +27,20 @@ along with GCC; see the file COPYING3.
  #include "tree.h"
  #include "dumpfile.h"
-#if GCC_VERSION >= 3000
+#if (GCC_VERSION >= 3000 \
+     && (defined __aarch64 \
+         || defined __alpha \
+         || defined __ia64 \
+         || defined __powerpc64__ \
+         || defined __sparcv9 \
+         || defined __x86_64__))
-typedef unsigned HOST_HALF_WIDE_INT UHWtype;
-typedef unsigned HOST_WIDE_INT UWtype;
  typedef unsigned int UQItype __attribute__ ((mode (QI)));
  typedef unsigned int USItype __attribute__ ((mode (SI)));
  typedef unsigned int UDItype __attribute__ ((mode (DI)));
-typedef unsigned int UTItype __attribute__ ((mode (TI)));
-#if W_TYPE_SIZE == 32
-# define UDWtype       UDItype
-#elif W_TYPE_SIZE == 64
-# define UDWtype       UTItype
+typedef unsigned HOST_HALF_WIDE_INT UHWtype;
+typedef unsigned HOST_WIDE_INT UWtype;
+typedef unsigned int UDWtype __attribute__ ((mode (TI)));
  #include "longlong.h"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]