<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">That would work.</div><div class=""><br class=""></div><div class="">Alternatively we could drop the super-reg being reserved as a hard rule and only recommend it. We could provide the verifier in a function that targets can optionally call, mips just wouldn’t do that then.</div><div class=""><br class=""></div><div class="">- Matthias</div><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 14, 2016, at 6:25 PM, Quentin Colombet <<a href="mailto:qcolombet@apple.com" class="">qcolombet@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">ARM has a similar problem and we solved it with “fancy” allocation order:<div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">commit 8927f6cd0f8d7614e8682a2da08f0a9769be9603</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Author: Tim Northover <<a href="mailto:tnorthover@apple.com" class="">tnorthover@apple.com</a>></span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Date:   Mon Aug 3 17:20:10 2015 +0000</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255); min-height: 13px;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""></span><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    ARM: prefer allocating VFP regs at stride 4 on Darwin.</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255); min-height: 13px;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    </span><br class="webkit-block-placeholder"></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    This is necessary for WatchOS support, where the compact unwind format assumes</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    this kind of layout. For now we only want this on Swift-like CPUs though, where</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    it's been the Xcode behaviour for ages. Also, since it can expand the prologue</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    we don't want it at -Oz.</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255); min-height: 13px;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    </span><br class="webkit-block-placeholder"></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">    git-svn-id: <a href="https://llvm.org/svn/llvm-project/llvm/trunk@243884" class="">https://llvm.org/svn/llvm-project/llvm/trunk@243884</a> 91177308-0d34-0410-b5e6-96231b3b80d8</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><br class=""></span></div><div class=""><blockquote type="cite" class=""><div class="">On Nov 14, 2016, at 6:15 PM, Matthias Braun <<a href="mailto:matze@braunis.de" class="">matze@braunis.de</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">MatzeB added a reviewer: sdardis.<br class="">MatzeB added a comment.<br class=""><br class="">These new rules break existing use in Mips :-(<br class=""><br class="">Mips has 32bit floatregs F0-F31, each pair forms a double reg (<a href="f0+https://reviews.llvm.org/F1=D0" class="">F0+https://reviews.llvm.org/F1=D0</a>, <a href="https://reviews.llvm.org/F2+https://reviews.llvm.org/F3=https://reviews.llvm.org/D1" class="">https://reviews.llvm.org/F2+https://reviews.llvm.org/F3=https://reviews.llvm.org/D1</a>, ...). There is an option in the mips backend that aims at disabling the odd F registers, so 32bit float values only end up in F0, <a href="https://reviews.llvm.org/F2" class="">https://reviews.llvm.org/F2</a>, <a href="https://reviews.llvm.org/F4" class="">https://reviews.llvm.org/F4</a>, ... In this case it is actually expected that the register allocator still assigns the D0-D15 as usual even though the would indirectly use <a href="https://reviews.llvm.org/F1,https://reviews.llvm.org/F3" class="">https://reviews.llvm.org/F1,https://reviews.llvm.org/F3</a>,...<br class=""><br class="">Is there another way to handle this in the mips target?<br class=""><br class=""><br class="">Repository:<br class="">  rL LLVM<br class=""><br class=""><a href="https://reviews.llvm.org/D26648" class="">https://reviews.llvm.org/D26648</a><br class=""><br class=""><br class=""><br class=""></div></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></body></html>