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/compiler/instruction-selector-impl.h" | 6 #include "src/compiler/instruction-selector-impl.h" |
7 #include "src/compiler/node-matchers.h" | 7 #include "src/compiler/node-matchers.h" |
8 #include "src/compiler/node-properties.h" | 8 #include "src/compiler/node-properties.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 opcode = load_rep.IsSigned() ? kIA32Movsxwl : kIA32Movzxwl; | 227 opcode = load_rep.IsSigned() ? kIA32Movsxwl : kIA32Movzxwl; |
228 break; | 228 break; |
229 case MachineRepresentation::kTaggedSigned: // Fall through. | 229 case MachineRepresentation::kTaggedSigned: // Fall through. |
230 case MachineRepresentation::kTaggedPointer: // Fall through. | 230 case MachineRepresentation::kTaggedPointer: // Fall through. |
231 case MachineRepresentation::kTagged: // Fall through. | 231 case MachineRepresentation::kTagged: // Fall through. |
232 case MachineRepresentation::kWord32: | 232 case MachineRepresentation::kWord32: |
233 opcode = kIA32Movl; | 233 opcode = kIA32Movl; |
234 break; | 234 break; |
235 case MachineRepresentation::kWord64: // Fall through. | 235 case MachineRepresentation::kWord64: // Fall through. |
236 case MachineRepresentation::kSimd128: // Fall through. | 236 case MachineRepresentation::kSimd128: // Fall through. |
| 237 case MachineRepresentation::kSimd1x4: // Fall through. |
| 238 case MachineRepresentation::kSimd1x8: // Fall through. |
| 239 case MachineRepresentation::kSimd1x16: // Fall through. |
237 case MachineRepresentation::kNone: | 240 case MachineRepresentation::kNone: |
238 UNREACHABLE(); | 241 UNREACHABLE(); |
239 return; | 242 return; |
240 } | 243 } |
241 | 244 |
242 IA32OperandGenerator g(this); | 245 IA32OperandGenerator g(this); |
243 InstructionOperand outputs[1]; | 246 InstructionOperand outputs[1]; |
244 outputs[0] = g.DefineAsRegister(node); | 247 outputs[0] = g.DefineAsRegister(node); |
245 InstructionOperand inputs[3]; | 248 InstructionOperand inputs[3]; |
246 size_t input_count = 0; | 249 size_t input_count = 0; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 opcode = kIA32Movw; | 320 opcode = kIA32Movw; |
318 break; | 321 break; |
319 case MachineRepresentation::kTaggedSigned: // Fall through. | 322 case MachineRepresentation::kTaggedSigned: // Fall through. |
320 case MachineRepresentation::kTaggedPointer: // Fall through. | 323 case MachineRepresentation::kTaggedPointer: // Fall through. |
321 case MachineRepresentation::kTagged: // Fall through. | 324 case MachineRepresentation::kTagged: // Fall through. |
322 case MachineRepresentation::kWord32: | 325 case MachineRepresentation::kWord32: |
323 opcode = kIA32Movl; | 326 opcode = kIA32Movl; |
324 break; | 327 break; |
325 case MachineRepresentation::kWord64: // Fall through. | 328 case MachineRepresentation::kWord64: // Fall through. |
326 case MachineRepresentation::kSimd128: // Fall through. | 329 case MachineRepresentation::kSimd128: // Fall through. |
| 330 case MachineRepresentation::kSimd1x4: // Fall through. |
| 331 case MachineRepresentation::kSimd1x8: // Fall through. |
| 332 case MachineRepresentation::kSimd1x16: // Fall through. |
327 case MachineRepresentation::kNone: | 333 case MachineRepresentation::kNone: |
328 UNREACHABLE(); | 334 UNREACHABLE(); |
329 return; | 335 return; |
330 } | 336 } |
331 | 337 |
332 InstructionOperand val; | 338 InstructionOperand val; |
333 if (g.CanBeImmediate(value)) { | 339 if (g.CanBeImmediate(value)) { |
334 val = g.UseImmediate(value); | 340 val = g.UseImmediate(value); |
335 } else if (rep == MachineRepresentation::kWord8 || | 341 } else if (rep == MachineRepresentation::kWord8 || |
336 rep == MachineRepresentation::kBit) { | 342 rep == MachineRepresentation::kBit) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 break; | 390 break; |
385 case MachineRepresentation::kFloat64: | 391 case MachineRepresentation::kFloat64: |
386 opcode = kCheckedLoadFloat64; | 392 opcode = kCheckedLoadFloat64; |
387 break; | 393 break; |
388 case MachineRepresentation::kBit: // Fall through. | 394 case MachineRepresentation::kBit: // Fall through. |
389 case MachineRepresentation::kTaggedSigned: // Fall through. | 395 case MachineRepresentation::kTaggedSigned: // Fall through. |
390 case MachineRepresentation::kTaggedPointer: // Fall through. | 396 case MachineRepresentation::kTaggedPointer: // Fall through. |
391 case MachineRepresentation::kTagged: // Fall through. | 397 case MachineRepresentation::kTagged: // Fall through. |
392 case MachineRepresentation::kWord64: // Fall through. | 398 case MachineRepresentation::kWord64: // Fall through. |
393 case MachineRepresentation::kSimd128: // Fall through. | 399 case MachineRepresentation::kSimd128: // Fall through. |
| 400 case MachineRepresentation::kSimd1x4: // Fall through. |
| 401 case MachineRepresentation::kSimd1x8: // Fall through. |
| 402 case MachineRepresentation::kSimd1x16: // Fall through. |
394 case MachineRepresentation::kNone: | 403 case MachineRepresentation::kNone: |
395 UNREACHABLE(); | 404 UNREACHABLE(); |
396 return; | 405 return; |
397 } | 406 } |
398 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { | 407 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { |
399 Int32BinopMatcher moffset(offset); | 408 Int32BinopMatcher moffset(offset); |
400 InstructionOperand buffer_operand = g.CanBeImmediate(buffer) | 409 InstructionOperand buffer_operand = g.CanBeImmediate(buffer) |
401 ? g.UseImmediate(buffer) | 410 ? g.UseImmediate(buffer) |
402 : g.UseRegister(buffer); | 411 : g.UseRegister(buffer); |
403 Int32Matcher mlength(length); | 412 Int32Matcher mlength(length); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 break; | 466 break; |
458 case MachineRepresentation::kFloat64: | 467 case MachineRepresentation::kFloat64: |
459 opcode = kCheckedStoreFloat64; | 468 opcode = kCheckedStoreFloat64; |
460 break; | 469 break; |
461 case MachineRepresentation::kBit: // Fall through. | 470 case MachineRepresentation::kBit: // Fall through. |
462 case MachineRepresentation::kTaggedSigned: // Fall through. | 471 case MachineRepresentation::kTaggedSigned: // Fall through. |
463 case MachineRepresentation::kTaggedPointer: // Fall through. | 472 case MachineRepresentation::kTaggedPointer: // Fall through. |
464 case MachineRepresentation::kTagged: // Fall through. | 473 case MachineRepresentation::kTagged: // Fall through. |
465 case MachineRepresentation::kWord64: // Fall through. | 474 case MachineRepresentation::kWord64: // Fall through. |
466 case MachineRepresentation::kSimd128: // Fall through. | 475 case MachineRepresentation::kSimd128: // Fall through. |
| 476 case MachineRepresentation::kSimd1x4: // Fall through. |
| 477 case MachineRepresentation::kSimd1x8: // Fall through. |
| 478 case MachineRepresentation::kSimd1x16: // Fall through. |
467 case MachineRepresentation::kNone: | 479 case MachineRepresentation::kNone: |
468 UNREACHABLE(); | 480 UNREACHABLE(); |
469 return; | 481 return; |
470 } | 482 } |
471 InstructionOperand value_operand = | 483 InstructionOperand value_operand = |
472 g.CanBeImmediate(value) ? g.UseImmediate(value) | 484 g.CanBeImmediate(value) ? g.UseImmediate(value) |
473 : ((rep == MachineRepresentation::kWord8 || | 485 : ((rep == MachineRepresentation::kWord8 || |
474 rep == MachineRepresentation::kBit) | 486 rep == MachineRepresentation::kBit) |
475 ? g.UseByteRegister(value) | 487 ? g.UseByteRegister(value) |
476 : g.UseRegister(value)); | 488 : g.UseRegister(value)); |
(...skipping 1252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1729 // static | 1741 // static |
1730 MachineOperatorBuilder::AlignmentRequirements | 1742 MachineOperatorBuilder::AlignmentRequirements |
1731 InstructionSelector::AlignmentRequirements() { | 1743 InstructionSelector::AlignmentRequirements() { |
1732 return MachineOperatorBuilder::AlignmentRequirements:: | 1744 return MachineOperatorBuilder::AlignmentRequirements:: |
1733 FullUnalignedAccessSupport(); | 1745 FullUnalignedAccessSupport(); |
1734 } | 1746 } |
1735 | 1747 |
1736 } // namespace compiler | 1748 } // namespace compiler |
1737 } // namespace internal | 1749 } // namespace internal |
1738 } // namespace v8 | 1750 } // namespace v8 |
OLD | NEW |