| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/base/adapters.h" | 5 #include "src/base/adapters.h" |
| 6 #include "src/base/bits.h" | 6 #include "src/base/bits.h" |
| 7 #include "src/compiler/instruction-selector-impl.h" | 7 #include "src/compiler/instruction-selector-impl.h" |
| 8 #include "src/compiler/node-matchers.h" | 8 #include "src/compiler/node-matchers.h" |
| 9 #include "src/compiler/node-properties.h" | 9 #include "src/compiler/node-properties.h" |
| 10 | 10 |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 case MachineRepresentation::kWord16: | 152 case MachineRepresentation::kWord16: |
| 153 opcode = load_rep.IsUnsigned() ? kMips64Lhu : kMips64Lh; | 153 opcode = load_rep.IsUnsigned() ? kMips64Lhu : kMips64Lh; |
| 154 break; | 154 break; |
| 155 case MachineRepresentation::kWord32: | 155 case MachineRepresentation::kWord32: |
| 156 opcode = kMips64Lw; | 156 opcode = kMips64Lw; |
| 157 break; | 157 break; |
| 158 case MachineRepresentation::kTagged: // Fall through. | 158 case MachineRepresentation::kTagged: // Fall through. |
| 159 case MachineRepresentation::kWord64: | 159 case MachineRepresentation::kWord64: |
| 160 opcode = kMips64Ld; | 160 opcode = kMips64Ld; |
| 161 break; | 161 break; |
| 162 case MachineRepresentation::kSimd128: // Fall through. |
| 162 case MachineRepresentation::kNone: | 163 case MachineRepresentation::kNone: |
| 163 UNREACHABLE(); | 164 UNREACHABLE(); |
| 164 return; | 165 return; |
| 165 } | 166 } |
| 166 | 167 |
| 167 if (g.CanBeImmediate(index, opcode)) { | 168 if (g.CanBeImmediate(index, opcode)) { |
| 168 Emit(opcode | AddressingModeField::encode(kMode_MRI), | 169 Emit(opcode | AddressingModeField::encode(kMode_MRI), |
| 169 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); | 170 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); |
| 170 } else { | 171 } else { |
| 171 InstructionOperand addr_reg = g.TempRegister(); | 172 InstructionOperand addr_reg = g.TempRegister(); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 case MachineRepresentation::kWord16: | 235 case MachineRepresentation::kWord16: |
| 235 opcode = kMips64Sh; | 236 opcode = kMips64Sh; |
| 236 break; | 237 break; |
| 237 case MachineRepresentation::kWord32: | 238 case MachineRepresentation::kWord32: |
| 238 opcode = kMips64Sw; | 239 opcode = kMips64Sw; |
| 239 break; | 240 break; |
| 240 case MachineRepresentation::kTagged: // Fall through. | 241 case MachineRepresentation::kTagged: // Fall through. |
| 241 case MachineRepresentation::kWord64: | 242 case MachineRepresentation::kWord64: |
| 242 opcode = kMips64Sd; | 243 opcode = kMips64Sd; |
| 243 break; | 244 break; |
| 245 case MachineRepresentation::kSimd128: // Fall through. |
| 244 case MachineRepresentation::kNone: | 246 case MachineRepresentation::kNone: |
| 245 UNREACHABLE(); | 247 UNREACHABLE(); |
| 246 return; | 248 return; |
| 247 } | 249 } |
| 248 | 250 |
| 249 if (g.CanBeImmediate(index, opcode)) { | 251 if (g.CanBeImmediate(index, opcode)) { |
| 250 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), | 252 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), |
| 251 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value)); | 253 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value)); |
| 252 } else { | 254 } else { |
| 253 InstructionOperand addr_reg = g.TempRegister(); | 255 InstructionOperand addr_reg = g.TempRegister(); |
| (...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1334 opcode = kCheckedLoadWord64; | 1336 opcode = kCheckedLoadWord64; |
| 1335 break; | 1337 break; |
| 1336 case MachineRepresentation::kFloat32: | 1338 case MachineRepresentation::kFloat32: |
| 1337 opcode = kCheckedLoadFloat32; | 1339 opcode = kCheckedLoadFloat32; |
| 1338 break; | 1340 break; |
| 1339 case MachineRepresentation::kFloat64: | 1341 case MachineRepresentation::kFloat64: |
| 1340 opcode = kCheckedLoadFloat64; | 1342 opcode = kCheckedLoadFloat64; |
| 1341 break; | 1343 break; |
| 1342 case MachineRepresentation::kBit: | 1344 case MachineRepresentation::kBit: |
| 1343 case MachineRepresentation::kTagged: | 1345 case MachineRepresentation::kTagged: |
| 1346 case MachineRepresentation::kSimd128: |
| 1344 case MachineRepresentation::kNone: | 1347 case MachineRepresentation::kNone: |
| 1345 UNREACHABLE(); | 1348 UNREACHABLE(); |
| 1346 return; | 1349 return; |
| 1347 } | 1350 } |
| 1348 InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) | 1351 InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) |
| 1349 ? g.UseImmediate(offset) | 1352 ? g.UseImmediate(offset) |
| 1350 : g.UseRegister(offset); | 1353 : g.UseRegister(offset); |
| 1351 | 1354 |
| 1352 InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) | 1355 InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) |
| 1353 ? g.CanBeImmediate(length, opcode) | 1356 ? g.CanBeImmediate(length, opcode) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1383 opcode = kCheckedStoreWord64; | 1386 opcode = kCheckedStoreWord64; |
| 1384 break; | 1387 break; |
| 1385 case MachineRepresentation::kFloat32: | 1388 case MachineRepresentation::kFloat32: |
| 1386 opcode = kCheckedStoreFloat32; | 1389 opcode = kCheckedStoreFloat32; |
| 1387 break; | 1390 break; |
| 1388 case MachineRepresentation::kFloat64: | 1391 case MachineRepresentation::kFloat64: |
| 1389 opcode = kCheckedStoreFloat64; | 1392 opcode = kCheckedStoreFloat64; |
| 1390 break; | 1393 break; |
| 1391 case MachineRepresentation::kBit: | 1394 case MachineRepresentation::kBit: |
| 1392 case MachineRepresentation::kTagged: | 1395 case MachineRepresentation::kTagged: |
| 1396 case MachineRepresentation::kSimd128: |
| 1393 case MachineRepresentation::kNone: | 1397 case MachineRepresentation::kNone: |
| 1394 UNREACHABLE(); | 1398 UNREACHABLE(); |
| 1395 return; | 1399 return; |
| 1396 } | 1400 } |
| 1397 InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) | 1401 InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) |
| 1398 ? g.UseImmediate(offset) | 1402 ? g.UseImmediate(offset) |
| 1399 : g.UseRegister(offset); | 1403 : g.UseRegister(offset); |
| 1400 | 1404 |
| 1401 InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) | 1405 InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) |
| 1402 ? g.CanBeImmediate(length, opcode) | 1406 ? g.CanBeImmediate(length, opcode) |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1897 MachineOperatorBuilder::kFloat32RoundUp | | 1901 MachineOperatorBuilder::kFloat32RoundUp | |
| 1898 MachineOperatorBuilder::kFloat64RoundTruncate | | 1902 MachineOperatorBuilder::kFloat64RoundTruncate | |
| 1899 MachineOperatorBuilder::kFloat32RoundTruncate | | 1903 MachineOperatorBuilder::kFloat32RoundTruncate | |
| 1900 MachineOperatorBuilder::kFloat64RoundTiesEven | | 1904 MachineOperatorBuilder::kFloat64RoundTiesEven | |
| 1901 MachineOperatorBuilder::kFloat32RoundTiesEven; | 1905 MachineOperatorBuilder::kFloat32RoundTiesEven; |
| 1902 } | 1906 } |
| 1903 | 1907 |
| 1904 } // namespace compiler | 1908 } // namespace compiler |
| 1905 } // namespace internal | 1909 } // namespace internal |
| 1906 } // namespace v8 | 1910 } // namespace v8 |
| OLD | NEW |