[PowerPC] Try to fold sqrt/sdiv test results with the branch.
authorEsme-Yi <esme.yi@ibm.com>
Thu, 14 Jan 2021 02:15:19 +0000 (02:15 +0000)
committerEsme-Yi <esme.yi@ibm.com>
Thu, 14 Jan 2021 02:15:19 +0000 (02:15 +0000)
commitff40fb07ad6309131c2448ca00572a078c7a2d59
tree1cd4ee5b2a98fa4d4428e56388ff31b130b0330a
parent336ab2d51dfdd5ca09c2a9c506453db4fe653584
[PowerPC] Try to fold sqrt/sdiv test results with the branch.

Summary: The patch tries to fold sqrt/sdiv test node, i.g FTSQRT, XVTDIVDP, and the branch, i.e br_cc if they meet these patterns:
(br_cc seteq, (truncateToi1 SWTestOp), 0) -> (BCC PRED_NU, SWTestOp)
(br_cc seteq, (and SWTestOp, 2), 0) -> (BCC PRED_NE, SWTestOp)
(br_cc seteq, (and SWTestOp, 4), 0) -> (BCC PRED_LE, SWTestOp)
(br_cc seteq, (and SWTestOp, 8), 0) -> (BCC PRED_GE, SWTestOp)
(br_cc setne, (truncateToi1 SWTestOp), 0) -> (BCC PRED_UN, SWTestOp)
(br_cc setne, (and SWTestOp, 2), 0) -> (BCC PRED_EQ, SWTestOp)
(br_cc setne, (and SWTestOp, 4), 0) -> (BCC PRED_GT, SWTestOp)
(br_cc setne, (and SWTestOp, 8), 0) -> (BCC PRED_LT, SWTestOp)

Reviewed By: steven.zhang

Differential Revision: https://reviews.llvm.org/D94054
llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
llvm/test/CodeGen/PowerPC/fold_swtest_br.ll [new file with mode: 0644]