| Index: src/hydrogen-representation-changes.cc
|
| diff --git a/src/hydrogen-representation-changes.cc b/src/hydrogen-representation-changes.cc
|
| index 07fc8be38c0437951b05ea4210db9e5b196f1d0a..95a1515a6f2a5ac82054113264284e77ea90544e 100644
|
| --- a/src/hydrogen-representation-changes.cc
|
| +++ b/src/hydrogen-representation-changes.cc
|
| @@ -59,8 +59,18 @@ void HRepresentationChangesPhase::InsertRepresentationChangeForUse(
|
| }
|
|
|
| if (new_value == NULL) {
|
| - new_value = new(graph()->zone()) HChange(
|
| - value, to, is_truncating_to_smi, is_truncating_to_int);
|
| + if (((to.IsFloat32x4() || to.IsInt32x4()) &&
|
| + !value->representation().IsTagged()) ||
|
| + ((value->representation().IsFloat32x4() ||
|
| + value->representation().IsInt32x4()) &&
|
| + !to.IsTagged())) {
|
| + new_value = HUnarySIMDOperation::New(graph()->zone(),
|
| + graph()->entry_block()->last_environment()->context(),
|
| + value, kFloat32x4OrInt32x4Change, to);
|
| + } else {
|
| + new_value = new(graph()->zone()) HChange(
|
| + value, to, is_truncating_to_smi, is_truncating_to_int);
|
| + }
|
| if (use_value->operand_position(use_index) != RelocInfo::kNoPosition) {
|
| new_value->set_position(use_value->operand_position(use_index));
|
| } else {
|
|
|