diff options
author | Evan Cheng <evan.cheng@apple.com> | 2010-12-15 22:57:36 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2010-12-15 22:57:36 +0000 |
commit | be69d8e2f3eb1be1cf7f3cfa9a2b8adbd0986cae (patch) | |
tree | f48b006306e042d22975c3039faa18cab1d6d9ab /llvm/lib | |
parent | 8e74416cd50e0a116dbb89f6e5283fe48b140a45 (diff) | |
download | bcm5719-llvm-be69d8e2f3eb1be1cf7f3cfa9a2b8adbd0986cae.tar.gz bcm5719-llvm-be69d8e2f3eb1be1cf7f3cfa9a2b8adbd0986cae.zip |
Only rr forms of ADD*_DB are commutable.
llvm-svn: 121908
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrCompiler.td | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86InstrCompiler.td b/llvm/lib/Target/X86/X86InstrCompiler.td index 4773745370e..2b1ea9c6851 100644 --- a/llvm/lib/Target/X86/X86InstrCompiler.td +++ b/llvm/lib/Target/X86/X86InstrCompiler.td @@ -1038,8 +1038,9 @@ def or_is_add : PatFrag<(ops node:$lhs, node:$rhs), (or node:$lhs, node:$rhs),[{ // (or x1, x2) -> (add x1, x2) if two operands are known not to share bits. let AddedComplexity = 5 in { // Try this before the selecting to OR -let isCommutable = 1, isConvertibleToThreeAddress = 1, +let isConvertibleToThreeAddress = 1, Constraints = "$src1 = $dst", Defs = [EFLAGS] in { +let isCommutable = 1 in { def ADD16rr_DB : I<0, Pseudo, (outs GR16:$dst), (ins GR16:$src1, GR16:$src2), "", // orw/addw REG, REG [(set GR16:$dst, (or_is_add GR16:$src1, GR16:$src2))]>; @@ -1049,6 +1050,7 @@ def ADD32rr_DB : I<0, Pseudo, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2), def ADD64rr_DB : I<0, Pseudo, (outs GR64:$dst), (ins GR64:$src1, GR64:$src2), "", // orq/addq REG, REG [(set GR64:$dst, (or_is_add GR64:$src1, GR64:$src2))]>; +} // isCommutable // NOTE: These are order specific, we want the ri8 forms to be listed // first so that they are slightly preferred to the ri forms. |