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 <algorithm> | 5 #include <algorithm> |
6 | 6 |
7 #include "src/base/adapters.h" | 7 #include "src/base/adapters.h" |
8 #include "src/compiler/instruction-selector-impl.h" | 8 #include "src/compiler/instruction-selector-impl.h" |
9 #include "src/compiler/node-matchers.h" | 9 #include "src/compiler/node-matchers.h" |
10 #include "src/compiler/node-properties.h" | 10 #include "src/compiler/node-properties.h" |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 case MachineRepresentation::kWord32: | 213 case MachineRepresentation::kWord32: |
214 opcode = kX64Movl; | 214 opcode = kX64Movl; |
215 break; | 215 break; |
216 case MachineRepresentation::kTaggedSigned: // Fall through. | 216 case MachineRepresentation::kTaggedSigned: // Fall through. |
217 case MachineRepresentation::kTaggedPointer: // Fall through. | 217 case MachineRepresentation::kTaggedPointer: // Fall through. |
218 case MachineRepresentation::kTagged: // Fall through. | 218 case MachineRepresentation::kTagged: // Fall through. |
219 case MachineRepresentation::kWord64: | 219 case MachineRepresentation::kWord64: |
220 opcode = kX64Movq; | 220 opcode = kX64Movq; |
221 break; | 221 break; |
222 case MachineRepresentation::kSimd128: // Fall through. | 222 case MachineRepresentation::kSimd128: // Fall through. |
| 223 case MachineRepresentation::kSimdBool4: // Fall through. |
| 224 case MachineRepresentation::kSimdBool8: // Fall through. |
| 225 case MachineRepresentation::kSimdBool16: // Fall through. |
223 case MachineRepresentation::kNone: | 226 case MachineRepresentation::kNone: |
224 UNREACHABLE(); | 227 UNREACHABLE(); |
225 break; | 228 break; |
226 } | 229 } |
227 return opcode; | 230 return opcode; |
228 } | 231 } |
229 | 232 |
230 ArchOpcode GetStoreOpcode(StoreRepresentation store_rep) { | 233 ArchOpcode GetStoreOpcode(StoreRepresentation store_rep) { |
231 switch (store_rep.representation()) { | 234 switch (store_rep.representation()) { |
232 case MachineRepresentation::kFloat32: | 235 case MachineRepresentation::kFloat32: |
(...skipping 12 matching lines...) Expand all Loading... |
245 case MachineRepresentation::kWord32: | 248 case MachineRepresentation::kWord32: |
246 return kX64Movl; | 249 return kX64Movl; |
247 break; | 250 break; |
248 case MachineRepresentation::kTaggedSigned: // Fall through. | 251 case MachineRepresentation::kTaggedSigned: // Fall through. |
249 case MachineRepresentation::kTaggedPointer: // Fall through. | 252 case MachineRepresentation::kTaggedPointer: // Fall through. |
250 case MachineRepresentation::kTagged: // Fall through. | 253 case MachineRepresentation::kTagged: // Fall through. |
251 case MachineRepresentation::kWord64: | 254 case MachineRepresentation::kWord64: |
252 return kX64Movq; | 255 return kX64Movq; |
253 break; | 256 break; |
254 case MachineRepresentation::kSimd128: // Fall through. | 257 case MachineRepresentation::kSimd128: // Fall through. |
| 258 case MachineRepresentation::kSimdBool4: // Fall through. |
| 259 case MachineRepresentation::kSimdBool8: // Fall through. |
| 260 case MachineRepresentation::kSimdBool16: // Fall through. |
255 case MachineRepresentation::kNone: | 261 case MachineRepresentation::kNone: |
256 UNREACHABLE(); | 262 UNREACHABLE(); |
257 return kArchNop; | 263 return kArchNop; |
258 } | 264 } |
259 UNREACHABLE(); | 265 UNREACHABLE(); |
260 return kArchNop; | 266 return kArchNop; |
261 } | 267 } |
262 | 268 |
263 } // namespace | 269 } // namespace |
264 | 270 |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 opcode = kCheckedLoadWord64; | 398 opcode = kCheckedLoadWord64; |
393 break; | 399 break; |
394 case MachineRepresentation::kFloat32: | 400 case MachineRepresentation::kFloat32: |
395 opcode = kCheckedLoadFloat32; | 401 opcode = kCheckedLoadFloat32; |
396 break; | 402 break; |
397 case MachineRepresentation::kFloat64: | 403 case MachineRepresentation::kFloat64: |
398 opcode = kCheckedLoadFloat64; | 404 opcode = kCheckedLoadFloat64; |
399 break; | 405 break; |
400 case MachineRepresentation::kBit: // Fall through. | 406 case MachineRepresentation::kBit: // Fall through. |
401 case MachineRepresentation::kSimd128: // Fall through. | 407 case MachineRepresentation::kSimd128: // Fall through. |
| 408 case MachineRepresentation::kSimdBool4: // Fall through. |
| 409 case MachineRepresentation::kSimdBool8: // Fall through. |
| 410 case MachineRepresentation::kSimdBool16: // Fall through. |
402 case MachineRepresentation::kTaggedSigned: // Fall through. | 411 case MachineRepresentation::kTaggedSigned: // Fall through. |
403 case MachineRepresentation::kTaggedPointer: // Fall through. | 412 case MachineRepresentation::kTaggedPointer: // Fall through. |
404 case MachineRepresentation::kTagged: // Fall through. | 413 case MachineRepresentation::kTagged: // Fall through. |
405 case MachineRepresentation::kNone: | 414 case MachineRepresentation::kNone: |
406 UNREACHABLE(); | 415 UNREACHABLE(); |
407 return; | 416 return; |
408 } | 417 } |
409 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { | 418 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { |
410 Int32Matcher mlength(length); | 419 Int32Matcher mlength(length); |
411 Int32BinopMatcher moffset(offset); | 420 Int32BinopMatcher moffset(offset); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 opcode = kCheckedStoreWord64; | 456 opcode = kCheckedStoreWord64; |
448 break; | 457 break; |
449 case MachineRepresentation::kFloat32: | 458 case MachineRepresentation::kFloat32: |
450 opcode = kCheckedStoreFloat32; | 459 opcode = kCheckedStoreFloat32; |
451 break; | 460 break; |
452 case MachineRepresentation::kFloat64: | 461 case MachineRepresentation::kFloat64: |
453 opcode = kCheckedStoreFloat64; | 462 opcode = kCheckedStoreFloat64; |
454 break; | 463 break; |
455 case MachineRepresentation::kBit: // Fall through. | 464 case MachineRepresentation::kBit: // Fall through. |
456 case MachineRepresentation::kSimd128: // Fall through. | 465 case MachineRepresentation::kSimd128: // Fall through. |
| 466 case MachineRepresentation::kSimdBool4: // Fall through. |
| 467 case MachineRepresentation::kSimdBool8: // Fall through. |
| 468 case MachineRepresentation::kSimdBool16: // Fall through. |
457 case MachineRepresentation::kTaggedSigned: // Fall through. | 469 case MachineRepresentation::kTaggedSigned: // Fall through. |
458 case MachineRepresentation::kTaggedPointer: // Fall through. | 470 case MachineRepresentation::kTaggedPointer: // Fall through. |
459 case MachineRepresentation::kTagged: // Fall through. | 471 case MachineRepresentation::kTagged: // Fall through. |
460 case MachineRepresentation::kNone: | 472 case MachineRepresentation::kNone: |
461 UNREACHABLE(); | 473 UNREACHABLE(); |
462 return; | 474 return; |
463 } | 475 } |
464 InstructionOperand value_operand = | 476 InstructionOperand value_operand = |
465 g.CanBeImmediate(value) ? g.UseImmediate(value) : g.UseRegister(value); | 477 g.CanBeImmediate(value) ? g.UseImmediate(value) : g.UseRegister(value); |
466 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { | 478 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { |
(...skipping 1848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2315 // static | 2327 // static |
2316 MachineOperatorBuilder::AlignmentRequirements | 2328 MachineOperatorBuilder::AlignmentRequirements |
2317 InstructionSelector::AlignmentRequirements() { | 2329 InstructionSelector::AlignmentRequirements() { |
2318 return MachineOperatorBuilder::AlignmentRequirements:: | 2330 return MachineOperatorBuilder::AlignmentRequirements:: |
2319 FullUnalignedAccessSupport(); | 2331 FullUnalignedAccessSupport(); |
2320 } | 2332 } |
2321 | 2333 |
2322 } // namespace compiler | 2334 } // namespace compiler |
2323 } // namespace internal | 2335 } // namespace internal |
2324 } // namespace v8 | 2336 } // namespace v8 |
OLD | NEW |