<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Agreed, yes, the sizes are in the target definition.</div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><font class="Apple-style-span" color="#0000FF"><font class="Apple-style-span" face="Gill Sans"><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; "><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; ">Antony Hosking</span></span></font></font><font class="Apple-style-span" face="Gill Sans"><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-converted-space"> </span>|<span class="Apple-converted-space"> </span></span></span><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-style-span" style="font-family: 'Gill Sans'; ">Associate Professor</span></span><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-style-span" style="font-family: 'Gill Sans'; "> | Computer Science | Purdue University</span></span></font></div><div><font class="Apple-style-span" face="GillSans-Light"><span class="Apple-style-span" style="font-family: GillSans-Light; ">305 N. University Street | West Lafayette | IN 47907 | USA</span></font></div><div><font class="Apple-style-span" color="#0000FF" face="Gill Sans"><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; "><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; ">Office</span></span></font><font class="Apple-style-span" face="GillSans-Light"><span class="Apple-style-span" style="font-family: GillSans-Light; "><span class="Apple-style-span" style="font-family: GillSans-Light; "> +1 765 494 6001 |<span class="Apple-converted-space"> </span></span></span></font><font class="Apple-style-span" color="#0000FF" face="Gill Sans"><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; "><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; ">Mobile</span></span></font><font class="Apple-style-span" face="GillSans-Light"><span class="Apple-style-span" style="font-family: GillSans-Light; "><span class="Apple-style-span" style="font-family: GillSans-Light; "><span class="Apple-converted-space"> </span>+1 765 427 5484</span></span></font></div><div><font class="Apple-style-span" face="GillSans-Light"><br class="khtml-block-placeholder"></font></div></span></span></span></span></span></span></span><br class="Apple-interchange-newline"></span></div></span></span><br class="Apple-interchange-newline">
</div>
<br><div><div>On 20 Jan 2010, at 21:54, Jay K wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><br><blockquote type="cite">I think the idea that "basics" don't change<br></blockquote><blockquote type="cite">meaning doesn't wash because you can't<br></blockquote><blockquote type="cite">make assumptions about what hardware you're<br></blockquote><blockquote type="cite">running on and therefore might be condemning<br></blockquote><blockquote type="cite">the language to inefficiency on certain hardware.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Agreed!<br></blockquote><br><br>The "basics" *for a given target*.<br>LINUXLIBC6 will "never" change INTEGER to be other than 32 bits.<br>AMD64_LINUX will "never" change INTEGER to be other than 64 bits.<br>Some other future platform can use 56 bits or 128 bits or whatever.<br><br><br> - Jay<br><br><br>________________________________<br><blockquote type="cite">From: <a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br></blockquote><blockquote type="cite">Date: Wed, 20 Jan 2010 19:35:17 -0500<br></blockquote><blockquote type="cite">To: <a href="mailto:darko@darko.org">darko@darko.org</a><br></blockquote><blockquote type="cite">CC: <a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a>; <a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a><br></blockquote><blockquote type="cite">Subject: Re: [M3devel] __int128 coming to gcc<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On 20 Jan 2010, at 19:29, Darko wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">My point is that the LONGINT type should be thought of abstractly as something longer than an INTEGER. It would be great if the compiler used the right sized integer for a subrange with a particular number of members (2^16, 2^32, 2^64 or 2^128), but you might just have to say "don't compile LONGINTS bigger than 64 bits" for efficiency.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">M3 defines all arithmetic as operating on the base type. It does seem reasonable to be able to build for targets with different-sized LONGINT, just as we do for targets with different-sized INTEGER.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">You're using the syntax for packed types in your example, but I think they'd have to be subranges.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Sorry, yes. [Jet-lag]<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I think the idea that "basics" don't change meaning doesn't wash because you can't make assumptions about what hardware you're running on and therefore might be condemning the language to inefficiency on certain hardware.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Agreed!<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On 20/01/2010, at 10:20 PM, Jay K wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Ok with changing LONGINT to be __int128, *but*<br></blockquote><blockquote type="cite">you really should not change it with a compiler flag.<br></blockquote><blockquote type="cite">For any given platform, "basics" like this should not change meaning.<br></blockquote><blockquote type="cite">It makes it such that you can't link code safely.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Basically, "platform" or "target" should map to one "ABI".<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I really kind of like what I proposed earlier.<br></blockquote><blockquote type="cite">Let the user define things.<br></blockquote><blockquote type="cite">TYPE INT64 = BITS 64 FOR INTEGER;<br></blockquote><blockquote type="cite">TYPE INT128 = BITS 128 FOR INTEGER;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">TYPE INT256 = BITS 256 FOR INTEGER;<br></blockquote><blockquote type="cite">(* either an error, or the compiler generates calls to multi-precision library *)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">This is btw why the user thread stuff should be either 1) a runtime alterable decision<br></blockquote><blockquote type="cite">or 2) separate platforms (I386_LINUX_USERTHREADS or somesuch).<br></blockquote><blockquote type="cite">So that there aren't multiple ABIs and you can link together any code for<br></blockquote><blockquote type="cite">a given platform.<br></blockquote><blockquote type="cite">With an *occasional* alteration/fix, such as when NT386 LONGINT grows to 64bits.<br></blockquote><blockquote type="cite">That forces recompilation of everything affected.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">- Jay<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">________________________________<br></blockquote><blockquote type="cite">Subject: Re: [M3devel] __int128 coming to gcc<br></blockquote><blockquote type="cite">From: <a href="mailto:darko@darko.org">darko@darko.org</a><br></blockquote><blockquote type="cite">Date: Wed, 20 Jan 2010 14:23:32 +1100<br></blockquote><blockquote type="cite">CC: <a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a>; <a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a><br></blockquote><blockquote type="cite">To: <a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I'm with Tony on this one. LONGINT should just mean "larger than the natural integer the machine" and its range should be implementation dependent. You could then change it's actual size with a compiler flag or the like.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On 19/01/2010, at 1:03 AM, Tony Hosking wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On 18 Jan 2010, at 08:05, Jay K wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">gcc 4.6 apparently will have __int128.<br></blockquote><blockquote type="cite">How long until we have LONGLONGINT or INT128?<br></blockquote><blockquote type="cite">Presumably we should have LONGLONGINT or INT128 to expose it?<br></blockquote><blockquote type="cite">:)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Why would we not simply expand LONGINT? It doesn't matter even if it is slow. Then 64-bit can be expressed as<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">BITS 64 FOR [0L..16_7FFFFFFFFFFFFFFFL]<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Or, again, I should look at the arithemetic library...<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">- Jay<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Date: Mon, 18 Jan 2010 13:01:13 +0000<br></blockquote><blockquote type="cite">From: gcc-patches-digest-help@<br></blockquote><blockquote type="cite">To: gcc-patches@<br></blockquote><blockquote type="cite">Subject: gcc-patches Digest 18 Jan 2010 13:01:13 -0000 Issue 14091<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">gcc-patches Digest 18 Jan 2010 13:01:13 -0000 Issue 14091<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">...<br></blockquote><blockquote type="cite">[patch]: New feature __int128 type C/C++ for upcoming 4.6 for review<br></blockquote><blockquote type="cite">255919 by: Kai Tietz<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">...<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">--Forwarded Message Attachment--<br></blockquote><blockquote type="cite">Date: Mon, 18 Jan 2010 14:01:00 +0100<br></blockquote><blockquote type="cite">Subject: Re: [patch]: New feature __int128 type C/C++ for upcoming 4.6 for review<br></blockquote><blockquote type="cite">From: ktietz70@<br></blockquote><blockquote type="cite">To: joseph@<br></blockquote><blockquote type="cite">CC: gcc-patches@<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Hello,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">this is the recent version of the __int128 type support as gcc<br></blockquote><blockquote type="cite">extension. Comments in parser for C and C++ are updated and complex<br></blockquote><blockquote type="cite">type and tests are added.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">ChangeLog gcc/<br></blockquote><blockquote type="cite">....<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span> <span class="Apple-tab-span" style="white-space:pre">   </span>   <span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>  <br></blockquote></div></blockquote></div><br></body></html>