<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace;font-size:small"><span style="font-family:Arial,Helvetica,sans-serif">On Fri, Feb 28, 2020 at 6:17 AM Yonghae Kim via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:</span><br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Is there any reasons that the only LLVM AArch64 uses a stack pointer?<br></blockquote><div class="gmail_default" style="font-family:monospace,monospace;font-size:small"><br></div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small">Using the stack pointer frees up the register, which would have been used as a frame pointer,</div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small">for general allocation.</div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small"><br></div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small">When accessing the stack frame, offsets from SP are positive, whereas offsets from a frame</div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small">pointer are negative.</div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small">When you use SP, you can use LDR with a scaled positive offset, with range from 0</div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small">up to 16380 (or 32760 for 64-bit accesses).</div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small">If you use FP, you would use, LDUR with a negative offset, with a range just [-256, 255].</div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small"><br></div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small">What downsides of using SP do you see?</div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small"><br></div><div class="gmail_default" style="font-family:monospace,monospace;font-size:small">~chill</div></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">Compiler scrub, Arm<br></div></div></div>