[PowerPC] Remove redundant CRSET/CRUNSET in custom lowering of known CR bit spills
authorYi-Hong Lyu <Yi-Hong.Lyu@ibm.com>
Thu, 12 Sep 2019 06:49:02 +0000 (06:49 +0000)
committerYi-Hong Lyu <Yi-Hong.Lyu@ibm.com>
Fri, 8 Nov 2019 15:32:31 +0000 (15:32 +0000)
commita3db9c08ebdf1f39ed89f4a7afa09fc153cf98c5
tree285bb4f1cfea51ba911e3e18d5aa370a6dae62e9
parent9ee76ab37f1efa91432ec4efcba05819ccaeb2b1
[PowerPC] Remove redundant CRSET/CRUNSET in custom lowering of known CR bit spills

We lower known CR bit spills (CRSET/CRUNSET) to load and spill the known value
but forgot to remove the redundant spills.

e.g., This sequence was used to spill a CRUNSET:
    crclr   4*cr5+lt
    mfocrf  r3,4
    rlwinm  r3,r3,20,0,0
    stw     r3,132(r1)

Custom lowering of known CR bit spills lower it to:
    crxor 4*cr5+lt, 4*cr5+lt, 4*cr5+lt
    li  r3,0
    stw r3,132(r1)

crxor is redundant if there is no use of 4*cr5+lt so we should remove it

Differential revision: https://reviews.llvm.org/D67722
llvm/lib/Target/PowerPC/PPCInstrInfo.td
llvm/lib/Target/PowerPC/PPCPreEmitPeephole.cpp
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
llvm/test/CodeGen/PowerPC/knowCRBitSpill.ll