Home | History | Annotate | Download | only in arm64

Lines Matching refs:right

187     if (mright.right().Is(0xff) || mright.right().Is(0xffff)) {
188 int32_t mask = mright.right().Value();
200 if ((mright.right().Is(16) && mleft_of_right.right().Is(16)) ||
201 (mright.right().Is(24) && mleft_of_right.right().Is(24))) {
202 int32_t shift = mright.right().Value();
238 Node* right_node = m.right().node();
261 inputs[input_count++] = g.UseImmediate(m_shift.right().node());
268 inputs[input_count++] = g.UseImmediate(m_shift.right().node());
311 if (m.right().HasValue() && (m.right().Value() < 0) &&
312 g.CanBeImmediate(-m.right().Value(), kArithmeticImm)) {
315 g.TempImmediate(static_cast<int32_t>(-m.right().Value())));
328 if (m->right().HasValue() && m->right().Value() >= 3) {
329 uint64_t value_minus_one = m->right().Value() - 1;
554 // Map instruction to equivalent operation with inverted right input.
582 if (mleft.right().Is(-1)) {
583 // TODO(all): support shifted operand on right.
585 g.UseRegister(m->right().node()),
592 if ((m->right().IsWord32Xor() || m->right().IsWord64Xor()) &&
594 Matcher mright(m->right().node());
595 if (mright.right().Is(-1)) {
596 // TODO(all): support shifted operand on right.
604 if (m->IsWord32Xor() && m->right().Is(-1)) {
607 } else if (m->IsWord64Xor() && m->right().Is(-1)) {
620 m.right().HasValue()) {
621 uint32_t mask = m.right().Value();
631 if (mleft.right().HasValue()) {
633 uint32_t lsb = mleft.right().Value() & 0x1f;
643 g.UseImmediateOrTemp(mleft.right().node(), lsb),
652 CanCover(node, m.right().node()), kLogical32Imm);
660 m.right().HasValue()) {
661 uint64_t mask = m.right().Value();
671 if (mleft.right().HasValue()) {
673 uint32_t lsb = static_cast<uint32_t>(mleft.right().Value() & 0x3f);
683 g.UseImmediateOrTemp(mleft.right().node(), lsb),
692 CanCover(node, m.right().node()), kLogical64Imm);
700 CanCover(node, m.right().node()), kLogical32Imm);
708 CanCover(node, m.right().node()), kLogical64Imm);
716 CanCover(node, m.right().node()), kLogical32Imm);
724 CanCover(node, m.right().node()), kLogical64Imm);
731 m.right().IsInRange(1, 31)) {
734 if (mleft.right().HasValue()) {
735 uint32_t mask = mleft.right().Value();
739 uint32_t shift = m.right().Value();
748 g.UseImmediate(m.right().node()));
755 g.UseImmediate(m.right().node()), g.TempImmediate(mask_width));
769 m.right().IsInRange(32, 63)) {
774 g.UseImmediate(m.right().node()));
790 if (mleft.right().HasValue() && m.right().HasValue() &&
791 (mleft.right().Value() & 0x1f) == (m.right().Value() & 0x1f)) {
795 int right_val = m.right().Value() & 0x1f;
812 if (m.left().IsWord32And() && m.right().HasValue()) {
813 uint32_t lsb = m.right().Value() & 0x1f;
815 if (mleft.right().HasValue()) {
818 uint32_t mask = (mleft.right().Value() >> lsb) << lsb;
826 g.UseImmediateOrTemp(m.right().node(), lsb),
835 if (m.left().IsUint32MulHigh() && m.right().HasValue() &&
841 int shift = m.right().Value() & 0x1f;
856 if (m.left().IsWord64And() && m.right().HasValue()) {
857 uint32_t lsb = m.right().Value() & 0x3f;
859 if (mleft.right().HasValue()) {
862 uint64_t mask = (mleft.right().Value() >> lsb) << lsb;
870 g.UseImmediateOrTemp(m.right().node(), lsb),
886 if (m.left().IsInt32MulHigh() && m.right().HasValue() &&
892 int shift = m.right().Value() & 0x1f;
901 if (m.left().IsInt32Add() && m.right().HasValue() &&
982 g.UseRegister(mleft.right().node()),
983 g.UseRegister(m.right().node()));
988 if (m.right().IsInt32Mul() && CanCover(node, m.right().node())) {
989 Int32BinopMatcher mright(m.right().node());
994 g.UseRegister(mright.right().node()),
1013 g.UseRegister(mleft.right().node()),
1014 g.UseRegister(m.right().node()));
1019 if (m.right().IsInt64Mul() && CanCover(node, m.right().node())) {
1020 Int64BinopMatcher mright(m.right().node());
1025 g.UseRegister(mright.right().node()),
1039 if (m.right().IsInt32Mul() && CanCover(node, m.right().node())) {
1040 Int32BinopMatcher mright(m.right().node());
1045 g.UseRegister(mright.right().node()),
1060 if (m.right().IsInt64Mul() && CanCover(node, m.right().node())) {
1061 Int64BinopMatcher mright(m.right().node());
1066 g.UseRegister(mright.right().node()),
1096 g.UseRegister(mleft.right().node()),
1097 g.UseRegister(m.right().node()));
1102 if (m.right().IsInt32Sub() && CanCover(node, m.right().node())) {
1103 Int32BinopMatcher mright(m.right().node());
1109 g.UseRegister(mright.right().node()));
1138 g.UseRegister(mleft.right().node()),
1139 g.UseRegister(m.right().node()));
1144 if (m.right().IsInt64Sub() && CanCover(node, m.right().node())) {
1145 Int64BinopMatcher mright(m.right().node());
1150 g.UseRegister(mright.right().node()));
1376 if ((m.IsWord64Sar() && m.right().HasValue() &&
1377 (m.right().Value() == 32)) ||
1378 (m.IsWord64Shr() && m.right().IsInRange(32, 63))) {
1380 g.UseImmediate(m.right().node()));
1448 if (m.right().IsFloat64RoundDown() &&
1449 CanCover(m.node(), m.right().node())) {
1450 if (m.right().InputAt(0)->opcode() == IrOpcode::kFloat64Sub &&
1451 CanCover(m.right().node(), m.right().InputAt(0))) {
1452 right().InputAt(0));
1455 g.UseRegister(mright0.right().node()));
1461 g.UseRegister(m.right().node()));
1628 InstructionOperand left, InstructionOperand right,
1633 selector->Emit(opcode, g.NoOutput(), left, right,
1637 selector->Emit(opcode, g.DefineAsRegister(cont->result()), left, right);
1648 Node* right = node->InputAt(1);
1650 // Match immediates on left or right side of comparison.
1651 if (g.CanBeImmediate(right, immediate_mode)) {
1652 VisitCompare(selector, opcode, g.UseRegister(left), g.UseImmediate(right),
1656 VisitCompare(selector, opcode, g.UseRegister(right), g.UseImmediate(left),
1659 VisitCompare(selector, opcode, g.UseRegister(left), g.UseRegister(right),
1670 // Select negated compare for comparisons with negated right input.
1671 if (m.right().IsInt32Sub()) {
1672 Node* sub = m.right().node();
1676 node->ReplaceInput(1, msub.right().node());
1718 if (m.right().Is(0.0f)) {
1720 g.UseImmediate(m.right().node()), cont);
1723 VisitCompare(selector, kArm64Float32Cmp, g.UseRegister(m.right().node()),
1727 g.UseRegister(m.right().node()), cont);
1737 if (m.right().Is(0.0)) {
1739 g.UseImmediate(m.right().node()), cont);
1742 VisitCompare(selector, kArm64Float64Cmp, g.UseRegister(m.right().node()),
1746 g.UseRegister(m.right().node()), cont);
1764 if (m.right().Is(0)) {
1871 if (m.right().HasValue() &&
1872 (base::bits::CountPopulation32(m.right().Value()) == 1)) {
1879 base::bits::CountTrailingZeros32(m.right().Value())),
1888 if (m.right().HasValue() &&
1889 (base::bits::CountPopulation64(m.right().Value()) == 1)) {
1896 base::bits::CountTrailingZeros64(m.right().Value())),
1947 if (m.right().Is(0)) {
1964 node->ReplaceInput(1, mequal.right().node());
2006 if (m.right().Is(0)) {
2144 Node* right = node->InputAt(1);
2148 Emit(kArm64Bfi, g.DefineSameAsFirst(right), g.UseRegister(right),
2151 Emit(kArm64Float64MoveU64, g.DefineAsRegister(node), g.UseRegister(right));
2155 g.UseRegister(left), g.UseRegister(right));
2162 Node* right = node->InputAt(1);
2167 g.UseRegister(right), g.TempImmediate(32), g.TempImmediate(32));
2172 g.UseRegister(left), g.UseRegister(right));