mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-16 00:17:32 +00:00
Only rr forms of ADD*_DB are commutable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121908 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c42a7754bb
commit
f735f2da6e
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user