Home | History | Annotate | Download | only in arm64

Lines Matching refs:left

14   kArithmeticImm,  // 12 bit unsigned immediate shifted left 0 or 12 bits
212 *right_op = g->UseRegister(mright.left().node());
219 if (selector->CanCover(mright.node(), mright.left().node()) &&
220 mright.left().IsWord32Shl()) {
221 Int32BinopMatcher mleft_of_right(mright.left().node());
226 *right_op = g->UseRegister(mleft_of_right.left().node());
243 Node* left = index->InputAt(0);
251 *index_op = g->UseRegister(left);
364 inputs[input_count++] = g.UseRegister(m_shift.left().node());
371 inputs[input_count++] = g.UseRegister(m_shift.left().node());
423 g.UseRegister(m.left().node()),
433 // multiplication to addition with left shift: x + (x << k).
755 if ((m->left().IsWord32Xor() || m->left().IsWord64Xor()) && left_can_cover) {
756 Matcher mleft(m->left().node());
761 g.UseRegister(mleft.left().node()));
773 g.UseRegister(m->left().node()),
774 g.UseRegister(mright.left().node()));
781 g.UseRegister(m->left().node()));
784 g.UseRegister(m->left().node()));
794 if (m.left().IsWord32Shr() && CanCover(node, m.left().node()) &&
805 Int32BinopMatcher mleft(m.left().node());
817 g.UseRegister(mleft.left().node()),
826 this, node, &m, kArm64And32, CanCover(node, m.left().node()),
834 if (m.left().IsWord64Shr() && CanCover(node, m.left().node()) &&
845 Int64BinopMatcher mleft(m.left().node());
857 g.UseRegister(mleft.left().node()),
866 this, node, &m, kArm64And, CanCover(node, m.left().node()),
874 this, node, &m, kArm64Or32, CanCover(node, m.left().node()),
882 this, node, &m, kArm64Or, CanCover(node, m.left().node()),
890 this, node, &m, kArm64Eor32, CanCover(node, m.left().node()),
898 this, node, &m, kArm64Eor, CanCover(node, m.left().node()),
905 if (m.left().IsWord32And() && CanCover(node, m.left().node()) &&
908 Int32BinopMatcher mleft(m.left().node());
922 g.UseRegister(mleft.left().node()),
929 g.UseRegister(mleft.left().node()),
943 if ((m.left().IsChangeInt32ToInt64() || m.left().IsChangeUint32ToUint64()) &&
948 g.UseRegister(m.left().node()->InputAt(0)),
961 if (selector->CanCover(node, m.left().node()) && m.left().IsWord32Shl()) {
964 Int32BinopMatcher mleft(m.left().node());
974 g.UseRegister(mleft.left().node()), g.TempImmediate(0),
987 if (m.left().IsWord32And() && m.right().HasValue()) {
989 Int32BinopMatcher mleft(m.left().node());
1000 g.UseRegister(mleft.left().node()),
1010 if (m.left().IsUint32MulHigh() && m.right().HasValue() &&
1015 Node* left = m.left().node();
1018 Emit(kArm64Umull, smull_operand, g.UseRegister(left->InputAt(0)),
1019 g.UseRegister(left->InputAt(1)));
1031 if (m.left().IsWord64And() && m.right().HasValue()) {
1033 Int64BinopMatcher mleft(m.left().node());
1044 g.UseRegister(mleft.left().node()),
1061 if (m.left().IsInt32MulHigh() && m.right().HasValue() &&
1066 Node* left = m.left().node();
1069 Emit(kArm64Smull, smull_operand, g.UseRegister(left->InputAt(0)),
1070 g.UseRegister(left->InputAt(1)));
1076 if (m.left().IsInt32Add() && m.right().HasValue() &&
1078 Node* add_node = m.left().node();
1080 if (madd_node.left().IsInt32MulHigh() &&
1081 CanCover(add_node, madd_node.left().node())) {
1083 // on the left of this Sar operation. We do it here, as the result of the
1087 Node* mul_node = madd_node.left().node();
1161 if (m.left().IsInt32Mul() && CanCover(node, m.left().node())) {
1162 Int32BinopMatcher mleft(m.left().node());
1166 g.UseRegister(mleft.left().node()),
1178 g.UseRegister(mright.left().node()),
1180 g.UseRegister(m.left().node()));
1192 if (m.left().IsInt64Mul() && CanCover(node, m.left().node())) {
1193 Int64BinopMatcher mleft(m.left().node());
1197 g.UseRegister(mleft.left().node()),
1209 g.UseRegister(mright.left().node()),
1211 g.UseRegister(m.left().node()));
1229 g.UseRegister(mright.left().node()),
1231 g.UseRegister(m.left().node()));
1250 g.UseRegister(mright.left().node()),
1252 g.UseRegister(m.left().node()));
1265 // First, try to reduce the multiplication to addition with left shift.
1270 g.DefineAsRegister(node), g.UseRegister(m.left().node()),
1271 g.UseRegister(m.left().node()), g.TempImmediate(shift));
1275 if (m.left().IsInt32Sub() && CanCover(node, m.left().node())) {
1276 Int32BinopMatcher mleft(m.left().node());
1279 if (mleft.left().Is(0)) {
1291 if (mright.left().Is(0)) {
1293 g.UseRegister(m.left().node()),
1307 // First, try to reduce the multiplication to addition with left shift.
1312 g.DefineAsRegister(node), g.UseRegister(m.left().node()),
1313 g.UseRegister(m.left().node()), g.TempImmediate(shift));
1317 if (m.left().IsInt64Sub() && CanCover(node, m.left().node())) {
1318 Int64BinopMatcher mleft(m.left().node());
1321 if (mleft.left().Is(0)) {
1333 if (mright.left().Is(0)) {
1334 Emit(kArm64Mneg, g.DefineAsRegister(node), g.UseRegister(m.left().node()),
1598 Emit(kArm64Lsr, g.DefineAsRegister(node), g.UseRegister(m.left().node()),
1669 if (m.left().IsMinusZero()) {
1675 if (mright0.left().IsMinusZero()) {
1872 InstructionOperand left, InstructionOperand right,
1877 selector->Emit(opcode, g.NoOutput(), left, right,
1880 selector->EmitDeoptimize(opcode, g.NoOutput(), left, right,
1884 selector->Emit(opcode, g.DefineAsRegister(cont->result()), left, right);
1894 Node* left = node->InputAt(0);
1897 // Match immediates on left or right side of comparison.
1899 VisitCompare(selector, opcode, g.UseRegister(left), g.UseImmediate(right),
1901 } else if (g.CanBeImmediate(left, immediate_mode)) {
1903 VisitCompare(selector, opcode, g.UseRegister(right), g.UseImmediate(left),
1906 VisitCompare(selector, opcode, g.UseRegister(left), g.UseRegister(right),
1921 if (msub.left().Is(0)) {
1932 if (can_cover) sub->ReplaceInput(1, msub.left().node());
1969 cont->Encode(kOpcode), g.NoOutput(), g.UseRegister(m.left().node()),
1983 VisitCompare(selector, kArm64Float32Cmp, g.UseRegister(m.left().node()),
1985 } else if (m.left().Is(0.0f)) {
1988 g.UseImmediate(m.left().node()), cont);
1990 VisitCompare(selector, kArm64Float32Cmp, g.UseRegister(m.left().node()),
2002 VisitCompare(selector, kArm64Float64Cmp, g.UseRegister(m.left().node()),
2004 } else if (m.left().Is(0.0)) {
2007 g.UseImmediate(m.left().node()), cont);
2009 VisitCompare(selector, kArm64Float64Cmp, g.UseRegister(m.left().node()),
2025 value = m.left().node();
2048 Node* const left = m.left().node();
2049 if (selector->CanCover(value, left) &&
2050 left->opcode() == IrOpcode::kWord64And) {
2054 selector, left, cont)) {
2057 return VisitWordCompare(selector, left, kArm64Tst, cont, true,
2063 g.UseRegister(left), g.Label(cont->true_block()),
2231 Node* const value = m.left().node();
2246 node->ReplaceInput(0, mequal.left().node());
2292 Node* const value = m.left().node();
2432 Node* left = node->InputAt(0);
2434 if (left->opcode() == IrOpcode::kFloat64InsertHighWord32 &&
2435 CanCover(node, left)) {
2436 Node* right_of_left = left->InputAt(1);
2444 g.UseRegister(left), g.UseRegister(right));
2450 Node* left = node->InputAt(0);
2452 if (left->opcode() == IrOpcode::kFloat64InsertLowWord32 &&
2453 CanCover(node, left)) {
2454 Node* right_of_left = left->InputAt(1);
2455 Emit(kArm64Bfi, g.DefineSameAsFirst(left), g.UseRegister(right_of_left),
2457 Emit(kArm64Float64MoveU64, g.DefineAsRegister(node), g.UseRegister(left));
2461 g.UseRegister(left), g.UseRegister(right));