OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_MIPS. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_MIPS. |
6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) |
7 | 7 |
8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
9 | 9 |
10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
(...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1032 switch (class_id_) { | 1032 switch (class_id_) { |
1033 case kArrayCid: | 1033 case kArrayCid: |
1034 case kImmutableArrayCid: | 1034 case kImmutableArrayCid: |
1035 return CompileType::Dynamic(); | 1035 return CompileType::Dynamic(); |
1036 | 1036 |
1037 case kTypedDataFloat32ArrayCid: | 1037 case kTypedDataFloat32ArrayCid: |
1038 case kTypedDataFloat64ArrayCid: | 1038 case kTypedDataFloat64ArrayCid: |
1039 return CompileType::FromCid(kDoubleCid); | 1039 return CompileType::FromCid(kDoubleCid); |
1040 case kTypedDataFloat32x4ArrayCid: | 1040 case kTypedDataFloat32x4ArrayCid: |
1041 return CompileType::FromCid(kFloat32x4Cid); | 1041 return CompileType::FromCid(kFloat32x4Cid); |
1042 case kTypedDataUint32x4ArrayCid: | 1042 case kTypedDataInt32x4ArrayCid: |
1043 return CompileType::FromCid(kUint32x4Cid); | 1043 return CompileType::FromCid(kInt32x4Cid); |
1044 | 1044 |
1045 case kTypedDataInt8ArrayCid: | 1045 case kTypedDataInt8ArrayCid: |
1046 case kTypedDataUint8ArrayCid: | 1046 case kTypedDataUint8ArrayCid: |
1047 case kTypedDataUint8ClampedArrayCid: | 1047 case kTypedDataUint8ClampedArrayCid: |
1048 case kExternalTypedDataUint8ArrayCid: | 1048 case kExternalTypedDataUint8ArrayCid: |
1049 case kExternalTypedDataUint8ClampedArrayCid: | 1049 case kExternalTypedDataUint8ClampedArrayCid: |
1050 case kTypedDataInt16ArrayCid: | 1050 case kTypedDataInt16ArrayCid: |
1051 case kTypedDataUint16ArrayCid: | 1051 case kTypedDataUint16ArrayCid: |
1052 case kOneByteStringCid: | 1052 case kOneByteStringCid: |
1053 case kTwoByteStringCid: | 1053 case kTwoByteStringCid: |
(...skipping 29 matching lines...) Expand all Loading... |
1083 case kTwoByteStringCid: | 1083 case kTwoByteStringCid: |
1084 return kTagged; | 1084 return kTagged; |
1085 case kTypedDataInt32ArrayCid: | 1085 case kTypedDataInt32ArrayCid: |
1086 case kTypedDataUint32ArrayCid: | 1086 case kTypedDataUint32ArrayCid: |
1087 // Instruction can deoptimize if we optimistically assumed that the result | 1087 // Instruction can deoptimize if we optimistically assumed that the result |
1088 // fits into Smi. | 1088 // fits into Smi. |
1089 return CanDeoptimize() ? kTagged : kUnboxedMint; | 1089 return CanDeoptimize() ? kTagged : kUnboxedMint; |
1090 case kTypedDataFloat32ArrayCid: | 1090 case kTypedDataFloat32ArrayCid: |
1091 case kTypedDataFloat64ArrayCid: | 1091 case kTypedDataFloat64ArrayCid: |
1092 return kUnboxedDouble; | 1092 return kUnboxedDouble; |
1093 case kTypedDataUint32x4ArrayCid: | 1093 case kTypedDataInt32x4ArrayCid: |
1094 return kUnboxedUint32x4; | 1094 return kUnboxedInt32x4; |
1095 case kTypedDataFloat32x4ArrayCid: | 1095 case kTypedDataFloat32x4ArrayCid: |
1096 return kUnboxedFloat32x4; | 1096 return kUnboxedFloat32x4; |
1097 default: | 1097 default: |
1098 UNIMPLEMENTED(); | 1098 UNIMPLEMENTED(); |
1099 return kTagged; | 1099 return kTagged; |
1100 } | 1100 } |
1101 } | 1101 } |
1102 | 1102 |
1103 | 1103 |
1104 LocationSummary* LoadIndexedInstr::MakeLocationSummary() const { | 1104 LocationSummary* LoadIndexedInstr::MakeLocationSummary() const { |
1105 const intptr_t kNumInputs = 2; | 1105 const intptr_t kNumInputs = 2; |
1106 const intptr_t kNumTemps = 0; | 1106 const intptr_t kNumTemps = 0; |
1107 LocationSummary* locs = | 1107 LocationSummary* locs = |
1108 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 1108 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
1109 locs->set_in(0, Location::RequiresRegister()); | 1109 locs->set_in(0, Location::RequiresRegister()); |
1110 // The smi index is either untagged (element size == 1), or it is left smi | 1110 // The smi index is either untagged (element size == 1), or it is left smi |
1111 // tagged (for all element sizes > 1). | 1111 // tagged (for all element sizes > 1). |
1112 // TODO(regis): Revisit and see if the index can be immediate. | 1112 // TODO(regis): Revisit and see if the index can be immediate. |
1113 locs->set_in(1, Location::WritableRegister()); | 1113 locs->set_in(1, Location::WritableRegister()); |
1114 if ((representation() == kUnboxedDouble) || | 1114 if ((representation() == kUnboxedDouble) || |
1115 (representation() == kUnboxedFloat32x4) || | 1115 (representation() == kUnboxedFloat32x4) || |
1116 (representation() == kUnboxedUint32x4)) { | 1116 (representation() == kUnboxedInt32x4)) { |
1117 locs->set_out(Location::RequiresFpuRegister()); | 1117 locs->set_out(Location::RequiresFpuRegister()); |
1118 } else { | 1118 } else { |
1119 locs->set_out(Location::RequiresRegister()); | 1119 locs->set_out(Location::RequiresRegister()); |
1120 } | 1120 } |
1121 return locs; | 1121 return locs; |
1122 } | 1122 } |
1123 | 1123 |
1124 | 1124 |
1125 void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 1125 void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
1126 __ TraceSimMsg("LoadIndexedInstr"); | 1126 __ TraceSimMsg("LoadIndexedInstr"); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1166 // If the data offset doesn't fit into the 18 bits we get for the addressing | 1166 // If the data offset doesn't fit into the 18 bits we get for the addressing |
1167 // mode, then we must load the offset into a register and add it to the | 1167 // mode, then we must load the offset into a register and add it to the |
1168 // index. | 1168 // index. |
1169 element_address = Address(index.reg(), | 1169 element_address = Address(index.reg(), |
1170 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 1170 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); |
1171 } | 1171 } |
1172 | 1172 |
1173 if ((representation() == kUnboxedDouble) || | 1173 if ((representation() == kUnboxedDouble) || |
1174 (representation() == kUnboxedMint) || | 1174 (representation() == kUnboxedMint) || |
1175 (representation() == kUnboxedFloat32x4) || | 1175 (representation() == kUnboxedFloat32x4) || |
1176 (representation() == kUnboxedUint32x4)) { | 1176 (representation() == kUnboxedInt32x4)) { |
1177 DRegister result = locs()->out().fpu_reg(); | 1177 DRegister result = locs()->out().fpu_reg(); |
1178 switch (class_id()) { | 1178 switch (class_id()) { |
1179 case kTypedDataInt32ArrayCid: | 1179 case kTypedDataInt32ArrayCid: |
1180 UNIMPLEMENTED(); | 1180 UNIMPLEMENTED(); |
1181 break; | 1181 break; |
1182 case kTypedDataUint32ArrayCid: | 1182 case kTypedDataUint32ArrayCid: |
1183 UNIMPLEMENTED(); | 1183 UNIMPLEMENTED(); |
1184 break; | 1184 break; |
1185 case kTypedDataFloat32ArrayCid: | 1185 case kTypedDataFloat32ArrayCid: |
1186 // Load single precision float and promote to double. | 1186 // Load single precision float and promote to double. |
1187 __ lwc1(STMP1, element_address); | 1187 __ lwc1(STMP1, element_address); |
1188 __ cvtds(result, STMP1); | 1188 __ cvtds(result, STMP1); |
1189 break; | 1189 break; |
1190 case kTypedDataFloat64ArrayCid: | 1190 case kTypedDataFloat64ArrayCid: |
1191 __ LoadDFromOffset(result, index.reg(), | 1191 __ LoadDFromOffset(result, index.reg(), |
1192 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 1192 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); |
1193 break; | 1193 break; |
1194 case kTypedDataUint32x4ArrayCid: | 1194 case kTypedDataInt32x4ArrayCid: |
1195 case kTypedDataFloat32x4ArrayCid: | 1195 case kTypedDataFloat32x4ArrayCid: |
1196 UNIMPLEMENTED(); | 1196 UNIMPLEMENTED(); |
1197 break; | 1197 break; |
1198 } | 1198 } |
1199 return; | 1199 return; |
1200 } | 1200 } |
1201 | 1201 |
1202 Register result = locs()->out().reg(); | 1202 Register result = locs()->out().reg(); |
1203 switch (class_id()) { | 1203 switch (class_id()) { |
1204 case kTypedDataInt8ArrayCid: | 1204 case kTypedDataInt8ArrayCid: |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1268 case kTypedDataUint16ArrayCid: | 1268 case kTypedDataUint16ArrayCid: |
1269 return kTagged; | 1269 return kTagged; |
1270 case kTypedDataInt32ArrayCid: | 1270 case kTypedDataInt32ArrayCid: |
1271 case kTypedDataUint32ArrayCid: | 1271 case kTypedDataUint32ArrayCid: |
1272 return value()->IsSmiValue() ? kTagged : kUnboxedMint; | 1272 return value()->IsSmiValue() ? kTagged : kUnboxedMint; |
1273 case kTypedDataFloat32ArrayCid: | 1273 case kTypedDataFloat32ArrayCid: |
1274 case kTypedDataFloat64ArrayCid: | 1274 case kTypedDataFloat64ArrayCid: |
1275 return kUnboxedDouble; | 1275 return kUnboxedDouble; |
1276 case kTypedDataFloat32x4ArrayCid: | 1276 case kTypedDataFloat32x4ArrayCid: |
1277 return kUnboxedFloat32x4; | 1277 return kUnboxedFloat32x4; |
1278 case kTypedDataUint32x4ArrayCid: | 1278 case kTypedDataInt32x4ArrayCid: |
1279 return kUnboxedUint32x4; | 1279 return kUnboxedInt32x4; |
1280 default: | 1280 default: |
1281 UNIMPLEMENTED(); | 1281 UNIMPLEMENTED(); |
1282 return kTagged; | 1282 return kTagged; |
1283 } | 1283 } |
1284 } | 1284 } |
1285 | 1285 |
1286 | 1286 |
1287 LocationSummary* StoreIndexedInstr::MakeLocationSummary() const { | 1287 LocationSummary* StoreIndexedInstr::MakeLocationSummary() const { |
1288 const intptr_t kNumInputs = 3; | 1288 const intptr_t kNumInputs = 3; |
1289 const intptr_t kNumTemps = 0; | 1289 const intptr_t kNumTemps = 0; |
(...skipping 21 matching lines...) Expand all Loading... |
1311 case kTypedDataInt32ArrayCid: | 1311 case kTypedDataInt32ArrayCid: |
1312 case kTypedDataUint32ArrayCid: | 1312 case kTypedDataUint32ArrayCid: |
1313 locs->set_in(2, Location::WritableRegister()); | 1313 locs->set_in(2, Location::WritableRegister()); |
1314 break; | 1314 break; |
1315 case kTypedDataFloat32ArrayCid: | 1315 case kTypedDataFloat32ArrayCid: |
1316 // TODO(regis): Verify. | 1316 // TODO(regis): Verify. |
1317 // Need temp register for float-to-double conversion. | 1317 // Need temp register for float-to-double conversion. |
1318 locs->AddTemp(Location::RequiresFpuRegister()); | 1318 locs->AddTemp(Location::RequiresFpuRegister()); |
1319 // Fall through. | 1319 // Fall through. |
1320 case kTypedDataFloat64ArrayCid: // TODO(srdjan): Support Float64 constants. | 1320 case kTypedDataFloat64ArrayCid: // TODO(srdjan): Support Float64 constants. |
1321 case kTypedDataUint32x4ArrayCid: | 1321 case kTypedDataInt32x4ArrayCid: |
1322 case kTypedDataFloat32x4ArrayCid: | 1322 case kTypedDataFloat32x4ArrayCid: |
1323 locs->set_in(2, Location::RequiresFpuRegister()); | 1323 locs->set_in(2, Location::RequiresFpuRegister()); |
1324 break; | 1324 break; |
1325 default: | 1325 default: |
1326 UNREACHABLE(); | 1326 UNREACHABLE(); |
1327 return NULL; | 1327 return NULL; |
1328 } | 1328 } |
1329 return locs; | 1329 return locs; |
1330 } | 1330 } |
1331 | 1331 |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1451 case kTypedDataFloat32ArrayCid: | 1451 case kTypedDataFloat32ArrayCid: |
1452 // Convert to single precision. | 1452 // Convert to single precision. |
1453 __ cvtsd(STMP1, locs()->in(2).fpu_reg()); | 1453 __ cvtsd(STMP1, locs()->in(2).fpu_reg()); |
1454 // Store. | 1454 // Store. |
1455 __ swc1(STMP1, element_address); | 1455 __ swc1(STMP1, element_address); |
1456 break; | 1456 break; |
1457 case kTypedDataFloat64ArrayCid: | 1457 case kTypedDataFloat64ArrayCid: |
1458 __ StoreDToOffset(locs()->in(2).fpu_reg(), index.reg(), | 1458 __ StoreDToOffset(locs()->in(2).fpu_reg(), index.reg(), |
1459 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 1459 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); |
1460 break; | 1460 break; |
1461 case kTypedDataUint32x4ArrayCid: | 1461 case kTypedDataInt32x4ArrayCid: |
1462 case kTypedDataFloat32x4ArrayCid: | 1462 case kTypedDataFloat32x4ArrayCid: |
1463 UNIMPLEMENTED(); | 1463 UNIMPLEMENTED(); |
1464 break; | 1464 break; |
1465 default: | 1465 default: |
1466 UNREACHABLE(); | 1466 UNREACHABLE(); |
1467 } | 1467 } |
1468 } | 1468 } |
1469 | 1469 |
1470 | 1470 |
1471 LocationSummary* GuardFieldInstr::MakeLocationSummary() const { | 1471 LocationSummary* GuardFieldInstr::MakeLocationSummary() const { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1579 // list length here, without this check the list length could change | 1579 // list length here, without this check the list length could change |
1580 // without triggering a deoptimization. | 1580 // without triggering a deoptimization. |
1581 Label check_array, length_compared, no_fixed_length; | 1581 Label check_array, length_compared, no_fixed_length; |
1582 // If length is negative the length guard is either disabled or | 1582 // If length is negative the length guard is either disabled or |
1583 // has not been initialized, either way it is safe to skip the | 1583 // has not been initialized, either way it is safe to skip the |
1584 // length check. | 1584 // length check. |
1585 __ lw(CMPRES1, field_length_operand); | 1585 __ lw(CMPRES1, field_length_operand); |
1586 __ BranchSignedLess(CMPRES1, 0, &skip_length_check); | 1586 __ BranchSignedLess(CMPRES1, 0, &skip_length_check); |
1587 __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); | 1587 __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); |
1588 // Check for typed data array. | 1588 // Check for typed data array. |
1589 __ BranchSignedGreater(value_cid_reg, kTypedDataUint32x4ArrayCid, | 1589 __ BranchSignedGreater(value_cid_reg, kTypedDataInt32x4ArrayCid, |
1590 &no_fixed_length); | 1590 &no_fixed_length); |
1591 __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, | 1591 __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, |
1592 &check_array); | 1592 &check_array); |
1593 __ lw(TMP, FieldAddress(value_reg, TypedData::length_offset())); | 1593 __ lw(TMP, FieldAddress(value_reg, TypedData::length_offset())); |
1594 __ lw(CMPRES1, field_length_operand); | 1594 __ lw(CMPRES1, field_length_operand); |
1595 __ subu(CMPRES1, TMP, CMPRES1); | 1595 __ subu(CMPRES1, TMP, CMPRES1); |
1596 __ b(&length_compared); | 1596 __ b(&length_compared); |
1597 // Check for regular array. | 1597 // Check for regular array. |
1598 __ Bind(&check_array); | 1598 __ Bind(&check_array); |
1599 __ BranchSignedGreater(value_cid_reg, kImmutableArrayCid, | 1599 __ BranchSignedGreater(value_cid_reg, kImmutableArrayCid, |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1655 __ lw(CMPRES1, field_cid_operand); | 1655 __ lw(CMPRES1, field_cid_operand); |
1656 __ BranchNotEqual(CMPRES1, kIllegalCid, fail); | 1656 __ BranchNotEqual(CMPRES1, kIllegalCid, fail); |
1657 | 1657 |
1658 if (value_cid == kDynamicCid) { | 1658 if (value_cid == kDynamicCid) { |
1659 __ sw(value_cid_reg, field_cid_operand); | 1659 __ sw(value_cid_reg, field_cid_operand); |
1660 __ sw(value_cid_reg, field_nullability_operand); | 1660 __ sw(value_cid_reg, field_nullability_operand); |
1661 if (field_has_length) { | 1661 if (field_has_length) { |
1662 Label check_array, length_set, no_fixed_length; | 1662 Label check_array, length_set, no_fixed_length; |
1663 __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); | 1663 __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); |
1664 // Check for typed data array. | 1664 // Check for typed data array. |
1665 __ BranchSignedGreater(value_cid_reg, kTypedDataUint32x4ArrayCid, | 1665 __ BranchSignedGreater(value_cid_reg, kTypedDataInt32x4ArrayCid, |
1666 &no_fixed_length); | 1666 &no_fixed_length); |
1667 __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, | 1667 __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, |
1668 &check_array); | 1668 &check_array); |
1669 // Destroy value_cid_reg (safe because we are finished with it). | 1669 // Destroy value_cid_reg (safe because we are finished with it). |
1670 __ lw(value_cid_reg, | 1670 __ lw(value_cid_reg, |
1671 FieldAddress(value_reg, TypedData::length_offset())); | 1671 FieldAddress(value_reg, TypedData::length_offset())); |
1672 __ sw(value_cid_reg, field_length_operand); | 1672 __ sw(value_cid_reg, field_length_operand); |
1673 // Updated field length typed data array. | 1673 // Updated field length typed data array. |
1674 __ b(&length_set); | 1674 __ b(&length_set); |
1675 // Check for regular array. | 1675 // Check for regular array. |
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2903 UNIMPLEMENTED(); | 2903 UNIMPLEMENTED(); |
2904 return NULL; | 2904 return NULL; |
2905 } | 2905 } |
2906 | 2906 |
2907 | 2907 |
2908 void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2908 void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
2909 UNIMPLEMENTED(); | 2909 UNIMPLEMENTED(); |
2910 } | 2910 } |
2911 | 2911 |
2912 | 2912 |
2913 LocationSummary* BoxUint32x4Instr::MakeLocationSummary() const { | 2913 LocationSummary* BoxInt32x4Instr::MakeLocationSummary() const { |
2914 UNIMPLEMENTED(); | 2914 UNIMPLEMENTED(); |
2915 return NULL; | 2915 return NULL; |
2916 } | 2916 } |
2917 | 2917 |
2918 | 2918 |
2919 void BoxUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2919 void BoxInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
2920 UNIMPLEMENTED(); | 2920 UNIMPLEMENTED(); |
2921 } | 2921 } |
2922 | 2922 |
2923 | 2923 |
2924 LocationSummary* UnboxUint32x4Instr::MakeLocationSummary() const { | 2924 LocationSummary* UnboxInt32x4Instr::MakeLocationSummary() const { |
2925 UNIMPLEMENTED(); | 2925 UNIMPLEMENTED(); |
2926 return NULL; | 2926 return NULL; |
2927 } | 2927 } |
2928 | 2928 |
2929 | 2929 |
2930 void UnboxUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2930 void UnboxInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
2931 UNIMPLEMENTED(); | 2931 UNIMPLEMENTED(); |
2932 } | 2932 } |
2933 | 2933 |
2934 | 2934 |
2935 LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary() const { | 2935 LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary() const { |
2936 const intptr_t kNumInputs = 2; | 2936 const intptr_t kNumInputs = 2; |
2937 const intptr_t kNumTemps = 0; | 2937 const intptr_t kNumTemps = 0; |
2938 LocationSummary* summary = | 2938 LocationSummary* summary = |
2939 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 2939 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
2940 summary->set_in(0, Location::RequiresFpuRegister()); | 2940 summary->set_in(0, Location::RequiresFpuRegister()); |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3095 UNIMPLEMENTED(); | 3095 UNIMPLEMENTED(); |
3096 return NULL; | 3096 return NULL; |
3097 } | 3097 } |
3098 | 3098 |
3099 | 3099 |
3100 void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3100 void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
3101 UNIMPLEMENTED(); | 3101 UNIMPLEMENTED(); |
3102 } | 3102 } |
3103 | 3103 |
3104 | 3104 |
3105 LocationSummary* Float32x4ToUint32x4Instr::MakeLocationSummary() const { | 3105 LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary() const { |
3106 UNIMPLEMENTED(); | 3106 UNIMPLEMENTED(); |
3107 return NULL; | 3107 return NULL; |
3108 } | 3108 } |
3109 | 3109 |
3110 | 3110 |
3111 void Float32x4ToUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3111 void Float32x4ToInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
3112 UNIMPLEMENTED(); | 3112 UNIMPLEMENTED(); |
3113 } | 3113 } |
3114 | 3114 |
3115 | 3115 |
3116 LocationSummary* Uint32x4BoolConstructorInstr::MakeLocationSummary() const { | 3116 LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary() const { |
3117 UNIMPLEMENTED(); | 3117 UNIMPLEMENTED(); |
3118 return NULL; | 3118 return NULL; |
3119 } | 3119 } |
3120 | 3120 |
3121 | 3121 |
3122 void Uint32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3122 void Int32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
3123 UNIMPLEMENTED(); | 3123 UNIMPLEMENTED(); |
3124 } | 3124 } |
3125 | 3125 |
3126 | 3126 |
3127 LocationSummary* Uint32x4GetFlagInstr::MakeLocationSummary() const { | 3127 LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary() const { |
3128 UNIMPLEMENTED(); | 3128 UNIMPLEMENTED(); |
3129 return NULL; | 3129 return NULL; |
3130 } | 3130 } |
3131 | 3131 |
3132 | 3132 |
3133 void Uint32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3133 void Int32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
3134 UNIMPLEMENTED(); | 3134 UNIMPLEMENTED(); |
3135 } | 3135 } |
3136 | 3136 |
3137 | 3137 |
3138 LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary() const { | 3138 LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary() const { |
3139 UNIMPLEMENTED(); | 3139 UNIMPLEMENTED(); |
3140 return NULL; | 3140 return NULL; |
3141 } | 3141 } |
3142 | 3142 |
3143 | 3143 |
3144 void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3144 void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
3145 UNIMPLEMENTED(); | 3145 UNIMPLEMENTED(); |
3146 } | 3146 } |
3147 | 3147 |
3148 | 3148 |
3149 LocationSummary* Uint32x4SelectInstr::MakeLocationSummary() const { | 3149 LocationSummary* Int32x4SelectInstr::MakeLocationSummary() const { |
3150 UNIMPLEMENTED(); | 3150 UNIMPLEMENTED(); |
3151 return NULL; | 3151 return NULL; |
3152 } | 3152 } |
3153 | 3153 |
3154 | 3154 |
3155 void Uint32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3155 void Int32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
3156 UNIMPLEMENTED(); | 3156 UNIMPLEMENTED(); |
3157 } | 3157 } |
3158 | 3158 |
3159 | 3159 |
3160 LocationSummary* Uint32x4SetFlagInstr::MakeLocationSummary() const { | 3160 LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary() const { |
3161 UNIMPLEMENTED(); | 3161 UNIMPLEMENTED(); |
3162 return NULL; | 3162 return NULL; |
3163 } | 3163 } |
3164 | 3164 |
3165 | 3165 |
3166 void Uint32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3166 void Int32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
3167 UNIMPLEMENTED(); | 3167 UNIMPLEMENTED(); |
3168 } | 3168 } |
3169 | 3169 |
3170 | 3170 |
3171 LocationSummary* Uint32x4ToFloat32x4Instr::MakeLocationSummary() const { | 3171 LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary() const { |
3172 UNIMPLEMENTED(); | 3172 UNIMPLEMENTED(); |
3173 return NULL; | 3173 return NULL; |
3174 } | 3174 } |
3175 | 3175 |
3176 | 3176 |
3177 void Uint32x4ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3177 void Int32x4ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
3178 UNIMPLEMENTED(); | 3178 UNIMPLEMENTED(); |
3179 } | 3179 } |
3180 | 3180 |
3181 | 3181 |
3182 LocationSummary* BinaryUint32x4OpInstr::MakeLocationSummary() const { | 3182 LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary() const { |
3183 UNIMPLEMENTED(); | 3183 UNIMPLEMENTED(); |
3184 return NULL; | 3184 return NULL; |
3185 } | 3185 } |
3186 | 3186 |
3187 | 3187 |
3188 void BinaryUint32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3188 void BinaryInt32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
3189 UNIMPLEMENTED(); | 3189 UNIMPLEMENTED(); |
3190 } | 3190 } |
3191 | 3191 |
3192 | 3192 |
3193 LocationSummary* MathUnaryInstr::MakeLocationSummary() const { | 3193 LocationSummary* MathUnaryInstr::MakeLocationSummary() const { |
3194 if ((kind() == MethodRecognizer::kMathSin) || | 3194 if ((kind() == MethodRecognizer::kMathSin) || |
3195 (kind() == MethodRecognizer::kMathCos)) { | 3195 (kind() == MethodRecognizer::kMathCos)) { |
3196 const intptr_t kNumInputs = 1; | 3196 const intptr_t kNumInputs = 1; |
3197 const intptr_t kNumTemps = 0; | 3197 const intptr_t kNumTemps = 0; |
3198 LocationSummary* summary = | 3198 LocationSummary* summary = |
(...skipping 891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4090 compiler->GenerateCall(token_pos(), | 4090 compiler->GenerateCall(token_pos(), |
4091 &label, | 4091 &label, |
4092 PcDescriptors::kOther, | 4092 PcDescriptors::kOther, |
4093 locs()); | 4093 locs()); |
4094 __ Drop(2); // Discard type arguments and receiver. | 4094 __ Drop(2); // Discard type arguments and receiver. |
4095 } | 4095 } |
4096 | 4096 |
4097 } // namespace dart | 4097 } // namespace dart |
4098 | 4098 |
4099 #endif // defined TARGET_ARCH_MIPS | 4099 #endif // defined TARGET_ARCH_MIPS |
OLD | NEW |