This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [wide-int] Add fast path for hosts with HWI widening multiplication
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: Jakub Jelinek <jakub at redhat dot com>, Kenneth Zadeck <zadeck at naturalbridge dot com>, "Joseph S. Myers" <joseph at codesourcery dot com>, ramrad01 at arm dot com, gcc-patches <gcc-patches at gcc dot gnu dot org>, Mike Stump <mikestump at comcast dot net>, Richard Henderson <rth at redhat dot com>
- Date: Thu, 08 May 2014 22:04:24 +0100
- Subject: Re: [wide-int] Add fast path for hosts with HWI widening multiplication
- Authentication-results: sourceware.org; auth=none
- References: <8761r8kgph dot fsf at talisman dot default> <871u1sdbb6 dot fsf at talisman dot default> <CAJA7tRa8sMQbg==u8srmfRGKpbjA2+cF5c466xAHvpjZB+8_4w at mail dot gmail dot com> <Pine dot LNX dot 4 dot 64 dot 1405081636260 dot 4990 at digraph dot polyomino dot org dot uk> <87vbtg2kcq dot fsf at talisman dot default> <536BCECB dot 6070001 at naturalbridge dot com> <87r4442i6v dot fsf at talisman dot default> <CAMe9rOqf4ENro0Dh7RYdW-CeQhQup=utzBaUEc7KVnx_6ifwGQ at mail dot gmail dot com> <20140508194200 dot GI10386 at tucnak dot redhat dot com> <CAMe9rOpdvAi2Hhjii_8E9YTK2D-3GDGREcXEJDSG-D+AMw8-sw at mail dot gmail dot com> <87eh042fom dot fsf at talisman dot default> <CAMe9rOreRB1WFRvB0CGi4StfZ4eHD9RkzOSwziVwPxT5kJM4fA at mail dot gmail dot com>
"H.J. Lu" <hjl.tools@gmail.com> writes:
> On Thu, May 8, 2014 at 1:12 PM, Richard Sandiford
> <rdsandiford@googlemail.com> wrote:
>> "H.J. Lu" <hjl.tools@gmail.com> writes:
>>> On Thu, May 8, 2014 at 12:42 PM, Jakub Jelinek <jakub@redhat.com> wrote:
>>>> On Thu, May 08, 2014 at 12:34:28PM -0700, H.J. Lu wrote:
>>>>> On Thu, May 8, 2014 at 12:18 PM, Richard Sandiford
>>>>> <rdsandiford@googlemail.com> wrote:
>>>>> > Kenneth Zadeck <zadeck@naturalbridge.com> writes:
>>>>> >> everyone who has a private port will hate you forever. note that i
>>>>> >> have 2 of them.
>>>>> >
>>>>> > Got any other ideas though? I suppose if we're prepared to break
>>>>> > compatibility with whatever the upstream of longlong.h is, we could
>>>>> > make more use of intN_t and uintN_t.
>>>>> >
>>>>> > Having a whitelist of hosts seems like the best fix though.
>>>>> > I'm not sure the default umul_ppmm is going to be any better
>>>>> > than not defining it.
>>>>> >
>>>>>
>>>>> Can you add a configure time check if
>>>>>
>>>>> typedef unsigned int UTItype __attribute__ ((mode (TI)));
>>>>>
>>>>> is supported?
>>>>
>>>> Why? Isn't that #ifdef __SIZEOF_INT128__ ?
>>
>> Read this just after getting the configure test to work...
>>
>>> Yes, we can use that. Will it work?
>>
>> Seems to. How does this look?
>>
>> Thanks,
>> Richard
>>
>>
>> gcc/
>> * wide-int.cc: Only include longlong.h if W_TYPE_SIZE==32 or
>> __SIZEOF_INT128__ is defined.
>>
>> Index: gcc/wide-int.cc
>> ===================================================================
>> --- gcc/wide-int.cc 2014-05-08 20:48:25.341583885 +0100
>> +++ gcc/wide-int.cc 2014-05-08 21:09:29.324386217 +0100
>> @@ -27,18 +27,17 @@ along with GCC; see the file COPYING3.
>> #include "tree.h"
>> #include "dumpfile.h"
>>
>> -#if GCC_VERSION >= 3000
>> #define W_TYPE_SIZE HOST_BITS_PER_WIDE_INT
>
> Isn't HOST_BITS_PER_WIDE_INT always 64 now?
Right, but like I said in reply to Ramana's email, there's no guarantee
that we'll continue to use HOST_WIDE_INT for wide-int.h. I'd rather
keep this code parameterised on W_TYPE_SIZE rather than hard-code
W_TYPE_SIZE==64.
>> +#if GCC_VERSION >= 3000 && (W_TYPE_SIZE == 32 || defined (__SIZEOF_INT128__))
>
> W_TYPE_SIZE == 32 is always false and on 32-bit hosts,
> __SIZEOF_INT128__ won't be defined.
Right, but we won't try to use TImode if in future we do revert to using
32-bit types for 32-bit hosts.
Thanks,
Richard