From 395d76c5a3614b2d5f180182f4c897d76ece05ec Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Tue, 11 Oct 2011 21:40:01 +0000 Subject: [PATCH] Remove redundancy in setcc patterns using multiclass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141715 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/Mips64InstrInfo.td | 29 +++------------ lib/Target/Mips/MipsInstrInfo.td | 58 +++++++++++++++++++----------- 2 files changed, 43 insertions(+), 44 deletions(-) diff --git a/lib/Target/Mips/Mips64InstrInfo.td b/lib/Target/Mips/Mips64InstrInfo.td index 495b969ddcc..402c492e9d8 100644 --- a/lib/Target/Mips/Mips64InstrInfo.td +++ b/lib/Target/Mips/Mips64InstrInfo.td @@ -241,27 +241,8 @@ defm : BrcondPats; // setcc patterns -def : Pat<(seteq CPU64Regs:$lhs, CPU64Regs:$rhs), - (SLTiu64 (DXOR CPU64Regs:$lhs, CPU64Regs:$rhs), 1)>; -def : Pat<(setne CPU64Regs:$lhs, CPU64Regs:$rhs), - (SLTu64 ZERO_64, (DXOR CPU64Regs:$lhs, CPU64Regs:$rhs))>; - -def : Pat<(setle CPU64Regs:$lhs, CPU64Regs:$rhs), - (XORi (SLT64 CPU64Regs:$rhs, CPU64Regs:$lhs), 1)>; -def : Pat<(setule CPU64Regs:$lhs, CPU64Regs:$rhs), - (XORi (SLTu64 CPU64Regs:$rhs, CPU64Regs:$lhs), 1)>; - -def : Pat<(setgt CPU64Regs:$lhs, CPU64Regs:$rhs), - (SLT64 CPU64Regs:$rhs, CPU64Regs:$lhs)>; -def : Pat<(setugt CPU64Regs:$lhs, CPU64Regs:$rhs), - (SLTu64 CPU64Regs:$rhs, CPU64Regs:$lhs)>; - -def : Pat<(setge CPU64Regs:$lhs, CPU64Regs:$rhs), - (XORi (SLT64 CPU64Regs:$lhs, CPU64Regs:$rhs), 1)>; -def : Pat<(setuge CPU64Regs:$lhs, CPU64Regs:$rhs), - (XORi (SLTu64 CPU64Regs:$lhs, CPU64Regs:$rhs), 1)>; - -def : Pat<(setge CPU64Regs:$lhs, immSExt16:$rhs), - (XORi (SLTi64 CPU64Regs:$lhs, immSExt16:$rhs), 1)>; -def : Pat<(setuge CPU64Regs:$lhs, immSExt16:$rhs), - (XORi (SLTiu64 CPU64Regs:$lhs, immSExt16:$rhs), 1)>; +defm : SeteqPats; +defm : SetlePats; +defm : SetgtPats; +defm : SetgePats; +defm : SetgeImmPats; diff --git a/lib/Target/Mips/MipsInstrInfo.td b/lib/Target/Mips/MipsInstrInfo.td index 2c1893044b0..702b3768346 100644 --- a/lib/Target/Mips/MipsInstrInfo.td +++ b/lib/Target/Mips/MipsInstrInfo.td @@ -953,30 +953,48 @@ defm : MovzPats; defm : MovnPats; // setcc patterns -def : Pat<(seteq CPURegs:$lhs, CPURegs:$rhs), - (SLTiu (XOR CPURegs:$lhs, CPURegs:$rhs), 1)>; -def : Pat<(setne CPURegs:$lhs, CPURegs:$rhs), - (SLTu ZERO, (XOR CPURegs:$lhs, CPURegs:$rhs))>; +multiclass SeteqPats { + def : Pat<(seteq RC:$lhs, RC:$rhs), + (SLTiuOp (XOROp RC:$lhs, RC:$rhs), 1)>; + def : Pat<(setne RC:$lhs, RC:$rhs), + (SLTuOp ZEROReg, (XOROp RC:$lhs, RC:$rhs))>; +} -def : Pat<(setle CPURegs:$lhs, CPURegs:$rhs), - (XORi (SLT CPURegs:$rhs, CPURegs:$lhs), 1)>; -def : Pat<(setule CPURegs:$lhs, CPURegs:$rhs), - (XORi (SLTu CPURegs:$rhs, CPURegs:$lhs), 1)>; +multiclass SetlePats { + def : Pat<(setle RC:$lhs, RC:$rhs), + (XORi (SLTOp RC:$rhs, RC:$lhs), 1)>; + def : Pat<(setule RC:$lhs, RC:$rhs), + (XORi (SLTuOp RC:$rhs, RC:$lhs), 1)>; +} -def : Pat<(setgt CPURegs:$lhs, CPURegs:$rhs), - (SLT CPURegs:$rhs, CPURegs:$lhs)>; -def : Pat<(setugt CPURegs:$lhs, CPURegs:$rhs), - (SLTu CPURegs:$rhs, CPURegs:$lhs)>; +multiclass SetgtPats { + def : Pat<(setgt RC:$lhs, RC:$rhs), + (SLTOp RC:$rhs, RC:$lhs)>; + def : Pat<(setugt RC:$lhs, RC:$rhs), + (SLTuOp RC:$rhs, RC:$lhs)>; +} -def : Pat<(setge CPURegs:$lhs, CPURegs:$rhs), - (XORi (SLT CPURegs:$lhs, CPURegs:$rhs), 1)>; -def : Pat<(setuge CPURegs:$lhs, CPURegs:$rhs), - (XORi (SLTu CPURegs:$lhs, CPURegs:$rhs), 1)>; +multiclass SetgePats { + def : Pat<(setge RC:$lhs, RC:$rhs), + (XORi (SLTOp RC:$lhs, RC:$rhs), 1)>; + def : Pat<(setuge RC:$lhs, RC:$rhs), + (XORi (SLTuOp RC:$lhs, RC:$rhs), 1)>; +} -def : Pat<(setge CPURegs:$lhs, immSExt16:$rhs), - (XORi (SLTi CPURegs:$lhs, immSExt16:$rhs), 1)>; -def : Pat<(setuge CPURegs:$lhs, immSExt16:$rhs), - (XORi (SLTiu CPURegs:$lhs, immSExt16:$rhs), 1)>; +multiclass SetgeImmPats { + def : Pat<(setge RC:$lhs, immSExt16:$rhs), + (XORi (SLTiOp RC:$lhs, immSExt16:$rhs), 1)>; + def : Pat<(setuge RC:$lhs, immSExt16:$rhs), + (XORi (SLTiuOp RC:$lhs, immSExt16:$rhs), 1)>; +} + +defm : SeteqPats; +defm : SetlePats; +defm : SetgtPats; +defm : SetgePats; +defm : SetgeImmPats; // select MipsDynAlloc def : Pat<(MipsDynAlloc addr:$f), (DynAlloc addr:$f)>;