Commit 8e4fbb05 authored by zhengxing.li's avatar zhengxing.li Committed by Commit bot

X87: [wasm] Refactoring pair-shift code in the instruction selector of arm and ia32.

  port f954934d (r35140)

  original commit message:

BUG=

Review URL: https://codereview.chromium.org/1886243002

Cr-Commit-Position: refs/heads/master@{#35476}
parent 7effb4f7
...@@ -599,8 +599,9 @@ void InstructionSelector::VisitInt32PairMul(Node* node) { ...@@ -599,8 +599,9 @@ void InstructionSelector::VisitInt32PairMul(Node* node) {
Emit(kX87MulPair, 2, outputs, 4, inputs, 1, temps); Emit(kX87MulPair, 2, outputs, 4, inputs, 1, temps);
} }
void InstructionSelector::VisitWord32PairShl(Node* node) { void VisitWord32PairShift(InstructionSelector* selector, InstructionCode opcode,
X87OperandGenerator g(this); Node* node) {
X87OperandGenerator g(selector);
Node* shift = node->InputAt(2); Node* shift = node->InputAt(2);
InstructionOperand shift_operand; InstructionOperand shift_operand;
...@@ -617,49 +618,19 @@ void InstructionSelector::VisitWord32PairShl(Node* node) { ...@@ -617,49 +618,19 @@ void InstructionSelector::VisitWord32PairShl(Node* node) {
g.DefineAsFixed(node, eax), g.DefineAsFixed(node, eax),
g.DefineAsFixed(NodeProperties::FindProjection(node, 1), edx)}; g.DefineAsFixed(NodeProperties::FindProjection(node, 1), edx)};
Emit(kX87ShlPair, 2, outputs, 3, inputs); selector->Emit(opcode, 2, outputs, 3, inputs);
} }
void InstructionSelector::VisitWord32PairShr(Node* node) { void InstructionSelector::VisitWord32PairShl(Node* node) {
X87OperandGenerator g(this); VisitWord32PairShift(this, kX87ShlPair, node);
}
Node* shift = node->InputAt(2);
InstructionOperand shift_operand;
if (g.CanBeImmediate(shift)) {
shift_operand = g.UseImmediate(shift);
} else {
shift_operand = g.UseFixed(shift, ecx);
}
InstructionOperand inputs[] = {g.UseFixed(node->InputAt(0), eax),
g.UseFixed(node->InputAt(1), edx),
shift_operand};
InstructionOperand outputs[] = {
g.DefineAsFixed(node, eax),
g.DefineAsFixed(NodeProperties::FindProjection(node, 1), edx)};
Emit(kX87ShrPair, 2, outputs, 3, inputs); void InstructionSelector::VisitWord32PairShr(Node* node) {
VisitWord32PairShift(this, kX87ShrPair, node);
} }
void InstructionSelector::VisitWord32PairSar(Node* node) { void InstructionSelector::VisitWord32PairSar(Node* node) {
X87OperandGenerator g(this); VisitWord32PairShift(this, kX87SarPair, node);
Node* shift = node->InputAt(2);
InstructionOperand shift_operand;
if (g.CanBeImmediate(shift)) {
shift_operand = g.UseImmediate(shift);
} else {
shift_operand = g.UseFixed(shift, ecx);
}
InstructionOperand inputs[] = {g.UseFixed(node->InputAt(0), eax),
g.UseFixed(node->InputAt(1), edx),
shift_operand};
InstructionOperand outputs[] = {
g.DefineAsFixed(node, eax),
g.DefineAsFixed(NodeProperties::FindProjection(node, 1), edx)};
Emit(kX87SarPair, 2, outputs, 3, inputs);
} }
void InstructionSelector::VisitWord32Ror(Node* node) { void InstructionSelector::VisitWord32Ror(Node* node) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment