| Index: src/compiler/machine-operator.cc
|
| diff --git a/src/compiler/machine-operator.cc b/src/compiler/machine-operator.cc
|
| index 07bcf3f77f1b208a2c7dc8c655151aede2d0b084..b7ddcdb339b1c398c5d8134487087d373e721efe 100644
|
| --- a/src/compiler/machine-operator.cc
|
| +++ b/src/compiler/machine-operator.cc
|
| @@ -122,18 +122,13 @@ CheckedStoreRepresentation CheckedStoreRepresentationOf(Operator const* op) {
|
| V(Float32Sub, Operator::kNoProperties, 2, 0, 1) \
|
| V(Float32Mul, Operator::kCommutative, 2, 0, 1) \
|
| V(Float32Div, Operator::kNoProperties, 2, 0, 1) \
|
| - V(Float32Abs, Operator::kNoProperties, 1, 0, 1) \
|
| V(Float32Sqrt, Operator::kNoProperties, 1, 0, 1) \
|
| V(Float64Add, Operator::kCommutative, 2, 0, 1) \
|
| V(Float64Sub, Operator::kNoProperties, 2, 0, 1) \
|
| V(Float64Mul, Operator::kCommutative, 2, 0, 1) \
|
| V(Float64Div, Operator::kNoProperties, 2, 0, 1) \
|
| V(Float64Mod, Operator::kNoProperties, 2, 0, 1) \
|
| - V(Float64Abs, Operator::kNoProperties, 1, 0, 1) \
|
| V(Float64Sqrt, Operator::kNoProperties, 1, 0, 1) \
|
| - V(Float64RoundDown, Operator::kNoProperties, 1, 0, 1) \
|
| - V(Float64RoundTruncate, Operator::kNoProperties, 1, 0, 1) \
|
| - V(Float64RoundTiesAway, Operator::kNoProperties, 1, 0, 1) \
|
| V(Float32Equal, Operator::kCommutative, 2, 0, 1) \
|
| V(Float32LessThan, Operator::kNoProperties, 2, 0, 1) \
|
| V(Float32LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
|
| @@ -144,12 +139,19 @@ CheckedStoreRepresentation CheckedStoreRepresentationOf(Operator const* op) {
|
| V(Float64ExtractHighWord32, Operator::kNoProperties, 1, 0, 1) \
|
| V(Float64InsertLowWord32, Operator::kNoProperties, 2, 0, 1) \
|
| V(Float64InsertHighWord32, Operator::kNoProperties, 2, 0, 1) \
|
| - V(Float32Max, Operator::kNoProperties, 2, 0, 1) \
|
| - V(Float32Min, Operator::kNoProperties, 2, 0, 1) \
|
| - V(Float64Max, Operator::kNoProperties, 2, 0, 1) \
|
| - V(Float64Min, Operator::kNoProperties, 2, 0, 1) \
|
| V(LoadStackPointer, Operator::kNoProperties, 0, 0, 1)
|
|
|
| +#define PURE_OPTIONAL_OP_LIST(V) \
|
| + V(Float32Max, Operator::kNoProperties, 2, 0, 1) \
|
| + V(Float32Min, Operator::kNoProperties, 2, 0, 1) \
|
| + V(Float64Max, Operator::kNoProperties, 2, 0, 1) \
|
| + V(Float64Min, Operator::kNoProperties, 2, 0, 1) \
|
| + V(Float32Abs, Operator::kNoProperties, 1, 0, 1) \
|
| + V(Float64Abs, Operator::kNoProperties, 1, 0, 1) \
|
| + V(Float64RoundDown, Operator::kNoProperties, 1, 0, 1) \
|
| + V(Float64RoundTruncate, Operator::kNoProperties, 1, 0, 1) \
|
| + V(Float64RoundTiesAway, Operator::kNoProperties, 1, 0, 1)
|
| +
|
|
|
| #define MACHINE_TYPE_LIST(V) \
|
| V(MachFloat32) \
|
| @@ -184,6 +186,7 @@ struct MachineOperatorGlobalCache {
|
| }; \
|
| Name##Operator k##Name;
|
| PURE_OP_LIST(PURE)
|
| + PURE_OPTIONAL_OP_LIST(PURE)
|
| #undef PURE
|
|
|
| #define LOAD(Type) \
|
| @@ -255,6 +258,13 @@ MachineOperatorBuilder::MachineOperatorBuilder(Zone* zone, MachineType word,
|
| PURE_OP_LIST(PURE)
|
| #undef PURE
|
|
|
| +#define PURE(Name, properties, value_input_count, control_input_count, \
|
| + output_count) \
|
| + const OptionalOperator MachineOperatorBuilder::Name() { \
|
| + return OptionalOperator(flags_ & k##Name ? &cache_.k##Name : nullptr); \
|
| + }
|
| +PURE_OPTIONAL_OP_LIST(PURE)
|
| +#undef PURE
|
|
|
| const Operator* MachineOperatorBuilder::Load(LoadRepresentation rep) {
|
| switch (rep) {
|
|
|