Changes in directory llvm/lib/Target/X86:
X86InstrInfo.td updated: 1.211 -> 1.212 --- Log message: Two peepholes: (or (x >> c) | (y << (32 - c))) ==> (shrd x, y, c) (or (x << c) | (y >> (32 - c))) ==> (shld x, y, c) --- Diffs of the changes: (+10 -0) X86InstrInfo.td | 10 ++++++++++ 1 files changed, 10 insertions(+) Index: llvm/lib/Target/X86/X86InstrInfo.td diff -u llvm/lib/Target/X86/X86InstrInfo.td:1.211 llvm/lib/Target/X86/X86InstrInfo.td:1.212 --- llvm/lib/Target/X86/X86InstrInfo.td:1.211 Tue Jan 17 01:02:46 2006 +++ llvm/lib/Target/X86/X86InstrInfo.td Wed Jan 18 19:56:29 2006 @@ -3066,3 +3066,13 @@ def : Pat<(shl R8 :$src1, (i8 1)), (ADD8rr R8 :$src1, R8 :$src1)>; def : Pat<(shl R16:$src1, (i8 1)), (ADD16rr R16:$src1, R16:$src1)>; def : Pat<(shl R32:$src1, (i8 1)), (ADD32rr R32:$src1, R32:$src1)>; + +// (or (x >> c) | (y << (32 - c))) ==> (shrd x, y, c) +def : Pat<(or (srl R32:$src1, CL:$amt), + (shl R32:$src2, (sub 32, CL:$amt))), + (SHRD32rrCL R32:$src1, R32:$src2)>; + +// (or (x << c) | (y >> (32 - c))) ==> (shld x, y, c) +def : Pat<(or (shl R32:$src1, CL:$amt), + (srl R32:$src2, (sub 32, CL:$amt))), + (SHLD32rrCL R32:$src1, R32:$src2)>; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits