<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><blockquote type="cite">what do you mean by "more optimal instructions" ?</blockquote><br><div>Could be bad wording... basically, the code generation for the ARM backend keeps getting better and better.<div><br></div><div>Here's a sample of what I'm talking about:<br><div><br></div><div><div>r144488 | mcrosier | 2011-11-12 21:23:59 -0500 (Sat, 12 Nov 2011) | 10 lines</div><div><br></div><div>Add support for emitting both signed- and zero-extend loads.  Fix </div><div>SimplifyAddress to handle either a 12-bit unsigned offset or the ARM +/-imm8</div><div>offsets (addressing mode 3).  This enables a load followed by an integer </div><div>extend to be folded into a single load.</div><div><br></div><div>For example:</div><div>ldrb r1, [r0]       ldrb r1, [r0]</div><div>uxtb r2, r1     =></div><div>mov  r3, r2         mov  r3, r1</div><div><br></div><div><div>------------------------------------------------------------------------</div><div>r141589 | void | 2011-10-10 18:52:53 -0400 (Mon, 10 Oct 2011) | 18 lines</div><div><br></div><div>If the CPSR is defined by a copy, then we don't want to merge it into an IT</div><div>block. E.g., if we have:</div><div><br></div><div>  movs  r1, r1</div><div>  rsb   r1, 0</div><div>  movs  r2, r2</div><div>  rsb   r2, 0</div><div><br></div><div>we don't want this to be converted to:</div><div><br></div><div>  movs  r1, r1</div><div>  movs  r2, r2</div><div>  itt   mi</div><div>  rsb   r1, 0</div><div>  rsb   r2, 0</div></div><div><div>------------------------------------------------------------------------</div><div>r135017 | evancheng | 2011-07-12 20:42:17 -0400 (Tue, 12 Jul 2011) | 17 lines</div><div><br></div><div>Improve codegen for select's:</div><div>if (x != 0) x = 1</div><div>if (x == 1) x = 1</div><div><br></div><div>Previous codegen looks like this:</div><div>        mov     r1, r0</div><div>        cmp     r1, #1</div><div>        mov     r0, #0</div><div>        moveq   r0, #1</div><div><br></div><div>The naive lowering select between two different values. It should recognize the</div><div>test is equality test so it's more a conditional move rather than a select:</div><div>        cmp     r0, #1</div><div>        movne   r0, #0</div></div><div apple-content-edited="true">
</div>
<div>------------------------------------------------------------------------</div><div>r133813 | mcrosier | 2011-06-24 15:23:04 -0400 (Fri, 24 Jun 2011) | 23 lines</div><div><br></div><div>The Neon VCVT (between floating-point and fixed-point, Advanced SIMD)</div><div>instructions can be used to match combinations of multiply/divide and VCVT</div><div>(between floating-point and integer, Advanced SIMD).  Basically the VCVT</div><div>immediate operand that specifies the number of fraction bits corresponds to a</div><div>floating-point multiply or divide by the corresponding power of 2.</div><div><br></div><div>For example, VCVT (floating-point to fixed-point, Advanced SIMD) can replace a</div><div>combination of VMUL and VCVT (floating-point to integer) as follows:</div><div><br></div><div>Example (assume d17 = <float 8.000000e+00, float 8.000000e+00>):</div><div>  vmul.f32        d16, d17, d16</div><div>  vcvt.s32.f32    d16, d16</div><div>becomes:</div><div>  vcvt.s32.f32    d16, d16, #3</div><div><br></div><div>Similarly, VCVT (fixed-point to floating-point, Advanced SIMD) can replace a</div><div>combinations of VCVT (integer to floating-point) and VDIV as follows:</div><div><br></div><div>Example (assume d17 = <float 8.000000e+00, float 8.000000e+00>):</div><div>  vcvt.f32.s32    d16, d16</div><div>  vdiv.f32        d16, d17, d16</div><div>becomes:</div><div>  vcvt.f32.s32    d16, d16, #3</div><div><br></div><div><br></div><div apple-content-edited="true">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><font class="Apple-style-span" color="#a9a9a9" face="'Times New Roman'" size="2">Joe Abbey<br>Software Architect<br>Arxan Technologies, Inc.<br>1305 Cumberland Ave, Ste 215<br>West Lafayette, IN 47906<br><a href="mailto:jabbey@arxan.com">jabbey@arxan.com</a><br>www.arxan.com</font><br><br><br></div>
</div>
<br><div><div>On Nov 16, 2011, at 9:07 AM, محمد ﻋﻤﺮ ﺩﻫﻠﻮﻯ wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html; charset=utf-8">what do you mean by "more optimal instructions" ?<br><br>-omer<br><br><div class="gmail_quote">On Wed, Nov 16, 2011 at 1:28 AM, Joe Abbey <span dir="ltr"><<a href="mailto:jabbey@arxan.com">jabbey@arxan.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style="">I've done a first pass over the past 6 months of changes and some notable things stood out:<div>
<br></div><div><div style="margin: 0px;"> * The ARM backend has reworked Set Jump Long Jump EH Lowering.</div><div style="margin: 0px; min-height: 14px;"> * The ARM backend includes improved support for Cortex-M</div><div style="margin: 0px; min-height: 14px;">
 * The ARM backend adds parsing and encoding ARM/Thumb/Thumb2 assembly</div><div style="margin: 0px; min-height: 14px;"><br></div><div style="margin: 0px; min-height: 14px;">There are also many many code generation improvements which select more optimal instructions.</div>
<div style="margin: 0px; min-height: 14px;"><br></div><div style="margin: 0px; min-height: 14px;">Those seemed to be the big items, maybe you know of more and could help Chris with knowing what else is noteworthy for <span style="font-size: medium;"><a href="http://llvm.org/docs/ReleaseNotes.html#whatsnew" target="_blank">http://llvm.org/docs/ReleaseNotes.html#whatsnew</a></span></div>
<div style="margin: 0px; min-height: 14px;"><br></div><div style="margin: 0px; min-height: 14px;">Cheers,</div><div><br></div><font color="#888888"><div><div style=""><font color="#a9a9a9" size="2" face="'Times New Roman'">Joe Abbey<br>
Software Architect<br>Arxan Technologies, Inc.<br>1305 Cumberland Ave, Ste 215<br>West Lafayette, IN 47906<br><a href="mailto:jabbey@arxan.com" target="_blank">jabbey@arxan.com</a><br><a href="http://www.arxan.com/" target="_blank">www.arxan.com</a></font><br>
</div></div></font></div><div>
<div style=""><font color="#a9a9a9" size="2" face="'Times New Roman'"><br></font><br></div>
</div>
<br></div><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu/" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br>
</blockquote></div><br></div></div></div></body></html>