<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=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"Lucida Console";
        panose-1:2 11 6 9 4 5 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
h1
        {mso-style-priority:9;
        mso-style-link:"Heading 1 Char";
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:24.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.Heading1Char
        {mso-style-name:"Heading 1 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 1";
        font-family:"Times New Roman","serif";
        font-weight:bold;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
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="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"">Hi Craig,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"">I am Charles Li from Sony Playstation.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"">We are doing x86 code gen testing and, by chance, we noticed that compiling the
<span style="color:#1F497D"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__msdn.microsoft.com_en-2Dus_library_windows_hardware_ff561499-28v-3Dvs.85-29.aspx&d=AwMFAg&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=nopqkvpGYmcsdlR7H2xIOQ9HPdZfvtEEy6kO5GPk520&s=PUlaa4M5pcc8VtoUZQRW7if5I2b_KPS_5rEd04MmiE4&e=">64-bit assembly instruction</a></span> “</span><span style="font-family:"Lucida Console";color:#002060">jrcxz</span><span style="font-family:"Arial","sans-serif"">”
 in 32-bit mode<span style="color:#1F497D"> “-m32”</span> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"">previously resulted in an error,
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"">now gets silently converted into the 32-bit equivalent instruction “</span><span style="font-family:"Lucida Console";color:#002060">jecxz</span><span style="font-family:"Arial","sans-serif"">”.<o:p></o:p></span></p>
<h1><span style="font-size:11.0pt;font-family:"Arial","sans-serif";font-weight:normal">I have bisected this change in behavior down to
<a href="http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20141229/250681.html">
r225075 - [X86] Make the instructions that use AdSize16/32/64 co-exist together without using mode predicates.</a><span style="color:black"><o:p></o:p></span></span></h1>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"">I am curious if this change in behavior was an intended feature or perhaps a side effect.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"">Here is my methodology.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-family:"Arial","sans-serif"">The asm test case.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#00B050">$ cat j64.s<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#002060">        jrcxz   foo<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#002060">foo:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-family:"Arial","sans-serif"">Compiling the test case in 32-bit mode with Clang r225039.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#00B050">$ r225039/clang.exe  j64.s -c -m32  -target x86_64-pc-linux-gnu<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#002060">j64.s:1:9: error: instruction requires: 64-bit mode<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#002060">        jrcxz   foo<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#002060">        ^<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-family:"Arial","sans-serif"">Compiling the test case in 32-bit mode with Clang r225079 then disassembling the obj file to look for the jump instruction.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#00B050">$ r225079/clang.exe  j64.s -c -m32  -target x86_64-pc-linux-gnu<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:Consolas">(No Error)<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#00B050">$ objdump j64.o -d | grep j<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#002060">j64.o:     file format elf32-i386<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in;text-autospace:none"><span style="font-family:"Lucida Console";color:#002060">   0:   e3 00                   jecxz  2 <foo><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<h1><span style="font-size:11.0pt;font-family:"Arial","sans-serif";font-weight:normal">Just FYI, this is not blocking us in any way. I found this to be a very interesting discovery so I want to share it in the hopes of determining if it was intentional or not.<o:p></o:p></span></h1>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"">Sincerely,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"">Charles Li<o:p></o:p></span></p>
</div>
</body>
</html>