[llvm-commits] CVS: llvm/lib/Target/X86/X86InstrInfo.td

Evan Cheng evan.cheng at apple.com
Wed Jan 18 17:56:40 PST 2006



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)>;






More information about the llvm-commits mailing list