Dear all,<div><br></div><div>This is part of a series of patches for the PowerPC backend to improve support for Freescale processors. </div><div><br></div><div>Please review and commit if this is OK - I don't have commit access. </div>
<div>


<br></div><div>Thanks!</div><div>Tobias</div><div><br></div><div>Description of this patch:</div><div><br></div><div><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">The 32-bit ABI requires CR bit 6 to be set if the call has fp arguments and unset if it doesn't. The solution up to now was to insert a MachineNode to set/unset the CR bit, which produces a CR vreg. This vreg was then copied into CR bit 6. When the register allocator saw a bunch of these in the same function, it allocated the set/unset CR bit in some random CR register (1 extra instruction) and then emitted CR moves before every vararg function call, rather than just setting and unsetting CR bit 6 directly before every vararg function call. This patch instead insert a PPCcrset/PPCcrunset instruction which are then matched by a dedicated instruction pattern.</span></div>


<div><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif"><br></span></div>