Lines Matching refs:selector
16 explicit ArmOperandGenerator(InstructionSelector* selector) in ArmOperandGenerator() argument
17 : OperandGenerator(selector) {} in ArmOperandGenerator()
112 static void VisitRRRFloat64(InstructionSelector* selector, ArchOpcode opcode, in VisitRRRFloat64() argument
114 ArmOperandGenerator g(selector); in VisitRRRFloat64()
115 selector->Emit(opcode, g.DefineAsRegister(node), in VisitRRRFloat64()
121 static bool TryMatchROR(InstructionSelector* selector, in TryMatchROR() argument
125 ArmOperandGenerator g(selector); in TryMatchROR()
140 static inline bool TryMatchASR(InstructionSelector* selector, in TryMatchASR() argument
144 ArmOperandGenerator g(selector); in TryMatchASR()
159 static inline bool TryMatchLSL(InstructionSelector* selector, in TryMatchLSL() argument
163 ArmOperandGenerator g(selector); in TryMatchLSL()
178 static inline bool TryMatchLSR(InstructionSelector* selector, in TryMatchLSR() argument
182 ArmOperandGenerator g(selector); in TryMatchLSR()
197 static inline bool TryMatchShift(InstructionSelector* selector, in TryMatchShift() argument
202 TryMatchASR(selector, opcode_return, node, value_return, shift_return) || in TryMatchShift()
203 TryMatchLSL(selector, opcode_return, node, value_return, shift_return) || in TryMatchShift()
204 TryMatchLSR(selector, opcode_return, node, value_return, shift_return) || in TryMatchShift()
205 TryMatchROR(selector, opcode_return, node, value_return, shift_return)); in TryMatchShift()
209 static inline bool TryMatchImmediateOrShift(InstructionSelector* selector, in TryMatchImmediateOrShift() argument
214 ArmOperandGenerator g(selector); in TryMatchImmediateOrShift()
221 if (TryMatchShift(selector, opcode_return, node, &inputs[0], &inputs[1])) { in TryMatchImmediateOrShift()
229 static void VisitBinop(InstructionSelector* selector, Node* node, in VisitBinop() argument
232 ArmOperandGenerator g(selector); in VisitBinop()
239 if (TryMatchImmediateOrShift(selector, &opcode, m.right().node(), in VisitBinop()
243 } else if (TryMatchImmediateOrShift(selector, &reverse_opcode, in VisitBinop()
271 Instruction* instr = selector->Emit(cont->Encode(opcode), output_count, in VisitBinop()
277 static void VisitBinop(InstructionSelector* selector, Node* node, in VisitBinop() argument
280 VisitBinop(selector, node, opcode, reverse_opcode, &cont); in VisitBinop()
380 static inline void EmitBic(InstructionSelector* selector, Node* node, in EmitBic() argument
382 ArmOperandGenerator g(selector); in EmitBic()
386 if (TryMatchShift(selector, &opcode, right, &value_operand, &shift_operand)) { in EmitBic()
387 selector->Emit(opcode, g.DefineAsRegister(node), g.UseRegister(left), in EmitBic()
391 selector->Emit(opcode | AddressingModeField::encode(kMode_Operand2_R), in EmitBic()
473 static inline void VisitShift(InstructionSelector* selector, Node* node, in VisitShift() argument
476 ArmOperandGenerator g(selector); in VisitShift()
483 CHECK(try_match_shift(selector, &opcode, node, &inputs[0], &inputs[1])); in VisitShift()
501 Instruction* instr = selector->Emit(cont->Encode(opcode), output_count, in VisitShift()
508 static inline void VisitShift(InstructionSelector* selector, Node* node, in VisitShift() argument
511 VisitShift(selector, node, try_match_shift, &cont); in VisitShift()
612 static void EmitDiv(InstructionSelector* selector, ArchOpcode div_opcode, in EmitDiv() argument
617 ArmOperandGenerator g(selector); in EmitDiv()
618 if (selector->IsSupported(SUDIV)) { in EmitDiv()
619 selector->Emit(div_opcode, result_operand, left_operand, right_operand); in EmitDiv()
625 selector->Emit(f64i32_opcode, left_double_operand, left_operand); in EmitDiv()
626 selector->Emit(f64i32_opcode, right_double_operand, right_operand); in EmitDiv()
627 selector->Emit(kArmVdivF64, result_double_operand, left_double_operand, in EmitDiv()
629 selector->Emit(i32f64_opcode, result_operand, result_double_operand); in EmitDiv()
633 static void VisitDiv(InstructionSelector* selector, Node* node, in VisitDiv() argument
636 ArmOperandGenerator g(selector); in VisitDiv()
638 EmitDiv(selector, div_opcode, f64i32_opcode, i32f64_opcode, in VisitDiv()
654 static void VisitMod(InstructionSelector* selector, Node* node, in VisitMod() argument
657 ArmOperandGenerator g(selector); in VisitMod()
663 EmitDiv(selector, div_opcode, f64i32_opcode, i32f64_opcode, div_operand, in VisitMod()
665 if (selector->IsSupported(MLS)) { in VisitMod()
666 selector->Emit(kArmMls, result_operand, div_operand, right_operand, in VisitMod()
671 selector->Emit(kArmMul, mul_operand, div_operand, right_operand); in VisitMod()
672 selector->Emit(kArmSub, result_operand, left_operand, mul_operand); in VisitMod()
846 static void VisitWordCompare(InstructionSelector* selector, Node* node, in VisitWordCompare() argument
849 ArmOperandGenerator g(selector); in VisitWordCompare()
856 if (TryMatchImmediateOrShift(selector, &opcode, m.right().node(), in VisitWordCompare()
860 } else if (TryMatchImmediateOrShift(selector, &opcode, m.left().node(), in VisitWordCompare()
883 Instruction* instr = selector->Emit(cont->Encode(opcode), output_count, in VisitWordCompare()