<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Courier;
        panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 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:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:9.5pt;
        font-family:Courier;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Courier;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.new
        {mso-style-name:new;
        color:blue;
        font-weight:normal;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle23
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DE" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Hi Götz,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">thanks for the review. I basically used small micro-benchmarks and tests and later our nightly tests which I have extended a little bit with this change. There were some match rules which I only
 hit with the change I made in TestStringIntrinsics2.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">I think you’re right. The addition to the predicate for
</span><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN">string_indexOf_imm1_charNode</span><span lang="EN-US" style="color:#1F497D"> should not be needed because the AddP node for the immediate needle gets matched with the StrIndexOfNode.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">I have removed it again from this node and from the new nodes which match indexOf_imm1_char in the 3 different flavors.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">Spaces before comma are also fixed.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">The guarantee(needlecntval != 1, …) is not new. It was already there in the non-CompactStrings version. string_indexof wouldn’t generate correct code. There’s a separate match rule for that case.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">New webrev is here:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D"><a href="http://cr.openjdk.java.net/~mdoerr/8149655_PPC64_StringIntrinsics/webrev.01/">http://cr.openjdk.java.net/~mdoerr/8149655_PPC64_StringIntrinsics/webrev.01/</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D">Martin<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:DE">From:</span></b><span lang="EN-US" style="mso-fareast-language:DE"> Lindenmaier, Goetz
<br>
<b>Sent:</b> Donnerstag, 18. Februar 2016 20:50<br>
<b>To:</b> Doerr, Martin <martin.doerr@sap.com>; hotspot-compiler-dev@openjdk.java.net<br>
<b>Subject:</b> RE: RFR(L) 8149655: PPC64: Implement CompactString intrinsics<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN">Hi Martin,
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN">I finally had a look at this change.  Good work!<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN">What did you test this with,  besides our hs-comp nighttests, which
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN">already is quite a lot?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN">ppc.ad:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN">I saw you added more conditions to the predicate of  string_indexOf_imm1_char() etc.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN">Isn’t this obvious because needleImm is an immP?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN">macroassmbler_ppc.cpp:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN" style="font-size:9.5pt;font-family:Courier;color:blue;mso-fareast-language:ZH-CN">if (stride1 == 1) { lbz(chr1, 0, str1); } else { lhz(chr1, 0 ,str1); }</span><span lang="EN" style="font-size:9.5pt;font-family:Courier;mso-fareast-language:ZH-CN"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN" style="color:#1F497D;mso-fareast-language:ZH-CN">Space before comma.  There are more of these, search for ‘0 ,’<o:p></o:p></span></p>
<p class="MsoNormal"><span class="new"><span lang="EN">guarantee(needlecntval != 1,</span><o:p></o:p></span></p>
<p class="MsoNormal"><span class="new"><span lang="EN">not indented … or is this on purpose?<o:p></o:p></span></span></p>
<p class="MsoNormal"><span class="new"><span lang="EN"><o:p> </o:p></span></span></p>
<p class="MsoNormal"><span class="new"><span lang="EN">Best regards,<o:p></o:p></span></span></p>
<p class="MsoNormal"><span class="new"><span lang="EN">  Goetz.</span></span><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="color:#1F497D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:ZH-CN">From:</span></b><span lang="EN-US" style="mso-fareast-language:ZH-CN"> hotspot-compiler-dev [<a href="mailto:hotspot-compiler-dev-bounces@openjdk.java.net">mailto:hotspot-compiler-dev-bounces@openjdk.java.net</a>]
<b>On Behalf Of </b>Doerr, Martin<br>
<b>Sent:</b> Thursday, February 11, 2016 4:11 PM<br>
<b>To:</b> <a href="mailto:hotspot-compiler-dev@openjdk.java.net">hotspot-compiler-dev@openjdk.java.net</a><br>
<b>Subject:</b> RFR(L) 8149655: PPC64: Implement CompactString intrinsics<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I have created a webrev which adds the following String intrinsics to PPC64:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">0 string_compareL<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">1 string_compareU<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2 string_compareLU<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">3 string_compareUL<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">4 string_equalsL<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">5 string_equalsU<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">6 array_equalsB<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">7 array_equalsC<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">8 indexOf_imm1_char_U<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">9 indexOf_imm1_char_L<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">10 indexOf_imm1_char_UL<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">11 indexOf_imm1_U<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">12 indexOf_imm1_L<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="ES">13 indexOf_imm1_UL<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="ES">14 indexOfChar_U<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="ES">15 indexOf_imm_U<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">16 indexOf_imm_L<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">17 indexOf_imm_UL<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">18 indexOf_U<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">19 indexOf_L<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">20 indexOf_UL<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">21 string_compress<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">22 string_inflate<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">23 has_negatives<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">24 encode_iso_array<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">It also contains some other minor improvements.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The webrev is here:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://cr.openjdk.java.net/~mdoerr/8149655_PPC64_StringIntrinsics/webrev.00/">http://cr.openjdk.java.net/~mdoerr/8149655_PPC64_StringIntrinsics/webrev.00/</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Please review.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I will also need a sponsor from Oracle because the change touches one java test file (test/compiler/intrinsics/string/TestStringIntrinsics2.java).<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Martin<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
</div>
</body>
</html>