| 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 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 opcode = load_rep.IsSigned() ? kIA32Movsxwl : kIA32Movzxwl; | 240 opcode = load_rep.IsSigned() ? kIA32Movsxwl : kIA32Movzxwl; |
| 241 break; | 241 break; |
| 242 case MachineRepresentation::kTaggedSigned: // Fall through. | 242 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 243 case MachineRepresentation::kTaggedPointer: // Fall through. | 243 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 244 case MachineRepresentation::kTagged: // Fall through. | 244 case MachineRepresentation::kTagged: // Fall through. |
| 245 case MachineRepresentation::kWord32: | 245 case MachineRepresentation::kWord32: |
| 246 opcode = kIA32Movl; | 246 opcode = kIA32Movl; |
| 247 break; | 247 break; |
| 248 case MachineRepresentation::kWord64: // Fall through. | 248 case MachineRepresentation::kWord64: // Fall through. |
| 249 case MachineRepresentation::kSimd128: // Fall through. | 249 case MachineRepresentation::kSimd128: // Fall through. |
| 250 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 251 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 252 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 253 case MachineRepresentation::kNone: | 250 case MachineRepresentation::kNone: |
| 254 UNREACHABLE(); | 251 UNREACHABLE(); |
| 255 return; | 252 return; |
| 256 } | 253 } |
| 257 | 254 |
| 258 IA32OperandGenerator g(this); | 255 IA32OperandGenerator g(this); |
| 259 InstructionOperand outputs[1]; | 256 InstructionOperand outputs[1]; |
| 260 outputs[0] = g.DefineAsRegister(node); | 257 outputs[0] = g.DefineAsRegister(node); |
| 261 InstructionOperand inputs[3]; | 258 InstructionOperand inputs[3]; |
| 262 size_t input_count = 0; | 259 size_t input_count = 0; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 opcode = kIA32Movw; | 330 opcode = kIA32Movw; |
| 334 break; | 331 break; |
| 335 case MachineRepresentation::kTaggedSigned: // Fall through. | 332 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 336 case MachineRepresentation::kTaggedPointer: // Fall through. | 333 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 337 case MachineRepresentation::kTagged: // Fall through. | 334 case MachineRepresentation::kTagged: // Fall through. |
| 338 case MachineRepresentation::kWord32: | 335 case MachineRepresentation::kWord32: |
| 339 opcode = kIA32Movl; | 336 opcode = kIA32Movl; |
| 340 break; | 337 break; |
| 341 case MachineRepresentation::kWord64: // Fall through. | 338 case MachineRepresentation::kWord64: // Fall through. |
| 342 case MachineRepresentation::kSimd128: // Fall through. | 339 case MachineRepresentation::kSimd128: // Fall through. |
| 343 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 344 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 345 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 346 case MachineRepresentation::kNone: | 340 case MachineRepresentation::kNone: |
| 347 UNREACHABLE(); | 341 UNREACHABLE(); |
| 348 return; | 342 return; |
| 349 } | 343 } |
| 350 | 344 |
| 351 InstructionOperand val; | 345 InstructionOperand val; |
| 352 if (g.CanBeImmediate(value)) { | 346 if (g.CanBeImmediate(value)) { |
| 353 val = g.UseImmediate(value); | 347 val = g.UseImmediate(value); |
| 354 } else if (rep == MachineRepresentation::kWord8 || | 348 } else if (rep == MachineRepresentation::kWord8 || |
| 355 rep == MachineRepresentation::kBit) { | 349 rep == MachineRepresentation::kBit) { |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 break; | 397 break; |
| 404 case MachineRepresentation::kFloat64: | 398 case MachineRepresentation::kFloat64: |
| 405 opcode = kCheckedLoadFloat64; | 399 opcode = kCheckedLoadFloat64; |
| 406 break; | 400 break; |
| 407 case MachineRepresentation::kBit: // Fall through. | 401 case MachineRepresentation::kBit: // Fall through. |
| 408 case MachineRepresentation::kTaggedSigned: // Fall through. | 402 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 409 case MachineRepresentation::kTaggedPointer: // Fall through. | 403 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 410 case MachineRepresentation::kTagged: // Fall through. | 404 case MachineRepresentation::kTagged: // Fall through. |
| 411 case MachineRepresentation::kWord64: // Fall through. | 405 case MachineRepresentation::kWord64: // Fall through. |
| 412 case MachineRepresentation::kSimd128: // Fall through. | 406 case MachineRepresentation::kSimd128: // Fall through. |
| 413 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 414 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 415 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 416 case MachineRepresentation::kNone: | 407 case MachineRepresentation::kNone: |
| 417 UNREACHABLE(); | 408 UNREACHABLE(); |
| 418 return; | 409 return; |
| 419 } | 410 } |
| 420 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { | 411 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { |
| 421 Int32BinopMatcher moffset(offset); | 412 Int32BinopMatcher moffset(offset); |
| 422 InstructionOperand buffer_operand = g.CanBeImmediate(buffer) | 413 InstructionOperand buffer_operand = g.CanBeImmediate(buffer) |
| 423 ? g.UseImmediate(buffer) | 414 ? g.UseImmediate(buffer) |
| 424 : g.UseRegister(buffer); | 415 : g.UseRegister(buffer); |
| 425 Int32Matcher mlength(length); | 416 Int32Matcher mlength(length); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 479 break; | 470 break; |
| 480 case MachineRepresentation::kFloat64: | 471 case MachineRepresentation::kFloat64: |
| 481 opcode = kCheckedStoreFloat64; | 472 opcode = kCheckedStoreFloat64; |
| 482 break; | 473 break; |
| 483 case MachineRepresentation::kBit: // Fall through. | 474 case MachineRepresentation::kBit: // Fall through. |
| 484 case MachineRepresentation::kTaggedSigned: // Fall through. | 475 case MachineRepresentation::kTaggedSigned: // Fall through. |
| 485 case MachineRepresentation::kTaggedPointer: // Fall through. | 476 case MachineRepresentation::kTaggedPointer: // Fall through. |
| 486 case MachineRepresentation::kTagged: // Fall through. | 477 case MachineRepresentation::kTagged: // Fall through. |
| 487 case MachineRepresentation::kWord64: // Fall through. | 478 case MachineRepresentation::kWord64: // Fall through. |
| 488 case MachineRepresentation::kSimd128: // Fall through. | 479 case MachineRepresentation::kSimd128: // Fall through. |
| 489 case MachineRepresentation::kSimd1x4: // Fall through. | |
| 490 case MachineRepresentation::kSimd1x8: // Fall through. | |
| 491 case MachineRepresentation::kSimd1x16: // Fall through. | |
| 492 case MachineRepresentation::kNone: | 480 case MachineRepresentation::kNone: |
| 493 UNREACHABLE(); | 481 UNREACHABLE(); |
| 494 return; | 482 return; |
| 495 } | 483 } |
| 496 InstructionOperand value_operand = | 484 InstructionOperand value_operand = |
| 497 g.CanBeImmediate(value) ? g.UseImmediate(value) | 485 g.CanBeImmediate(value) ? g.UseImmediate(value) |
| 498 : ((rep == MachineRepresentation::kWord8 || | 486 : ((rep == MachineRepresentation::kWord8 || |
| 499 rep == MachineRepresentation::kBit) | 487 rep == MachineRepresentation::kBit) |
| 500 ? g.UseByteRegister(value) | 488 ? g.UseByteRegister(value) |
| 501 : g.UseRegister(value)); | 489 : g.UseRegister(value)); |
| (...skipping 1455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1957 // static | 1945 // static |
| 1958 MachineOperatorBuilder::AlignmentRequirements | 1946 MachineOperatorBuilder::AlignmentRequirements |
| 1959 InstructionSelector::AlignmentRequirements() { | 1947 InstructionSelector::AlignmentRequirements() { |
| 1960 return MachineOperatorBuilder::AlignmentRequirements:: | 1948 return MachineOperatorBuilder::AlignmentRequirements:: |
| 1961 FullUnalignedAccessSupport(); | 1949 FullUnalignedAccessSupport(); |
| 1962 } | 1950 } |
| 1963 | 1951 |
| 1964 } // namespace compiler | 1952 } // namespace compiler |
| 1965 } // namespace internal | 1953 } // namespace internal |
| 1966 } // namespace v8 | 1954 } // namespace v8 |
| OLD | NEW |