PPC NCG: Improve pointer de-tagging code
authorPeter Trommler <ptrommler@acm.org>
Fri, 29 Apr 2016 17:45:10 +0000 (17:45 +0000)
committerAustin Seipp <austin@well-typed.com>
Fri, 29 Apr 2016 17:45:31 +0000 (17:45 +0000)
commitb725fe0a8d2a2ee3e6d95bb0ec345ee532381ee2
tree0295b03a07ba9cc7b0fc43d153f3097ad566c20b
parent00053ee6f450c4503c25ed9ba33089d991e2a04b
PPC NCG: Improve pointer de-tagging code

Generate a clrr[wd]i instruction to clear the tag bits in a pointer.
This saves one instruction and one temporary register.

Optimize signed comparison with zero after andi. operation This saves
one instruction when comparing a pointer tag with zero.

This reduces code size by 0.6 % in all nofib benchmarks.

Test Plan: validate on AIX and 32-bit Linux

Reviewed By: erikd, hvr

Differential Revision: https://phabricator.haskell.org/D2093
compiler/nativeGen/PPC/CodeGen.hs
compiler/nativeGen/PPC/Instr.hs
compiler/nativeGen/PPC/Ppr.hs