diff options
author | Chris Lattner <sabre@nondot.org> | 2007-05-17 06:35:11 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-05-17 06:35:11 +0000 |
commit | 13f4bf5c5ef1299e29a404c99dd4b7510bd684b8 (patch) | |
tree | 01f47d051632e49b8e81083d9a562b0a19cbac18 | |
parent | fffdf105669c629333ce928bbf055cdf0815d1c8 (diff) | |
download | bcm5719-llvm-13f4bf5c5ef1299e29a404c99dd4b7510bd684b8.tar.gz bcm5719-llvm-13f4bf5c5ef1299e29a404c99dd4b7510bd684b8.zip |
add support for 128-bit integer add/sub
llvm-svn: 37154
-rw-r--r-- | llvm/lib/Target/X86/X86InstrX86-64.td | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrX86-64.td b/llvm/lib/Target/X86/X86InstrX86-64.td index 530d059ff12..6807a004382 100644 --- a/llvm/lib/Target/X86/X86InstrX86-64.td +++ b/llvm/lib/Target/X86/X86InstrX86-64.td @@ -1104,6 +1104,26 @@ def : Pat<(store (or (shl (loadi64 addr:$dst), CL:$amt), (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 //===----------------------------------------------------------------------===// |