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

Chris Lattner sabre at nondot.org
Wed May 16 23:35:30 PDT 2007



Changes in directory llvm/lib/Target/X86:

X86InstrX86-64.td updated: 1.15 -> 1.16
---
Log message:

add support for 128-bit integer add/sub


---
Diffs of the changes:  (+20 -0)

 X86InstrX86-64.td |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+)


Index: llvm/lib/Target/X86/X86InstrX86-64.td
diff -u llvm/lib/Target/X86/X86InstrX86-64.td:1.15 llvm/lib/Target/X86/X86InstrX86-64.td:1.16
--- llvm/lib/Target/X86/X86InstrX86-64.td:1.15	Thu Apr 26 16:06:48 2007
+++ llvm/lib/Target/X86/X86InstrX86-64.td	Thu May 17 01:35:11 2007
@@ -1104,6 +1104,26 @@
                      (srl GR64:$src2, (sub 64, CL:$amt))), addr:$dst),
           (SHLD64mrCL addr:$dst, GR64:$src2)>;
 
+// X86 specific add which produces a flag.
+def : Pat<(addc GR64:$src1, GR64:$src2),
+          (ADD64rr GR64:$src1, GR64:$src2)>;
+def : Pat<(addc GR64:$src1, (load addr:$src2)),
+          (ADD64rm GR64:$src1, addr:$src2)>;
+def : Pat<(addc GR64:$src1, i64immSExt32:$src2),
+          (ADD64ri32 GR64:$src1, imm:$src2)>;
+def : Pat<(addc GR64:$src1, i64immSExt8:$src2),
+          (ADD64ri8 GR64:$src1, i64immSExt8:$src2)>;
+
+def : Pat<(subc GR64:$src1, GR64:$src2),
+          (SUB64rr GR64:$src1, GR64:$src2)>;
+def : Pat<(subc GR64:$src1, (load addr:$src2)),
+          (SUB64rm GR64:$src1, addr:$src2)>;
+def : Pat<(subc GR64:$src1, imm:$src2),
+          (SUB64ri32 GR64:$src1, i64immSExt32:$src2)>;
+def : Pat<(subc GR64:$src1, i64immSExt8:$src2),
+          (SUB64ri8 GR64:$src1, i64immSExt8:$src2)>;
+
+
 //===----------------------------------------------------------------------===//
 // X86-64 SSE Instructions
 //===----------------------------------------------------------------------===//






More information about the llvm-commits mailing list