diff options
| author | Richard Osborne <richard@xmos.com> | 2009-10-08 15:38:17 +0000 | 
|---|---|---|
| committer | Richard Osborne <richard@xmos.com> | 2009-10-08 15:38:17 +0000 | 
| commit | 4e13316bf90d9a9c39452b229d567700edc8cb9a (patch) | |
| tree | d704712a6eb9f3b2f30228114152f24c9aee4a03 /llvm/lib | |
| parent | 1e9b25caf4e0a8115e6564c3ca7dc7285c3b21f3 (diff) | |
| download | bcm5719-llvm-4e13316bf90d9a9c39452b229d567700edc8cb9a.tar.gz bcm5719-llvm-4e13316bf90d9a9c39452b229d567700edc8cb9a.zip  | |
Add some peepholes for signed comparisons using ashr X, X, 32.
llvm-svn: 83549
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/XCore/XCoreInstrInfo.td | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/Target/XCore/XCoreInstrInfo.td b/llvm/lib/Target/XCore/XCoreInstrInfo.td index d75cf9b8b8a..4b9ea7a4917 100644 --- a/llvm/lib/Target/XCore/XCoreInstrInfo.td +++ b/llvm/lib/Target/XCore/XCoreInstrInfo.td @@ -975,5 +975,21 @@ def : Pat<(mul GRRegs:$src, -3),  def : Pat<(sra GRRegs:$src, 31),            (ASHR_l2rus GRRegs:$src, 32)>; +def : Pat<(brcond (setlt GRRegs:$lhs, 0), bb:$dst), +          (BRFT_lru6 (ASHR_l2rus GRRegs:$lhs, 32), bb:$dst)>; + +// setge X, 0 is canonicalized to setgt X, -1 +def : Pat<(brcond (setgt GRRegs:$lhs, -1), bb:$dst), +          (BRFF_lru6 (ASHR_l2rus GRRegs:$lhs, 32), bb:$dst)>; + +def : Pat<(select (setlt GRRegs:$lhs, 0), GRRegs:$T, GRRegs:$F), +          (SELECT_CC (ASHR_l2rus GRRegs:$lhs, 32), GRRegs:$T, GRRegs:$F)>; + +def : Pat<(select (setgt GRRegs:$lhs, -1), GRRegs:$T, GRRegs:$F), +          (SELECT_CC (ASHR_l2rus GRRegs:$lhs, 32), GRRegs:$F, GRRegs:$T)>; + +def : Pat<(setgt GRRegs:$lhs, -1), +          (EQ_2rus (ASHR_l2rus GRRegs:$lhs, 32), 0)>; +  def : Pat<(sra (shl GRRegs:$src, immBpwSubBitp:$imm), immBpwSubBitp:$imm),            (SEXT_rus GRRegs:$src, (bpwsub_xform immBpwSubBitp:$imm))>;  | 

