summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/RISCV
diff options
context:
space:
mode:
authorAlex Bradbury <asb@lowrisc.org>2018-11-09 14:47:36 +0000
committerAlex Bradbury <asb@lowrisc.org>2018-11-09 14:47:36 +0000
commit1cc2d0b9fb9fc966fab5fb0575479aa888b2ed57 (patch)
tree3cc970578ee0cbf2c068f2215465bf9e92217cf8 /llvm/lib/Target/RISCV
parenta9da1de5f46691284d2bb7973e44c6b34b8c2bc5 (diff)
downloadbcm5719-llvm-1cc2d0b9fb9fc966fab5fb0575479aa888b2ed57.tar.gz
bcm5719-llvm-1cc2d0b9fb9fc966fab5fb0575479aa888b2ed57.zip
[RISCV] Avoid unnecessary XOR for seteq/setne 0
Differential Revision: https://reviews.llvm.org/D53492 Patch by James Clarke. llvm-svn: 346497
Diffstat (limited to 'llvm/lib/Target/RISCV')
-rw-r--r--llvm/lib/Target/RISCV/RISCVInstrInfo.td2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.td b/llvm/lib/Target/RISCV/RISCVInstrInfo.td
index 631a1f7deca..1150af5a111 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfo.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.td
@@ -685,7 +685,9 @@ def : PatGprSimm12<setult, SLTIU>;
// Define pattern expansions for setcc operations that aren't directly
// handled by a RISC-V instruction.
+def : Pat<(seteq GPR:$rs1, 0), (SLTIU GPR:$rs1, 1)>;
def : Pat<(seteq GPR:$rs1, GPR:$rs2), (SLTIU (XOR GPR:$rs1, GPR:$rs2), 1)>;
+def : Pat<(setne GPR:$rs1, 0), (SLTU X0, GPR:$rs1)>;
def : Pat<(setne GPR:$rs1, GPR:$rs2), (SLTU X0, (XOR GPR:$rs1, GPR:$rs2))>;
def : Pat<(setugt GPR:$rs1, GPR:$rs2), (SLTU GPR:$rs2, GPR:$rs1)>;
def : Pat<(setuge GPR:$rs1, GPR:$rs2), (XORI (SLTU GPR:$rs1, GPR:$rs2), 1)>;
OpenPOWER on IntegriCloud