Lines Matching refs:node
32 InstructionOperand UseOperand(Node* node, ImmediateMode mode) { in UseOperand() argument
33 if (CanBeImmediate(node, mode)) { in UseOperand()
34 return UseImmediate(node); in UseOperand()
36 return UseRegister(node); in UseOperand()
39 bool CanBeImmediate(Node* node, ImmediateMode mode) { in CanBeImmediate() argument
41 if (node->opcode() == IrOpcode::kInt32Constant) in CanBeImmediate()
42 value = OpParameter<int32_t>(node->op()); in CanBeImmediate()
43 else if (node->opcode() == IrOpcode::kInt64Constant) in CanBeImmediate()
44 value = OpParameter<int64_t>(node->op()); in CanBeImmediate()
72 InstructionOperand UseRegisterOrStackPointer(Node* node) { in UseRegisterOrStackPointer() argument
73 if (node->opcode() == IrOpcode::kLoadStackPointer) { in UseRegisterOrStackPointer()
78 return UseRegister(node); in UseRegisterOrStackPointer()
86 Node* node) { in VisitRR() argument
88 selector->Emit(opcode, g.DefineAsRegister(node), in VisitRR()
89 g.UseRegister(node->InputAt(0))); in VisitRR()
93 Node* node) { in VisitRRR() argument
95 selector->Emit(opcode, g.DefineAsRegister(node), in VisitRRR()
96 g.UseRegister(node->InputAt(0)), in VisitRRR()
97 g.UseRegister(node->InputAt(1))); in VisitRRR()
100 void VisitRRO(InstructionSelector* selector, InstructionCode opcode, Node* node, in VisitRRO() argument
103 selector->Emit(opcode, g.DefineAsRegister(node), in VisitRRO()
104 g.UseRegister(node->InputAt(0)), in VisitRRO()
105 g.UseOperand(node->InputAt(1), operand_mode)); in VisitRRO()
111 InstructionCode opcode, Node* node) { in VisitTryTruncateDouble() argument
113 InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; in VisitTryTruncateDouble()
116 outputs[output_count++] = g.DefineAsRegister(node); in VisitTryTruncateDouble()
118 Node* success_output = NodeProperties::FindProjection(node, 1); in VisitTryTruncateDouble()
130 void VisitBinop(InstructionSelector* selector, Node* node, in VisitBinop() argument
134 Matcher m(node); in VisitBinop()
140 inputs[input_count++] = g.UseRegister(m.left().node()); in VisitBinop()
141 inputs[input_count++] = g.UseOperand(m.right().node(), operand_mode); in VisitBinop()
147 outputs[output_count++] = g.DefineSameAsFirst(node); in VisitBinop()
149 outputs[output_count++] = g.DefineAsRegister(node); in VisitBinop()
164 void VisitBinop(InstructionSelector* selector, Node* node, in VisitBinop() argument
167 VisitBinop<Matcher>(selector, node, opcode, operand_mode, &cont); in VisitBinop()
172 void InstructionSelector::VisitStackSlot(Node* node) { in VisitStackSlot() argument
173 StackSlotRepresentation rep = StackSlotRepresentationOf(node->op()); in VisitStackSlot()
177 Emit(kArchStackSlot, g.DefineAsRegister(node), in VisitStackSlot()
181 void InstructionSelector::VisitDebugAbort(Node* node) { in VisitDebugAbort() argument
183 Emit(kArchDebugAbort, g.NoOutput(), g.UseFixed(node->InputAt(0), r4)); in VisitDebugAbort()
186 void InstructionSelector::VisitLoad(Node* node) { in VisitLoad() argument
187 LoadRepresentation load_rep = LoadRepresentationOf(node->op()); in VisitLoad()
189 Node* base = node->InputAt(0); in VisitLoad()
190 Node* offset = node->InputAt(1); in VisitLoad()
232 if (node->opcode() == IrOpcode::kPoisonedLoad && in VisitLoad()
239 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(offset)); in VisitLoad()
242 g.DefineAsRegister(node), g.UseRegister(offset), g.UseImmediate(base)); in VisitLoad()
245 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(offset)); in VisitLoad()
249 void InstructionSelector::VisitPoisonedLoad(Node* node) { VisitLoad(node); } in VisitPoisonedLoad() argument
251 void InstructionSelector::VisitProtectedLoad(Node* node) { in VisitProtectedLoad() argument
256 void InstructionSelector::VisitStore(Node* node) { in VisitStore() argument
258 Node* base = node->InputAt(0); in VisitStore()
259 Node* offset = node->InputAt(1); in VisitStore()
260 Node* value = node->InputAt(2); in VisitStore()
262 StoreRepresentation store_rep = StoreRepresentationOf(node->op()); in VisitStore()
361 void InstructionSelector::VisitProtectedStore(Node* node) { in VisitProtectedStore() argument
367 void InstructionSelector::VisitUnalignedLoad(Node* node) { UNREACHABLE(); } in VisitUnalignedLoad() argument
370 void InstructionSelector::VisitUnalignedStore(Node* node) { UNREACHABLE(); } in VisitUnalignedStore() argument
373 static void VisitLogical(InstructionSelector* selector, Node* node, Matcher* m, in VisitLogical() argument
393 Matcher mleft(m->left().node()); in VisitLogical()
395 selector->Emit(inv_opcode, g.DefineAsRegister(node), in VisitLogical()
396 g.UseRegister(m->right().node()), in VisitLogical()
397 g.UseRegister(mleft.left().node())); in VisitLogical()
405 Matcher mright(m->right().node()); in VisitLogical()
408 selector->Emit(inv_opcode, g.DefineAsRegister(node), in VisitLogical()
409 g.UseRegister(m->left().node()), in VisitLogical()
410 g.UseRegister(mright.left().node())); in VisitLogical()
415 VisitBinop<Matcher>(selector, node, opcode, imm_mode); in VisitLogical()
446 void InstructionSelector::VisitWord32And(Node* node) { in VisitWord32And() argument
448 Int32BinopMatcher m(node); in VisitWord32And()
453 Node* left = m.left().node(); in VisitWord32And()
455 CanCover(node, left)) { in VisitWord32And()
457 Int32BinopMatcher mleft(m.left().node()); in VisitWord32And()
459 left = mleft.left().node(); in VisitWord32And()
472 Emit(kPPC_RotLeftAndMask32, g.DefineAsRegister(node), g.UseRegister(left), in VisitWord32And()
478 this, node, &m, kPPC_And, CanCover(node, m.left().node()), in VisitWord32And()
479 CanCover(node, m.right().node()), kInt16Imm_Unsigned); in VisitWord32And()
485 void InstructionSelector::VisitWord64And(Node* node) { in VisitWord64And() argument
487 Int64BinopMatcher m(node); in VisitWord64And()
492 Node* left = m.left().node(); in VisitWord64And()
494 CanCover(node, left)) { in VisitWord64And()
496 Int64BinopMatcher mleft(m.left().node()); in VisitWord64And()
498 left = mleft.left().node(); in VisitWord64And()
528 Emit(opcode, g.DefineAsRegister(node), g.UseRegister(left), in VisitWord64And()
535 this, node, &m, kPPC_And, CanCover(node, m.left().node()), in VisitWord64And()
536 CanCover(node, m.right().node()), kInt16Imm_Unsigned); in VisitWord64And()
541 void InstructionSelector::VisitWord32Or(Node* node) { in VisitWord32Or() argument
542 Int32BinopMatcher m(node); in VisitWord32Or()
544 this, node, &m, kPPC_Or, CanCover(node, m.left().node()), in VisitWord32Or()
545 CanCover(node, m.right().node()), kInt16Imm_Unsigned); in VisitWord32Or()
550 void InstructionSelector::VisitWord64Or(Node* node) { in VisitWord64Or() argument
551 Int64BinopMatcher m(node); in VisitWord64Or()
553 this, node, &m, kPPC_Or, CanCover(node, m.left().node()), in VisitWord64Or()
554 CanCover(node, m.right().node()), kInt16Imm_Unsigned); in VisitWord64Or()
559 void InstructionSelector::VisitWord32Xor(Node* node) { in VisitWord32Xor() argument
561 Int32BinopMatcher m(node); in VisitWord32Xor()
563 Emit(kPPC_Not, g.DefineAsRegister(node), g.UseRegister(m.left().node())); in VisitWord32Xor()
565 VisitBinop<Int32BinopMatcher>(this, node, kPPC_Xor, kInt16Imm_Unsigned); in VisitWord32Xor()
571 void InstructionSelector::VisitWord64Xor(Node* node) { in VisitWord64Xor() argument
573 Int64BinopMatcher m(node); in VisitWord64Xor()
575 Emit(kPPC_Not, g.DefineAsRegister(node), g.UseRegister(m.left().node())); in VisitWord64Xor()
577 VisitBinop<Int64BinopMatcher>(this, node, kPPC_Xor, kInt16Imm_Unsigned); in VisitWord64Xor()
583 void InstructionSelector::VisitWord32Shl(Node* node) { in VisitWord32Shl() argument
585 Int32BinopMatcher m(node); in VisitWord32Shl()
588 Int32BinopMatcher mleft(m.left().node()); in VisitWord32Shl()
597 Emit(kPPC_RotLeftAndMask32, g.DefineAsRegister(node), in VisitWord32Shl()
598 g.UseRegister(mleft.left().node()), g.TempImmediate(sh), in VisitWord32Shl()
604 VisitRRO(this, kPPC_ShiftLeft32, node, kShift32Imm); in VisitWord32Shl()
609 void InstructionSelector::VisitWord64Shl(Node* node) { in VisitWord64Shl() argument
611 Int64BinopMatcher m(node); in VisitWord64Shl()
615 Int64BinopMatcher mleft(m.left().node()); in VisitWord64Shl()
641 Emit(opcode, g.DefineAsRegister(node), in VisitWord64Shl()
642 g.UseRegister(mleft.left().node()), g.TempImmediate(sh), in VisitWord64Shl()
649 VisitRRO(this, kPPC_ShiftLeft64, node, kShift64Imm); in VisitWord64Shl()
654 void InstructionSelector::VisitWord32Shr(Node* node) { in VisitWord32Shr() argument
656 Int32BinopMatcher m(node); in VisitWord32Shr()
659 Int32BinopMatcher mleft(m.left().node()); in VisitWord32Shr()
669 Emit(kPPC_RotLeftAndMask32, g.DefineAsRegister(node), in VisitWord32Shr()
670 g.UseRegister(mleft.left().node()), g.TempImmediate(sh), in VisitWord32Shr()
676 VisitRRO(this, kPPC_ShiftRight32, node, kShift32Imm); in VisitWord32Shr()
680 void InstructionSelector::VisitWord64Shr(Node* node) { in VisitWord64Shr() argument
682 Int64BinopMatcher m(node); in VisitWord64Shr()
685 Int64BinopMatcher mleft(m.left().node()); in VisitWord64Shr()
708 Emit(opcode, g.DefineAsRegister(node), in VisitWord64Shr()
709 g.UseRegister(mleft.left().node()), g.TempImmediate(sh), in VisitWord64Shr()
716 VisitRRO(this, kPPC_ShiftRight64, node, kShift64Imm); in VisitWord64Shr()
721 void InstructionSelector::VisitWord32Sar(Node* node) { in VisitWord32Sar() argument
723 Int32BinopMatcher m(node); in VisitWord32Sar()
725 if (CanCover(node, m.left().node()) && m.left().IsWord32Shl()) { in VisitWord32Sar()
726 Int32BinopMatcher mleft(m.left().node()); in VisitWord32Sar()
728 Emit(kPPC_ExtendSignWord16, g.DefineAsRegister(node), in VisitWord32Sar()
729 g.UseRegister(mleft.left().node())); in VisitWord32Sar()
732 Emit(kPPC_ExtendSignWord8, g.DefineAsRegister(node), in VisitWord32Sar()
733 g.UseRegister(mleft.left().node())); in VisitWord32Sar()
737 VisitRRO(this, kPPC_ShiftRightAlg32, node, kShift32Imm); in VisitWord32Sar()
742 InstructionCode opcode2, Node* node) { in VisitPairBinop() argument
745 Node* projection1 = NodeProperties::FindProjection(node, 1); in VisitPairBinop()
750 g.UseRegister(node->InputAt(0)), g.UseUniqueRegister(node->InputAt(1)), in VisitPairBinop()
751 g.UseRegister(node->InputAt(2)), g.UseUniqueRegister(node->InputAt(3))}; in VisitPairBinop()
754 g.DefineAsRegister(node), in VisitPairBinop()
755 g.DefineAsRegister(NodeProperties::FindProjection(node, 1))}; in VisitPairBinop()
761 selector->Emit(opcode2, g.DefineSameAsFirst(node), in VisitPairBinop()
762 g.UseRegister(node->InputAt(0)), in VisitPairBinop()
763 g.UseRegister(node->InputAt(2))); in VisitPairBinop()
767 void InstructionSelector::VisitInt32PairAdd(Node* node) { in VisitInt32PairAdd() argument
768 VisitPairBinop(this, kPPC_AddPair, kPPC_Add32, node); in VisitInt32PairAdd()
771 void InstructionSelector::VisitInt32PairSub(Node* node) { in VisitInt32PairSub() argument
772 VisitPairBinop(this, kPPC_SubPair, kPPC_Sub, node); in VisitInt32PairSub()
775 void InstructionSelector::VisitInt32PairMul(Node* node) { in VisitInt32PairMul() argument
777 Node* projection1 = NodeProperties::FindProjection(node, 1); in VisitInt32PairMul()
779 InstructionOperand inputs[] = {g.UseUniqueRegister(node->InputAt(0)), in VisitInt32PairMul()
780 g.UseUniqueRegister(node->InputAt(1)), in VisitInt32PairMul()
781 g.UseUniqueRegister(node->InputAt(2)), in VisitInt32PairMul()
782 g.UseUniqueRegister(node->InputAt(3))}; in VisitInt32PairMul()
785 g.DefineAsRegister(node), in VisitInt32PairMul()
786 g.DefineAsRegister(NodeProperties::FindProjection(node, 1))}; in VisitInt32PairMul()
794 Emit(kPPC_Mul32, g.DefineSameAsFirst(node), g.UseRegister(node->InputAt(0)), in VisitInt32PairMul()
795 g.UseRegister(node->InputAt(2))); in VisitInt32PairMul()
802 Node* node) { in VisitPairShift() argument
806 Int32Matcher m(node->InputAt(2)); in VisitPairShift()
809 shift_operand = g.UseImmediate(m.node()); in VisitPairShift()
811 shift_operand = g.UseUniqueRegister(m.node()); in VisitPairShift()
814 InstructionOperand inputs[] = {g.UseUniqueRegister(node->InputAt(0)), in VisitPairShift()
815 g.UseUniqueRegister(node->InputAt(1)), in VisitPairShift()
818 Node* projection1 = NodeProperties::FindProjection(node, 1); in VisitPairShift()
825 outputs[output_count++] = g.DefineAsRegister(node); in VisitPairShift()
836 void InstructionSelector::VisitWord32PairShl(Node* node) { in VisitWord32PairShl() argument
837 VisitPairShift(this, kPPC_ShiftLeftPair, node); in VisitWord32PairShl()
840 void InstructionSelector::VisitWord32PairShr(Node* node) { in VisitWord32PairShr() argument
841 VisitPairShift(this, kPPC_ShiftRightPair, node); in VisitWord32PairShr()
844 void InstructionSelector::VisitWord32PairSar(Node* node) { in VisitWord32PairSar() argument
845 VisitPairShift(this, kPPC_ShiftRightAlgPair, node); in VisitWord32PairSar()
850 void InstructionSelector::VisitWord64Sar(Node* node) { in VisitWord64Sar() argument
852 Int64BinopMatcher m(node); in VisitWord64Sar()
853 if (CanCover(m.node(), m.left().node()) && m.left().IsLoad() && in VisitWord64Sar()
857 BaseWithIndexAndDisplacement64Matcher mleft(m.left().node(), in VisitWord64Sar()
870 g.DefineAsRegister(node), g.UseRegister(mleft.base()), in VisitWord64Sar()
876 VisitRRO(this, kPPC_ShiftRightAlg64, node, kShift64Imm); in VisitWord64Sar()
882 void InstructionSelector::VisitWord32Ror(Node* node) { in VisitWord32Ror() argument
883 VisitRRO(this, kPPC_RotRight32, node, kShift32Imm); in VisitWord32Ror()
889 void InstructionSelector::VisitWord64Ror(Node* node) { in VisitWord64Ror() argument
890 VisitRRO(this, kPPC_RotRight64, node, kShift64Imm); in VisitWord64Ror()
895 void InstructionSelector::VisitWord32Clz(Node* node) { in VisitWord32Clz() argument
897 Emit(kPPC_Cntlz32, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); in VisitWord32Clz()
902 void InstructionSelector::VisitWord64Clz(Node* node) { in VisitWord64Clz() argument
904 Emit(kPPC_Cntlz64, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); in VisitWord64Clz()
909 void InstructionSelector::VisitWord32Popcnt(Node* node) { in VisitWord32Popcnt() argument
911 Emit(kPPC_Popcnt32, g.DefineAsRegister(node), in VisitWord32Popcnt()
912 g.UseRegister(node->InputAt(0))); in VisitWord32Popcnt()
917 void InstructionSelector::VisitWord64Popcnt(Node* node) { in VisitWord64Popcnt() argument
919 Emit(kPPC_Popcnt64, g.DefineAsRegister(node), in VisitWord64Popcnt()
920 g.UseRegister(node->InputAt(0))); in VisitWord64Popcnt()
925 void InstructionSelector::VisitWord32Ctz(Node* node) { UNREACHABLE(); } in VisitWord32Ctz() argument
929 void InstructionSelector::VisitWord64Ctz(Node* node) { UNREACHABLE(); } in VisitWord64Ctz() argument
933 void InstructionSelector::VisitWord32ReverseBits(Node* node) { UNREACHABLE(); } in VisitWord32ReverseBits() argument
937 void InstructionSelector::VisitWord64ReverseBits(Node* node) { UNREACHABLE(); } in VisitWord64ReverseBits() argument
940 void InstructionSelector::VisitWord64ReverseBytes(Node* node) { in VisitWord64ReverseBytes() argument
943 Emit(kPPC_ByteRev64, g.DefineAsRegister(node), in VisitWord64ReverseBytes()
944 g.UseUniqueRegister(node->InputAt(0)), 1, temp); in VisitWord64ReverseBytes()
947 void InstructionSelector::VisitWord32ReverseBytes(Node* node) { in VisitWord32ReverseBytes() argument
949 Emit(kPPC_ByteRev32, g.DefineAsRegister(node), in VisitWord32ReverseBytes()
950 g.UseRegister(node->InputAt(0))); in VisitWord32ReverseBytes()
953 void InstructionSelector::VisitSpeculationFence(Node* node) { UNREACHABLE(); } in VisitSpeculationFence() argument
955 void InstructionSelector::VisitInt32Add(Node* node) { in VisitInt32Add() argument
956 VisitBinop<Int32BinopMatcher>(this, node, kPPC_Add32, kInt16Imm); in VisitInt32Add()
961 void InstructionSelector::VisitInt64Add(Node* node) { in VisitInt64Add() argument
962 VisitBinop<Int64BinopMatcher>(this, node, kPPC_Add64, kInt16Imm); in VisitInt64Add()
966 void InstructionSelector::VisitInt32Sub(Node* node) { in VisitInt32Sub() argument
968 Int32BinopMatcher m(node); in VisitInt32Sub()
970 Emit(kPPC_Neg, g.DefineAsRegister(node), g.UseRegister(m.right().node())); in VisitInt32Sub()
972 VisitBinop<Int32BinopMatcher>(this, node, kPPC_Sub, kInt16Imm_Negate); in VisitInt32Sub()
978 void InstructionSelector::VisitInt64Sub(Node* node) { in VisitInt64Sub() argument
980 Int64BinopMatcher m(node); in VisitInt64Sub()
982 Emit(kPPC_Neg, g.DefineAsRegister(node), g.UseRegister(m.right().node())); in VisitInt64Sub()
984 VisitBinop<Int64BinopMatcher>(this, node, kPPC_Sub, kInt16Imm_Negate); in VisitInt64Sub()
994 void EmitInt32MulWithOverflow(InstructionSelector* selector, Node* node, in EmitInt32MulWithOverflow() argument
997 Int32BinopMatcher m(node); in EmitInt32MulWithOverflow()
998 InstructionOperand result_operand = g.DefineAsRegister(node); in EmitInt32MulWithOverflow()
1003 InstructionOperand inputs[] = {g.UseRegister(m.left().node()), in EmitInt32MulWithOverflow()
1004 g.UseRegister(m.right().node())}; in EmitInt32MulWithOverflow()
1020 void InstructionSelector::VisitInt32Mul(Node* node) { in VisitInt32Mul() argument
1021 VisitRRR(this, kPPC_Mul32, node); in VisitInt32Mul()
1026 void InstructionSelector::VisitInt64Mul(Node* node) { in VisitInt64Mul() argument
1027 VisitRRR(this, kPPC_Mul64, node); in VisitInt64Mul()
1032 void InstructionSelector::VisitInt32MulHigh(Node* node) { in VisitInt32MulHigh() argument
1034 Emit(kPPC_MulHigh32, g.DefineAsRegister(node), in VisitInt32MulHigh()
1035 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); in VisitInt32MulHigh()
1039 void InstructionSelector::VisitUint32MulHigh(Node* node) { in VisitUint32MulHigh() argument
1041 Emit(kPPC_MulHighU32, g.DefineAsRegister(node), in VisitUint32MulHigh()
1042 g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); in VisitUint32MulHigh()
1046 void InstructionSelector::VisitInt32Div(Node* node) { in VisitInt32Div() argument
1047 VisitRRR(this, kPPC_Div32, node); in VisitInt32Div()
1052 void InstructionSelector::VisitInt64Div(Node* node) { in VisitInt64Div() argument
1053 VisitRRR(this, kPPC_Div64, node); in VisitInt64Div()
1058 void InstructionSelector::VisitUint32Div(Node* node) { in VisitUint32Div() argument
1059 VisitRRR(this, kPPC_DivU32, node); in VisitUint32Div()
1064 void InstructionSelector::VisitUint64Div(Node* node) { in VisitUint64Div() argument
1065 VisitRRR(this, kPPC_DivU64, node); in VisitUint64Div()
1070 void InstructionSelector::VisitInt32Mod(Node* node) { in VisitInt32Mod() argument
1071 VisitRRR(this, kPPC_Mod32, node); in VisitInt32Mod()
1076 void InstructionSelector::VisitInt64Mod(Node* node) { in VisitInt64Mod() argument
1077 VisitRRR(this, kPPC_Mod64, node); in VisitInt64Mod()
1082 void InstructionSelector::VisitUint32Mod(Node* node) { in VisitUint32Mod() argument
1083 VisitRRR(this, kPPC_ModU32, node); in VisitUint32Mod()
1088 void InstructionSelector::VisitUint64Mod(Node* node) { in VisitUint64Mod() argument
1089 VisitRRR(this, kPPC_ModU64, node); in VisitUint64Mod()
1094 void InstructionSelector::VisitChangeFloat32ToFloat64(Node* node) { in VisitChangeFloat32ToFloat64() argument
1095 VisitRR(this, kPPC_Float32ToDouble, node); in VisitChangeFloat32ToFloat64()
1099 void InstructionSelector::VisitRoundInt32ToFloat32(Node* node) { in VisitRoundInt32ToFloat32() argument
1100 VisitRR(this, kPPC_Int32ToFloat32, node); in VisitRoundInt32ToFloat32()
1104 void InstructionSelector::VisitRoundUint32ToFloat32(Node* node) { in VisitRoundUint32ToFloat32() argument
1105 VisitRR(this, kPPC_Uint32ToFloat32, node); in VisitRoundUint32ToFloat32()
1109 void InstructionSelector::VisitChangeInt32ToFloat64(Node* node) { in VisitChangeInt32ToFloat64() argument
1110 VisitRR(this, kPPC_Int32ToDouble, node); in VisitChangeInt32ToFloat64()
1114 void InstructionSelector::VisitChangeUint32ToFloat64(Node* node) { in VisitChangeUint32ToFloat64() argument
1115 VisitRR(this, kPPC_Uint32ToDouble, node); in VisitChangeUint32ToFloat64()
1119 void InstructionSelector::VisitChangeFloat64ToInt32(Node* node) { in VisitChangeFloat64ToInt32() argument
1120 VisitRR(this, kPPC_DoubleToInt32, node); in VisitChangeFloat64ToInt32()
1124 void InstructionSelector::VisitChangeFloat64ToUint32(Node* node) { in VisitChangeFloat64ToUint32() argument
1125 VisitRR(this, kPPC_DoubleToUint32, node); in VisitChangeFloat64ToUint32()
1128 void InstructionSelector::VisitTruncateFloat64ToUint32(Node* node) { in VisitTruncateFloat64ToUint32() argument
1129 VisitRR(this, kPPC_DoubleToUint32, node); in VisitTruncateFloat64ToUint32()
1132 void InstructionSelector::VisitSignExtendWord8ToInt32(Node* node) { in VisitSignExtendWord8ToInt32() argument
1134 VisitRR(this, kPPC_ExtendSignWord8, node); in VisitSignExtendWord8ToInt32()
1137 void InstructionSelector::VisitSignExtendWord16ToInt32(Node* node) { in VisitSignExtendWord16ToInt32() argument
1139 VisitRR(this, kPPC_ExtendSignWord16, node); in VisitSignExtendWord16ToInt32()
1143 void InstructionSelector::VisitTryTruncateFloat32ToInt64(Node* node) { in VisitTryTruncateFloat32ToInt64() argument
1144 VisitTryTruncateDouble(this, kPPC_DoubleToInt64, node); in VisitTryTruncateFloat32ToInt64()
1148 void InstructionSelector::VisitTryTruncateFloat64ToInt64(Node* node) { in VisitTryTruncateFloat64ToInt64() argument
1149 VisitTryTruncateDouble(this, kPPC_DoubleToInt64, node); in VisitTryTruncateFloat64ToInt64()
1153 void InstructionSelector::VisitTryTruncateFloat32ToUint64(Node* node) { in VisitTryTruncateFloat32ToUint64() argument
1154 VisitTryTruncateDouble(this, kPPC_DoubleToUint64, node); in VisitTryTruncateFloat32ToUint64()
1158 void InstructionSelector::VisitTryTruncateFloat64ToUint64(Node* node) { in VisitTryTruncateFloat64ToUint64() argument
1159 VisitTryTruncateDouble(this, kPPC_DoubleToUint64, node); in VisitTryTruncateFloat64ToUint64()
1163 void InstructionSelector::VisitChangeInt32ToInt64(Node* node) { in VisitChangeInt32ToInt64() argument
1165 VisitRR(this, kPPC_ExtendSignWord32, node); in VisitChangeInt32ToInt64()
1168 void InstructionSelector::VisitSignExtendWord8ToInt64(Node* node) { in VisitSignExtendWord8ToInt64() argument
1170 VisitRR(this, kPPC_ExtendSignWord8, node); in VisitSignExtendWord8ToInt64()
1173 void InstructionSelector::VisitSignExtendWord16ToInt64(Node* node) { in VisitSignExtendWord16ToInt64() argument
1175 VisitRR(this, kPPC_ExtendSignWord16, node); in VisitSignExtendWord16ToInt64()
1178 void InstructionSelector::VisitSignExtendWord32ToInt64(Node* node) { in VisitSignExtendWord32ToInt64() argument
1180 VisitRR(this, kPPC_ExtendSignWord32, node); in VisitSignExtendWord32ToInt64()
1183 void InstructionSelector::VisitChangeUint32ToUint64(Node* node) { in VisitChangeUint32ToUint64() argument
1185 VisitRR(this, kPPC_Uint32ToUint64, node); in VisitChangeUint32ToUint64()
1188 void InstructionSelector::VisitChangeFloat64ToUint64(Node* node) { in VisitChangeFloat64ToUint64() argument
1189 VisitRR(this, kPPC_DoubleToUint64, node); in VisitChangeFloat64ToUint64()
1194 void InstructionSelector::VisitTruncateFloat64ToFloat32(Node* node) { in VisitTruncateFloat64ToFloat32() argument
1195 VisitRR(this, kPPC_DoubleToFloat32, node); in VisitTruncateFloat64ToFloat32()
1198 void InstructionSelector::VisitTruncateFloat64ToWord32(Node* node) { in VisitTruncateFloat64ToWord32() argument
1199 VisitRR(this, kArchTruncateDoubleToI, node); in VisitTruncateFloat64ToWord32()
1202 void InstructionSelector::VisitRoundFloat64ToInt32(Node* node) { in VisitRoundFloat64ToInt32() argument
1203 VisitRR(this, kPPC_DoubleToInt32, node); in VisitRoundFloat64ToInt32()
1207 void InstructionSelector::VisitTruncateFloat32ToInt32(Node* node) { in VisitTruncateFloat32ToInt32() argument
1208 VisitRR(this, kPPC_DoubleToInt32, node); in VisitTruncateFloat32ToInt32()
1212 void InstructionSelector::VisitTruncateFloat32ToUint32(Node* node) { in VisitTruncateFloat32ToUint32() argument
1213 VisitRR(this, kPPC_DoubleToUint32, node); in VisitTruncateFloat32ToUint32()
1218 void InstructionSelector::VisitTruncateInt64ToInt32(Node* node) { in VisitTruncateInt64ToInt32() argument
1220 VisitRR(this, kPPC_Int64ToInt32, node); in VisitTruncateInt64ToInt32()
1224 void InstructionSelector::VisitRoundInt64ToFloat32(Node* node) { in VisitRoundInt64ToFloat32() argument
1225 VisitRR(this, kPPC_Int64ToFloat32, node); in VisitRoundInt64ToFloat32()
1229 void InstructionSelector::VisitRoundInt64ToFloat64(Node* node) { in VisitRoundInt64ToFloat64() argument
1230 VisitRR(this, kPPC_Int64ToDouble, node); in VisitRoundInt64ToFloat64()
1234 void InstructionSelector::VisitRoundUint64ToFloat32(Node* node) { in VisitRoundUint64ToFloat32() argument
1235 VisitRR(this, kPPC_Uint64ToFloat32, node); in VisitRoundUint64ToFloat32()
1239 void InstructionSelector::VisitRoundUint64ToFloat64(Node* node) { in VisitRoundUint64ToFloat64() argument
1240 VisitRR(this, kPPC_Uint64ToDouble, node); in VisitRoundUint64ToFloat64()
1245 void InstructionSelector::VisitBitcastFloat32ToInt32(Node* node) { in VisitBitcastFloat32ToInt32() argument
1246 VisitRR(this, kPPC_BitcastFloat32ToInt32, node); in VisitBitcastFloat32ToInt32()
1251 void InstructionSelector::VisitBitcastFloat64ToInt64(Node* node) { in VisitBitcastFloat64ToInt64() argument
1252 VisitRR(this, kPPC_BitcastDoubleToInt64, node); in VisitBitcastFloat64ToInt64()
1257 void InstructionSelector::VisitBitcastInt32ToFloat32(Node* node) { in VisitBitcastInt32ToFloat32() argument
1258 VisitRR(this, kPPC_BitcastInt32ToFloat32, node); in VisitBitcastInt32ToFloat32()
1263 void InstructionSelector::VisitBitcastInt64ToFloat64(Node* node) { in VisitBitcastInt64ToFloat64() argument
1264 VisitRR(this, kPPC_BitcastInt64ToDouble, node); in VisitBitcastInt64ToFloat64()
1269 void InstructionSelector::VisitFloat32Add(Node* node) { in VisitFloat32Add() argument
1270 VisitRRR(this, kPPC_AddDouble | MiscField::encode(1), node); in VisitFloat32Add()
1274 void InstructionSelector::VisitFloat64Add(Node* node) { in VisitFloat64Add() argument
1276 VisitRRR(this, kPPC_AddDouble, node); in VisitFloat64Add()
1280 void InstructionSelector::VisitFloat32Sub(Node* node) { in VisitFloat32Sub() argument
1281 VisitRRR(this, kPPC_SubDouble | MiscField::encode(1), node); in VisitFloat32Sub()
1284 void InstructionSelector::VisitFloat64Sub(Node* node) { in VisitFloat64Sub() argument
1286 VisitRRR(this, kPPC_SubDouble, node); in VisitFloat64Sub()
1289 void InstructionSelector::VisitFloat32Mul(Node* node) { in VisitFloat32Mul() argument
1290 VisitRRR(this, kPPC_MulDouble | MiscField::encode(1), node); in VisitFloat32Mul()
1294 void InstructionSelector::VisitFloat64Mul(Node* node) { in VisitFloat64Mul() argument
1296 VisitRRR(this, kPPC_MulDouble, node); in VisitFloat64Mul()
1300 void InstructionSelector::VisitFloat32Div(Node* node) { in VisitFloat32Div() argument
1301 VisitRRR(this, kPPC_DivDouble | MiscField::encode(1), node); in VisitFloat32Div()
1305 void InstructionSelector::VisitFloat64Div(Node* node) { in VisitFloat64Div() argument
1306 VisitRRR(this, kPPC_DivDouble, node); in VisitFloat64Div()
1310 void InstructionSelector::VisitFloat64Mod(Node* node) { in VisitFloat64Mod() argument
1312 Emit(kPPC_ModDouble, g.DefineAsFixed(node, d1), in VisitFloat64Mod()
1313 g.UseFixed(node->InputAt(0), d1), in VisitFloat64Mod()
1314 g.UseFixed(node->InputAt(1), d2))->MarkAsCall(); in VisitFloat64Mod()
1317 void InstructionSelector::VisitFloat32Max(Node* node) { in VisitFloat32Max() argument
1318 VisitRRR(this, kPPC_MaxDouble | MiscField::encode(1), node); in VisitFloat32Max()
1321 void InstructionSelector::VisitFloat64Max(Node* node) { in VisitFloat64Max() argument
1322 VisitRRR(this, kPPC_MaxDouble, node); in VisitFloat64Max()
1326 void InstructionSelector::VisitFloat64SilenceNaN(Node* node) { in VisitFloat64SilenceNaN() argument
1327 VisitRR(this, kPPC_Float64SilenceNaN, node); in VisitFloat64SilenceNaN()
1330 void InstructionSelector::VisitFloat32Min(Node* node) { in VisitFloat32Min() argument
1331 VisitRRR(this, kPPC_MinDouble | MiscField::encode(1), node); in VisitFloat32Min()
1334 void InstructionSelector::VisitFloat64Min(Node* node) { in VisitFloat64Min() argument
1335 VisitRRR(this, kPPC_MinDouble, node); in VisitFloat64Min()
1339 void InstructionSelector::VisitFloat32Abs(Node* node) { in VisitFloat32Abs() argument
1340 VisitRR(this, kPPC_AbsDouble | MiscField::encode(1), node); in VisitFloat32Abs()
1344 void InstructionSelector::VisitFloat64Abs(Node* node) { in VisitFloat64Abs() argument
1345 VisitRR(this, kPPC_AbsDouble, node); in VisitFloat64Abs()
1348 void InstructionSelector::VisitFloat32Sqrt(Node* node) { in VisitFloat32Sqrt() argument
1349 VisitRR(this, kPPC_SqrtDouble | MiscField::encode(1), node); in VisitFloat32Sqrt()
1352 void InstructionSelector::VisitFloat64Ieee754Unop(Node* node, in VisitFloat64Ieee754Unop() argument
1355 Emit(opcode, g.DefineAsFixed(node, d1), g.UseFixed(node->InputAt(0), d1)) in VisitFloat64Ieee754Unop()
1359 void InstructionSelector::VisitFloat64Ieee754Binop(Node* node, in VisitFloat64Ieee754Binop() argument
1362 Emit(opcode, g.DefineAsFixed(node, d1), in VisitFloat64Ieee754Binop()
1363 g.UseFixed(node->InputAt(0), d1), in VisitFloat64Ieee754Binop()
1364 g.UseFixed(node->InputAt(1), d2))->MarkAsCall(); in VisitFloat64Ieee754Binop()
1367 void InstructionSelector::VisitFloat64Sqrt(Node* node) { in VisitFloat64Sqrt() argument
1368 VisitRR(this, kPPC_SqrtDouble, node); in VisitFloat64Sqrt()
1372 void InstructionSelector::VisitFloat32RoundDown(Node* node) { in VisitFloat32RoundDown() argument
1373 VisitRR(this, kPPC_FloorDouble | MiscField::encode(1), node); in VisitFloat32RoundDown()
1377 void InstructionSelector::VisitFloat64RoundDown(Node* node) { in VisitFloat64RoundDown() argument
1378 VisitRR(this, kPPC_FloorDouble, node); in VisitFloat64RoundDown()
1382 void InstructionSelector::VisitFloat32RoundUp(Node* node) { in VisitFloat32RoundUp() argument
1383 VisitRR(this, kPPC_CeilDouble | MiscField::encode(1), node); in VisitFloat32RoundUp()
1387 void InstructionSelector::VisitFloat64RoundUp(Node* node) { in VisitFloat64RoundUp() argument
1388 VisitRR(this, kPPC_CeilDouble, node); in VisitFloat64RoundUp()
1392 void InstructionSelector::VisitFloat32RoundTruncate(Node* node) { in VisitFloat32RoundTruncate() argument
1393 VisitRR(this, kPPC_TruncateDouble | MiscField::encode(1), node); in VisitFloat32RoundTruncate()
1397 void InstructionSelector::VisitFloat64RoundTruncate(Node* node) { in VisitFloat64RoundTruncate() argument
1398 VisitRR(this, kPPC_TruncateDouble, node); in VisitFloat64RoundTruncate()
1402 void InstructionSelector::VisitFloat64RoundTiesAway(Node* node) { in VisitFloat64RoundTiesAway() argument
1403 VisitRR(this, kPPC_RoundDouble, node); in VisitFloat64RoundTiesAway()
1407 void InstructionSelector::VisitFloat32RoundTiesEven(Node* node) { in VisitFloat32RoundTiesEven() argument
1412 void InstructionSelector::VisitFloat64RoundTiesEven(Node* node) { in VisitFloat64RoundTiesEven() argument
1416 void InstructionSelector::VisitFloat32Neg(Node* node) { in VisitFloat32Neg() argument
1417 VisitRR(this, kPPC_NegDouble, node); in VisitFloat32Neg()
1420 void InstructionSelector::VisitFloat64Neg(Node* node) { in VisitFloat64Neg() argument
1421 VisitRR(this, kPPC_NegDouble, node); in VisitFloat64Neg()
1424 void InstructionSelector::VisitInt32AddWithOverflow(Node* node) { in VisitInt32AddWithOverflow() argument
1425 if (Node* ovf = NodeProperties::FindProjection(node, 1)) { in VisitInt32AddWithOverflow()
1427 return VisitBinop<Int32BinopMatcher>(this, node, kPPC_AddWithOverflow32, in VisitInt32AddWithOverflow()
1431 VisitBinop<Int32BinopMatcher>(this, node, kPPC_AddWithOverflow32, kInt16Imm, in VisitInt32AddWithOverflow()
1436 void InstructionSelector::VisitInt32SubWithOverflow(Node* node) { in VisitInt32SubWithOverflow() argument
1437 if (Node* ovf = NodeProperties::FindProjection(node, 1)) { in VisitInt32SubWithOverflow()
1439 return VisitBinop<Int32BinopMatcher>(this, node, kPPC_SubWithOverflow32, in VisitInt32SubWithOverflow()
1443 VisitBinop<Int32BinopMatcher>(this, node, kPPC_SubWithOverflow32, in VisitInt32SubWithOverflow()
1449 void InstructionSelector::VisitInt64AddWithOverflow(Node* node) { in VisitInt64AddWithOverflow() argument
1450 if (Node* ovf = NodeProperties::FindProjection(node, 1)) { in VisitInt64AddWithOverflow()
1452 return VisitBinop<Int64BinopMatcher>(this, node, kPPC_Add64, kInt16Imm, in VisitInt64AddWithOverflow()
1456 VisitBinop<Int64BinopMatcher>(this, node, kPPC_Add64, kInt16Imm, &cont); in VisitInt64AddWithOverflow()
1460 void InstructionSelector::VisitInt64SubWithOverflow(Node* node) { in VisitInt64SubWithOverflow() argument
1461 if (Node* ovf = NodeProperties::FindProjection(node, 1)) { in VisitInt64SubWithOverflow()
1463 return VisitBinop<Int64BinopMatcher>(this, node, kPPC_Sub, kInt16Imm_Negate, in VisitInt64SubWithOverflow()
1467 VisitBinop<Int64BinopMatcher>(this, node, kPPC_Sub, kInt16Imm_Negate, &cont); in VisitInt64SubWithOverflow()
1497 void VisitWordCompare(InstructionSelector* selector, Node* node, in VisitWordCompare() argument
1501 Node* left = node->InputAt(0); in VisitWordCompare()
1502 Node* right = node->InputAt(1); in VisitWordCompare()
1519 void VisitWord32Compare(InstructionSelector* selector, Node* node, in VisitWord32Compare() argument
1522 VisitWordCompare(selector, node, kPPC_Cmp32, cont, false, mode); in VisitWord32Compare()
1527 void VisitWord64Compare(InstructionSelector* selector, Node* node, in VisitWord64Compare() argument
1530 VisitWordCompare(selector, node, kPPC_Cmp64, cont, false, mode); in VisitWord64Compare()
1536 void VisitFloat32Compare(InstructionSelector* selector, Node* node, in VisitFloat32Compare() argument
1539 Node* left = node->InputAt(0); in VisitFloat32Compare()
1540 Node* right = node->InputAt(1); in VisitFloat32Compare()
1547 void VisitFloat64Compare(InstructionSelector* selector, Node* node, in VisitFloat64Compare() argument
1550 Node* left = node->InputAt(0); in VisitFloat64Compare()
1551 Node* right = node->InputAt(1); in VisitFloat64Compare()
1567 value = m.left().node(); in VisitWordCompareZero()
1632 Node* const node = value->InputAt(0); in VisitWordCompareZero() local
1633 Node* const result = NodeProperties::FindProjection(node, 0); in VisitWordCompareZero()
1635 switch (node->opcode()) { in VisitWordCompareZero()
1639 this, node, kPPC_AddWithOverflow32, kInt16Imm, cont); in VisitWordCompareZero()
1643 this, node, kPPC_SubWithOverflow32, kInt16Imm_Negate, cont); in VisitWordCompareZero()
1646 return EmitInt32MulWithOverflow(this, node, cont); in VisitWordCompareZero()
1650 return VisitBinop<Int64BinopMatcher>(this, node, kPPC_Add64, in VisitWordCompareZero()
1654 return VisitBinop<Int64BinopMatcher>(this, node, kPPC_Sub, in VisitWordCompareZero()
1704 void InstructionSelector::VisitSwitch(Node* node, const SwitchInfo& sw) { in VisitSwitch() argument
1706 InstructionOperand value_operand = g.UseRegister(node->InputAt(0)); in VisitSwitch()
1736 void InstructionSelector::VisitWord32Equal(Node* const node) { in VisitWord32Equal() argument
1737 FlagsContinuation cont = FlagsContinuation::ForSet(kEqual, node); in VisitWord32Equal()
1738 VisitWord32Compare(this, node, &cont); in VisitWord32Equal()
1742 void InstructionSelector::VisitInt32LessThan(Node* node) { in VisitInt32LessThan() argument
1743 FlagsContinuation cont = FlagsContinuation::ForSet(kSignedLessThan, node); in VisitInt32LessThan()
1744 VisitWord32Compare(this, node, &cont); in VisitInt32LessThan()
1748 void InstructionSelector::VisitInt32LessThanOrEqual(Node* node) { in VisitInt32LessThanOrEqual() argument
1750 FlagsContinuation::ForSet(kSignedLessThanOrEqual, node); in VisitInt32LessThanOrEqual()
1751 VisitWord32Compare(this, node, &cont); in VisitInt32LessThanOrEqual()
1755 void InstructionSelector::VisitUint32LessThan(Node* node) { in VisitUint32LessThan() argument
1756 FlagsContinuation cont = FlagsContinuation::ForSet(kUnsignedLessThan, node); in VisitUint32LessThan()
1757 VisitWord32Compare(this, node, &cont); in VisitUint32LessThan()
1761 void InstructionSelector::VisitUint32LessThanOrEqual(Node* node) { in VisitUint32LessThanOrEqual() argument
1763 FlagsContinuation::ForSet(kUnsignedLessThanOrEqual, node); in VisitUint32LessThanOrEqual()
1764 VisitWord32Compare(this, node, &cont); in VisitUint32LessThanOrEqual()
1769 void InstructionSelector::VisitWord64Equal(Node* const node) { in VisitWord64Equal() argument
1770 FlagsContinuation cont = FlagsContinuation::ForSet(kEqual, node); in VisitWord64Equal()
1771 VisitWord64Compare(this, node, &cont); in VisitWord64Equal()
1775 void InstructionSelector::VisitInt64LessThan(Node* node) { in VisitInt64LessThan() argument
1776 FlagsContinuation cont = FlagsContinuation::ForSet(kSignedLessThan, node); in VisitInt64LessThan()
1777 VisitWord64Compare(this, node, &cont); in VisitInt64LessThan()
1781 void InstructionSelector::VisitInt64LessThanOrEqual(Node* node) { in VisitInt64LessThanOrEqual() argument
1783 FlagsContinuation::ForSet(kSignedLessThanOrEqual, node); in VisitInt64LessThanOrEqual()
1784 VisitWord64Compare(this, node, &cont); in VisitInt64LessThanOrEqual()
1788 void InstructionSelector::VisitUint64LessThan(Node* node) { in VisitUint64LessThan() argument
1789 FlagsContinuation cont = FlagsContinuation::ForSet(kUnsignedLessThan, node); in VisitUint64LessThan()
1790 VisitWord64Compare(this, node, &cont); in VisitUint64LessThan()
1794 void InstructionSelector::VisitUint64LessThanOrEqual(Node* node) { in VisitUint64LessThanOrEqual() argument
1796 FlagsContinuation::ForSet(kUnsignedLessThanOrEqual, node); in VisitUint64LessThanOrEqual()
1797 VisitWord64Compare(this, node, &cont); in VisitUint64LessThanOrEqual()
1801 void InstructionSelector::VisitInt32MulWithOverflow(Node* node) { in VisitInt32MulWithOverflow() argument
1802 if (Node* ovf = NodeProperties::FindProjection(node, 1)) { in VisitInt32MulWithOverflow()
1804 return EmitInt32MulWithOverflow(this, node, &cont); in VisitInt32MulWithOverflow()
1807 EmitInt32MulWithOverflow(this, node, &cont); in VisitInt32MulWithOverflow()
1811 void InstructionSelector::VisitFloat32Equal(Node* node) { in VisitFloat32Equal() argument
1812 FlagsContinuation cont = FlagsContinuation::ForSet(kEqual, node); in VisitFloat32Equal()
1813 VisitFloat32Compare(this, node, &cont); in VisitFloat32Equal()
1817 void InstructionSelector::VisitFloat32LessThan(Node* node) { in VisitFloat32LessThan() argument
1818 FlagsContinuation cont = FlagsContinuation::ForSet(kUnsignedLessThan, node); in VisitFloat32LessThan()
1819 VisitFloat32Compare(this, node, &cont); in VisitFloat32LessThan()
1823 void InstructionSelector::VisitFloat32LessThanOrEqual(Node* node) { in VisitFloat32LessThanOrEqual() argument
1825 FlagsContinuation::ForSet(kUnsignedLessThanOrEqual, node); in VisitFloat32LessThanOrEqual()
1826 VisitFloat32Compare(this, node, &cont); in VisitFloat32LessThanOrEqual()
1830 void InstructionSelector::VisitFloat64Equal(Node* node) { in VisitFloat64Equal() argument
1831 FlagsContinuation cont = FlagsContinuation::ForSet(kEqual, node); in VisitFloat64Equal()
1832 VisitFloat64Compare(this, node, &cont); in VisitFloat64Equal()
1836 void InstructionSelector::VisitFloat64LessThan(Node* node) { in VisitFloat64LessThan() argument
1837 FlagsContinuation cont = FlagsContinuation::ForSet(kUnsignedLessThan, node); in VisitFloat64LessThan()
1838 VisitFloat64Compare(this, node, &cont); in VisitFloat64LessThan()
1842 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { in VisitFloat64LessThanOrEqual() argument
1844 FlagsContinuation::ForSet(kUnsignedLessThanOrEqual, node); in VisitFloat64LessThanOrEqual()
1845 VisitFloat64Compare(this, node, &cont); in VisitFloat64LessThanOrEqual()
1850 Node* node) { in EmitPrepareArguments() argument
1862 Emit(kPPC_StoreToStackSlot, g.NoOutput(), g.UseRegister(input.node), in EmitPrepareArguments()
1870 if (input.node == nullptr) continue; in EmitPrepareArguments()
1871 Emit(kPPC_Push, g.NoOutput(), g.UseRegister(input.node)); in EmitPrepareArguments()
1881 void InstructionSelector::VisitFloat64ExtractLowWord32(Node* node) { in VisitFloat64ExtractLowWord32() argument
1883 Emit(kPPC_DoubleExtractLowWord32, g.DefineAsRegister(node), in VisitFloat64ExtractLowWord32()
1884 g.UseRegister(node->InputAt(0))); in VisitFloat64ExtractLowWord32()
1888 void InstructionSelector::VisitFloat64ExtractHighWord32(Node* node) { in VisitFloat64ExtractHighWord32() argument
1890 Emit(kPPC_DoubleExtractHighWord32, g.DefineAsRegister(node), in VisitFloat64ExtractHighWord32()
1891 g.UseRegister(node->InputAt(0))); in VisitFloat64ExtractHighWord32()
1895 void InstructionSelector::VisitFloat64InsertLowWord32(Node* node) { in VisitFloat64InsertLowWord32() argument
1897 Node* left = node->InputAt(0); in VisitFloat64InsertLowWord32()
1898 Node* right = node->InputAt(1); in VisitFloat64InsertLowWord32()
1900 CanCover(node, left)) { in VisitFloat64InsertLowWord32()
1902 Emit(kPPC_DoubleConstruct, g.DefineAsRegister(node), g.UseRegister(left), in VisitFloat64InsertLowWord32()
1906 Emit(kPPC_DoubleInsertLowWord32, g.DefineSameAsFirst(node), in VisitFloat64InsertLowWord32()
1911 void InstructionSelector::VisitFloat64InsertHighWord32(Node* node) { in VisitFloat64InsertHighWord32() argument
1913 Node* left = node->InputAt(0); in VisitFloat64InsertHighWord32()
1914 Node* right = node->InputAt(1); in VisitFloat64InsertHighWord32()
1916 CanCover(node, left)) { in VisitFloat64InsertHighWord32()
1918 Emit(kPPC_DoubleConstruct, g.DefineAsRegister(node), g.UseRegister(right), in VisitFloat64InsertHighWord32()
1922 Emit(kPPC_DoubleInsertHighWord32, g.DefineSameAsFirst(node), in VisitFloat64InsertHighWord32()
1926 void InstructionSelector::VisitWord32AtomicLoad(Node* node) { in VisitWord32AtomicLoad() argument
1927 LoadRepresentation load_rep = LoadRepresentationOf(node->op()); in VisitWord32AtomicLoad()
1929 Node* base = node->InputAt(0); in VisitWord32AtomicLoad()
1930 Node* index = node->InputAt(1); in VisitWord32AtomicLoad()
1949 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(index)); in VisitWord32AtomicLoad()
1952 void InstructionSelector::VisitWord32AtomicStore(Node* node) { in VisitWord32AtomicStore() argument
1953 MachineRepresentation rep = AtomicStoreRepresentationOf(node->op()); in VisitWord32AtomicStore()
1955 Node* base = node->InputAt(0); in VisitWord32AtomicStore()
1956 Node* index = node->InputAt(1); in VisitWord32AtomicStore()
1957 Node* value = node->InputAt(2); in VisitWord32AtomicStore()
1983 void InstructionSelector::VisitWord32AtomicExchange(Node* node) { in VisitWord32AtomicExchange() argument
1985 Node* base = node->InputAt(0); in VisitWord32AtomicExchange()
1986 Node* index = node->InputAt(1); in VisitWord32AtomicExchange()
1987 Node* value = node->InputAt(2); in VisitWord32AtomicExchange()
1989 MachineType type = AtomicOpType(node->op()); in VisitWord32AtomicExchange()
2012 outputs[0] = g.UseUniqueRegister(node); in VisitWord32AtomicExchange()
2017 void InstructionSelector::VisitWord32AtomicCompareExchange(Node* node) { in VisitWord32AtomicCompareExchange() argument
2019 Node* base = node->InputAt(0); in VisitWord32AtomicCompareExchange()
2020 Node* index = node->InputAt(1); in VisitWord32AtomicCompareExchange()
2021 Node* old_value = node->InputAt(2); in VisitWord32AtomicCompareExchange()
2022 Node* new_value = node->InputAt(3); in VisitWord32AtomicCompareExchange()
2024 MachineType type = AtomicOpType(node->op()); in VisitWord32AtomicCompareExchange()
2052 outputs[output_count++] = g.DefineAsRegister(node); in VisitWord32AtomicCompareExchange()
2058 Node* node, ArchOpcode int8_op, ArchOpcode uint8_op, ArchOpcode int16_op, in VisitWord32AtomicBinaryOperation() argument
2061 Node* base = node->InputAt(0); in VisitWord32AtomicBinaryOperation()
2062 Node* index = node->InputAt(1); in VisitWord32AtomicBinaryOperation()
2063 Node* value = node->InputAt(2); in VisitWord32AtomicBinaryOperation()
2065 MachineType type = AtomicOpType(node->op()); in VisitWord32AtomicBinaryOperation()
2093 outputs[output_count++] = g.DefineAsRegister(node); in VisitWord32AtomicBinaryOperation()
2099 void InstructionSelector::VisitWord32Atomic##op(Node* node) { \
2101 node, kWord32Atomic##op##Int8, kWord32Atomic##op##Uint8, \
2113 void InstructionSelector::VisitInt32AbsWithOverflow(Node* node) { in VISIT_ATOMIC_BINOP()
2117 void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) { in VisitInt64AbsWithOverflow() argument
2121 void InstructionSelector::VisitI32x4Splat(Node* node) { UNIMPLEMENTED(); } in VisitI32x4Splat() argument
2123 void InstructionSelector::VisitI32x4ExtractLane(Node* node) { UNIMPLEMENTED(); } in VisitI32x4ExtractLane() argument
2125 void InstructionSelector::VisitI32x4ReplaceLane(Node* node) { UNIMPLEMENTED(); } in VisitI32x4ReplaceLane() argument
2127 void InstructionSelector::VisitI32x4Add(Node* node) { UNIMPLEMENTED(); } in VisitI32x4Add() argument
2129 void InstructionSelector::VisitI32x4Sub(Node* node) { UNIMPLEMENTED(); } in VisitI32x4Sub() argument
2131 void InstructionSelector::VisitI32x4Shl(Node* node) { UNIMPLEMENTED(); } in VisitI32x4Shl() argument
2133 void InstructionSelector::VisitI32x4ShrS(Node* node) { UNIMPLEMENTED(); } in VisitI32x4ShrS() argument
2135 void InstructionSelector::VisitI32x4Mul(Node* node) { UNIMPLEMENTED(); } in VisitI32x4Mul() argument
2137 void InstructionSelector::VisitI32x4MaxS(Node* node) { UNIMPLEMENTED(); } in VisitI32x4MaxS() argument
2139 void InstructionSelector::VisitI32x4MinS(Node* node) { UNIMPLEMENTED(); } in VisitI32x4MinS() argument
2141 void InstructionSelector::VisitI32x4Eq(Node* node) { UNIMPLEMENTED(); } in VisitI32x4Eq() argument
2143 void InstructionSelector::VisitI32x4Ne(Node* node) { UNIMPLEMENTED(); } in VisitI32x4Ne() argument
2145 void InstructionSelector::VisitI32x4MinU(Node* node) { UNIMPLEMENTED(); } in VisitI32x4MinU() argument
2147 void InstructionSelector::VisitI32x4MaxU(Node* node) { UNIMPLEMENTED(); } in VisitI32x4MaxU() argument
2149 void InstructionSelector::VisitI32x4ShrU(Node* node) { UNIMPLEMENTED(); } in VisitI32x4ShrU() argument
2151 void InstructionSelector::VisitI32x4Neg(Node* node) { UNIMPLEMENTED(); } in VisitI32x4Neg() argument
2153 void InstructionSelector::VisitI32x4GtS(Node* node) { UNIMPLEMENTED(); } in VisitI32x4GtS() argument
2155 void InstructionSelector::VisitI32x4GeS(Node* node) { UNIMPLEMENTED(); } in VisitI32x4GeS() argument
2157 void InstructionSelector::VisitI32x4GtU(Node* node) { UNIMPLEMENTED(); } in VisitI32x4GtU() argument
2159 void InstructionSelector::VisitI32x4GeU(Node* node) { UNIMPLEMENTED(); } in VisitI32x4GeU() argument
2161 void InstructionSelector::VisitI16x8Splat(Node* node) { UNIMPLEMENTED(); } in VisitI16x8Splat() argument
2163 void InstructionSelector::VisitI16x8ExtractLane(Node* node) { UNIMPLEMENTED(); } in VisitI16x8ExtractLane() argument
2165 void InstructionSelector::VisitI16x8ReplaceLane(Node* node) { UNIMPLEMENTED(); } in VisitI16x8ReplaceLane() argument
2167 void InstructionSelector::VisitI16x8Shl(Node* node) { UNIMPLEMENTED(); } in VisitI16x8Shl() argument
2169 void InstructionSelector::VisitI16x8ShrS(Node* node) { UNIMPLEMENTED(); } in VisitI16x8ShrS() argument
2171 void InstructionSelector::VisitI16x8ShrU(Node* node) { UNIMPLEMENTED(); } in VisitI16x8ShrU() argument
2173 void InstructionSelector::VisitI16x8Add(Node* node) { UNIMPLEMENTED(); } in VisitI16x8Add() argument
2175 void InstructionSelector::VisitI16x8AddSaturateS(Node* node) { in VisitI16x8AddSaturateS() argument
2179 void InstructionSelector::VisitI16x8Sub(Node* node) { UNIMPLEMENTED(); } in VisitI16x8Sub() argument
2181 void InstructionSelector::VisitI16x8SubSaturateS(Node* node) { in VisitI16x8SubSaturateS() argument
2185 void InstructionSelector::VisitI16x8Mul(Node* node) { UNIMPLEMENTED(); } in VisitI16x8Mul() argument
2187 void InstructionSelector::VisitI16x8MinS(Node* node) { UNIMPLEMENTED(); } in VisitI16x8MinS() argument
2189 void InstructionSelector::VisitI16x8MaxS(Node* node) { UNIMPLEMENTED(); } in VisitI16x8MaxS() argument
2191 void InstructionSelector::VisitI16x8Eq(Node* node) { UNIMPLEMENTED(); } in VisitI16x8Eq() argument
2193 void InstructionSelector::VisitI16x8Ne(Node* node) { UNIMPLEMENTED(); } in VisitI16x8Ne() argument
2195 void InstructionSelector::VisitI16x8AddSaturateU(Node* node) { in VisitI16x8AddSaturateU() argument
2199 void InstructionSelector::VisitI16x8SubSaturateU(Node* node) { in VisitI16x8SubSaturateU() argument
2203 void InstructionSelector::VisitI16x8MinU(Node* node) { UNIMPLEMENTED(); } in VisitI16x8MinU() argument
2205 void InstructionSelector::VisitI16x8MaxU(Node* node) { UNIMPLEMENTED(); } in VisitI16x8MaxU() argument
2207 void InstructionSelector::VisitI16x8Neg(Node* node) { UNIMPLEMENTED(); } in VisitI16x8Neg() argument
2209 void InstructionSelector::VisitI16x8GtS(Node* node) { UNIMPLEMENTED(); } in VisitI16x8GtS() argument
2211 void InstructionSelector::VisitI16x8GeS(Node* node) { UNIMPLEMENTED(); } in VisitI16x8GeS() argument
2213 void InstructionSelector::VisitI16x8GtU(Node* node) { UNIMPLEMENTED(); } in VisitI16x8GtU() argument
2215 void InstructionSelector::VisitI16x8GeU(Node* node) { UNIMPLEMENTED(); } in VisitI16x8GeU() argument
2217 void InstructionSelector::VisitI8x16Neg(Node* node) { UNIMPLEMENTED(); } in VisitI8x16Neg() argument
2219 void InstructionSelector::VisitI8x16Splat(Node* node) { UNIMPLEMENTED(); } in VisitI8x16Splat() argument
2221 void InstructionSelector::VisitI8x16ExtractLane(Node* node) { UNIMPLEMENTED(); } in VisitI8x16ExtractLane() argument
2223 void InstructionSelector::VisitI8x16ReplaceLane(Node* node) { UNIMPLEMENTED(); } in VisitI8x16ReplaceLane() argument
2225 void InstructionSelector::VisitI8x16Add(Node* node) { UNIMPLEMENTED(); } in VisitI8x16Add() argument
2227 void InstructionSelector::VisitI8x16AddSaturateS(Node* node) { in VisitI8x16AddSaturateS() argument
2231 void InstructionSelector::VisitI8x16Sub(Node* node) { UNIMPLEMENTED(); } in VisitI8x16Sub() argument
2233 void InstructionSelector::VisitI8x16SubSaturateS(Node* node) { in VisitI8x16SubSaturateS() argument
2237 void InstructionSelector::VisitI8x16MinS(Node* node) { UNIMPLEMENTED(); } in VisitI8x16MinS() argument
2239 void InstructionSelector::VisitI8x16MaxS(Node* node) { UNIMPLEMENTED(); } in VisitI8x16MaxS() argument
2241 void InstructionSelector::VisitI8x16Eq(Node* node) { UNIMPLEMENTED(); } in VisitI8x16Eq() argument
2243 void InstructionSelector::VisitI8x16Ne(Node* node) { UNIMPLEMENTED(); } in VisitI8x16Ne() argument
2245 void InstructionSelector::VisitI8x16GtS(Node* node) { UNIMPLEMENTED(); } in VisitI8x16GtS() argument
2247 void InstructionSelector::VisitI8x16GeS(Node* node) { UNIMPLEMENTED(); } in VisitI8x16GeS() argument
2249 void InstructionSelector::VisitI8x16AddSaturateU(Node* node) { in VisitI8x16AddSaturateU() argument
2253 void InstructionSelector::VisitI8x16SubSaturateU(Node* node) { in VisitI8x16SubSaturateU() argument
2257 void InstructionSelector::VisitI8x16MinU(Node* node) { UNIMPLEMENTED(); } in VisitI8x16MinU() argument
2259 void InstructionSelector::VisitI8x16MaxU(Node* node) { UNIMPLEMENTED(); } in VisitI8x16MaxU() argument
2261 void InstructionSelector::VisitI8x16GtU(Node* node) { UNIMPLEMENTED(); } in VisitI8x16GtU() argument
2263 void InstructionSelector::VisitI8x16GeU(Node* node) { UNIMPLEMENTED(); } in VisitI8x16GeU() argument
2265 void InstructionSelector::VisitS128And(Node* node) { UNIMPLEMENTED(); } in VisitS128And() argument
2267 void InstructionSelector::VisitS128Or(Node* node) { UNIMPLEMENTED(); } in VisitS128Or() argument
2269 void InstructionSelector::VisitS128Xor(Node* node) { UNIMPLEMENTED(); } in VisitS128Xor() argument
2271 void InstructionSelector::VisitS128Not(Node* node) { UNIMPLEMENTED(); } in VisitS128Not() argument
2273 void InstructionSelector::VisitS128Zero(Node* node) { UNIMPLEMENTED(); } in VisitS128Zero() argument
2275 void InstructionSelector::VisitF32x4Eq(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Eq() argument
2277 void InstructionSelector::VisitF32x4Ne(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Ne() argument
2279 void InstructionSelector::VisitF32x4Lt(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Lt() argument
2281 void InstructionSelector::VisitF32x4Le(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Le() argument
2283 void InstructionSelector::VisitF32x4Splat(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Splat() argument
2285 void InstructionSelector::VisitF32x4ExtractLane(Node* node) { UNIMPLEMENTED(); } in VisitF32x4ExtractLane() argument
2287 void InstructionSelector::VisitF32x4ReplaceLane(Node* node) { UNIMPLEMENTED(); } in VisitF32x4ReplaceLane() argument
2291 Node* node) { in EmitPrepareResults() argument
2295 void InstructionSelector::VisitF32x4Add(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Add() argument
2297 void InstructionSelector::VisitF32x4Sub(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Sub() argument
2299 void InstructionSelector::VisitF32x4Mul(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Mul() argument
2301 void InstructionSelector::VisitF32x4Min(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Min() argument
2303 void InstructionSelector::VisitF32x4Max(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Max() argument
2305 void InstructionSelector::VisitS128Select(Node* node) { UNIMPLEMENTED(); } in VisitS128Select() argument
2307 void InstructionSelector::VisitF32x4Neg(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Neg() argument
2309 void InstructionSelector::VisitF32x4Abs(Node* node) { UNIMPLEMENTED(); } in VisitF32x4Abs() argument
2311 void InstructionSelector::VisitF32x4RecipSqrtApprox(Node* node) { in VisitF32x4RecipSqrtApprox() argument
2315 void InstructionSelector::VisitF32x4RecipApprox(Node* node) { UNIMPLEMENTED(); } in VisitF32x4RecipApprox() argument
2317 void InstructionSelector::VisitF32x4AddHoriz(Node* node) { UNIMPLEMENTED(); } in VisitF32x4AddHoriz() argument
2318 void InstructionSelector::VisitI32x4AddHoriz(Node* node) { UNIMPLEMENTED(); } in VisitI32x4AddHoriz() argument
2319 void InstructionSelector::VisitI16x8AddHoriz(Node* node) { UNIMPLEMENTED(); } in VisitI16x8AddHoriz() argument