| Index: src/compiler/machine-operator-reducer.cc
|
| diff --git a/src/compiler/machine-operator-reducer.cc b/src/compiler/machine-operator-reducer.cc
|
| index 5630bc8ef0ffae22a16159996867e751e3ab3884..4be8c6e0369d49b50cc6545f63479154fcaa5692 100644
|
| --- a/src/compiler/machine-operator-reducer.cc
|
| +++ b/src/compiler/machine-operator-reducer.cc
|
| @@ -433,6 +433,8 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| if (m.IsChangeFloat32ToFloat64()) return Replace(m.node()->InputAt(0));
|
| break;
|
| }
|
| + case IrOpcode::kFloat64InsertWord32:
|
| + return ReduceFloat64InsertWord32(node);
|
| case IrOpcode::kStore:
|
| return ReduceStore(node);
|
| default:
|
| @@ -975,6 +977,19 @@ Reduction MachineOperatorReducer::ReduceWord32Or(Node* node) {
|
| }
|
|
|
|
|
| +Reduction MachineOperatorReducer::ReduceFloat64InsertWord32(Node* node) {
|
| + DCHECK_EQ(IrOpcode::kFloat64InsertWord32, node->opcode());
|
| + Float64Matcher mlhs(node->InputAt(0));
|
| + Uint32Matcher mrhs(node->InputAt(1));
|
| + if (mlhs.HasValue() && mrhs.HasValue()) {
|
| + return ReplaceFloat64(bit_cast<double>(
|
| + base::bits::InsertElement64(bit_cast<uint64_t>(mlhs.Value()),
|
| + mrhs.Value(), OpParameter<int>(node))));
|
| + }
|
| + return NoChange();
|
| +}
|
| +
|
| +
|
| CommonOperatorBuilder* MachineOperatorReducer::common() const {
|
| return jsgraph()->common();
|
| }
|
|
|