<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Oct 17, 2009, at 4:57 PM, Nicolas Capens wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><o:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName">
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>



<div lang="EN-US" link="blue" vlink="purple" style="word-wrap: break-word;
-webkit-nbsp-mode: space;-webkit-line-break: after-white-space">

<div class="Section1"><p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:
10.0pt;font-family:Arial;color:navy">Hi Chris,<o:p></o:p></span></font></p><p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:
10.0pt;font-family:Arial;color:navy"><o:p> </o:p></span></font></p><p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:
10.0pt;font-family:Arial;color:navy">Function is currently 108 bytes large. Could
4 more bytes really be an issue? </span></font></p></div></div></o:smarttagtype></blockquote><div><br></div><div>Yes.  :)</div><br><blockquote type="cite"><o:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"><div lang="EN-US" link="blue" vlink="purple" style="word-wrap: break-word;
-webkit-nbsp-mode: space;-webkit-line-break: after-white-space"><div class="Section1"><p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:
10.0pt;font-family:Arial;color:navy">Actually 2 should suffice. While I understand
that some applications value storage more than anything, many applications
value compilation time very highly. getIntrinsicID is called all over the place
(isIntrinsic uses it as well), and every single time it checks the function
name. To me that sounds a lot more dramatic than 2 bytes…<o:p></o:p></span></font></p><p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:
10.0pt;font-family:Arial;color:navy"><o:p> </o:p></span></font></p><p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:
10.0pt;font-family:Arial;color:navy">Anyway, using SubclassData could work. It’s
already being used for the calling convention, which has values ranging from 0
to 68 (fitting in 7 bits), while intrinsic ID’s would take 9 bits. So
that would only just work. However, the calling convention enums could be
reordered to only take 3 bits.</span></font></p></div></div></o:smarttagtype></blockquote><div><br></div><div>I think that fitting it into SubclassData would be best.</div><br><blockquote type="cite"><o:smarttagtype namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"><div lang="EN-US" link="blue" vlink="purple" style="word-wrap: break-word;
-webkit-nbsp-mode: space;-webkit-line-break: after-white-space"><div class="Section1"><p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:
10.0pt;font-family:Arial;color:navy"><o:p></o:p></span></font></p><p class="MsoNormal"><span class="Apple-style-span" style="color: rgb(0, 0, 128); font-family: Arial; font-size: 13px; ">I was wondering whether it would make
sense to have an IntrinsicFunction class, derived from Function. This way only
the IntrinsicFunction would have an intrinsicID field. I noticed that Function
already has virtual methods so getIntrinsicID could be another virtual method
without adding any real overhead. For Function it would simply return 0 while
for IntrinsicFunction it returns the intrinsicID field that was initialized in
the constructor.</span></p></div></div></o:smarttagtype></blockquote></div><div><br></div><div>It would be fine to have a stateless IntrinsicFunction class (Similar to IntrinsicInst) but it wouldn't work to add state there.  We do need setName etc to work.  The bytecode and .ll parsers have to play games when autoupgrading old .ll files, and we want the IR manipulation methods to be simple and consistent where possible.  I completely agree that making getIntrinsicID() fast is a worthwhile goal, lets just not lose anything else in the process :)</div><div><br></div><div>-Chris</div></body></html>