41 #define SHARED(Name, properties, value_input_count, effect_input_count, \
42 control_input_count, effect_output_count, control_output_count) \
44 &CommonOperatorBuilder::Name, IrOpcode::k##Name, properties, \
45 value_input_count, effect_input_count, control_input_count, \
46 effect_output_count, control_output_count \
62 public ::testing::WithParamInterface<SharedOperator> {};
67 TEST_P(CommonSharedOperatorTest, InstancesAreGloballyShared) {
68 const SharedOperator& sop = GetParam();
69 CommonOperatorBuilder common1(zone());
70 CommonOperatorBuilder common2(zone());
71 EXPECT_EQ((common1.*sop.constructor)(), (common2.*sop.constructor)());
75 TEST_P(CommonSharedOperatorTest, NumberOfInputsAndOutputs) {
76 CommonOperatorBuilder common(zone());
77 const SharedOperator& sop = GetParam();
78 const Operator* op = (common.*sop.constructor)();
81 EXPECT_EQ(sop.effect_input_count,
83 EXPECT_EQ(sop.control_input_count,
86 sop.value_input_count + sop.effect_input_count + sop.control_input_count,
90 EXPECT_EQ(sop.effect_output_count,
92 EXPECT_EQ(sop.control_output_count,
97 TEST_P(CommonSharedOperatorTest, OpcodeIsCorrect) {
98 CommonOperatorBuilder common(zone());
99 const SharedOperator& sop = GetParam();
100 const Operator* op = (common.*sop.constructor)();
101 EXPECT_EQ(sop.opcode, op->
opcode());
105 TEST_P(CommonSharedOperatorTest, Properties) {
106 CommonOperatorBuilder common(zone());
107 const SharedOperator& sop = GetParam();
108 const Operator* op = (common.*sop.constructor)();
128 CommonOperatorBuilder*
common() {
return &common_; }
139 std::numeric_limits<float>::max()};
144 TEST_F(CommonOperatorTest, Float32Constant) {
146 const Operator* op = common()->Float32Constant(value);
147 EXPECT_FLOAT_EQ(value, OpParameter<float>(op));
157 TEST_F(CommonOperatorTest, ValueEffect) {
159 const Operator* op = common()->ValueEffect(arguments);
171 const Operator* op = common()->Finish(arguments);
static const char * Mnemonic(Value val)
static int GetTotalInputCount(const Operator *op)
static int GetEffectInputCount(const Operator *op)
static int GetEffectOutputCount(const Operator *op)
static int GetValueInputCount(const Operator *op)
static int GetControlOutputCount(const Operator *op)
static int GetValueOutputCount(const Operator *op)
static int GetControlInputCount(const Operator *op)
Properties properties() const
base::Flags< Property, uint8_t > Properties
CommonOperatorBuilder * common()
CommonOperatorBuilder common_
virtual ~CommonOperatorTest()
#define SHARED(Name, properties, value_input_count, effect_input_count, control_input_count, effect_output_count, control_output_count)
const SharedOperator kSharedOperators[]
const float kFloat32Values[]
std::ostream & operator<<(std::ostream &os, const MachineType &type)
TEST_P(InstructionSelectorDPITest, Parameters)
INSTANTIATE_TEST_CASE_P(InstructionSelectorTest, InstructionSelectorDPITest, ::testing::ValuesIn(kDPIs))
TEST_F(InstructionSelectorTest, ChangeFloat32ToFloat64WithParameter)
static int min(int a, int b)
Debugger support for the V8 JavaScript engine.
static Handle< Value > Throw(Isolate *isolate, const char *message)
Operator::Properties properties
const Operator *(CommonOperatorBuilder::* constructor)()