| 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 361 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 372     case MachineRepresentation::kWord32: | 372     case MachineRepresentation::kWord32: | 
| 373       opcode = load_rep.IsUnsigned() ? kMips64Lwu : kMips64Lw; | 373       opcode = load_rep.IsUnsigned() ? kMips64Lwu : kMips64Lw; | 
| 374       break; | 374       break; | 
| 375     case MachineRepresentation::kTaggedSigned:   // Fall through. | 375     case MachineRepresentation::kTaggedSigned:   // Fall through. | 
| 376     case MachineRepresentation::kTaggedPointer:  // Fall through. | 376     case MachineRepresentation::kTaggedPointer:  // Fall through. | 
| 377     case MachineRepresentation::kTagged:  // Fall through. | 377     case MachineRepresentation::kTagged:  // Fall through. | 
| 378     case MachineRepresentation::kWord64: | 378     case MachineRepresentation::kWord64: | 
| 379       opcode = kMips64Ld; | 379       opcode = kMips64Ld; | 
| 380       break; | 380       break; | 
| 381     case MachineRepresentation::kSimd128:  // Fall through. | 381     case MachineRepresentation::kSimd128:  // Fall through. | 
|  | 382     case MachineRepresentation::kSimd1x4:  // Fall through. | 
|  | 383     case MachineRepresentation::kSimd1x8:  // Fall through. | 
|  | 384     case MachineRepresentation::kSimd1x16:  // Fall through. | 
| 382     case MachineRepresentation::kNone: | 385     case MachineRepresentation::kNone: | 
| 383       UNREACHABLE(); | 386       UNREACHABLE(); | 
| 384       return; | 387       return; | 
| 385   } | 388   } | 
| 386 | 389 | 
| 387   EmitLoad(this, node, opcode); | 390   EmitLoad(this, node, opcode); | 
| 388 } | 391 } | 
| 389 | 392 | 
| 390 void InstructionSelector::VisitProtectedLoad(Node* node) { | 393 void InstructionSelector::VisitProtectedLoad(Node* node) { | 
| 391   // TODO(eholk) | 394   // TODO(eholk) | 
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 449       case MachineRepresentation::kWord32: | 452       case MachineRepresentation::kWord32: | 
| 450         opcode = kMips64Sw; | 453         opcode = kMips64Sw; | 
| 451         break; | 454         break; | 
| 452       case MachineRepresentation::kTaggedSigned:   // Fall through. | 455       case MachineRepresentation::kTaggedSigned:   // Fall through. | 
| 453       case MachineRepresentation::kTaggedPointer:  // Fall through. | 456       case MachineRepresentation::kTaggedPointer:  // Fall through. | 
| 454       case MachineRepresentation::kTagged:  // Fall through. | 457       case MachineRepresentation::kTagged:  // Fall through. | 
| 455       case MachineRepresentation::kWord64: | 458       case MachineRepresentation::kWord64: | 
| 456         opcode = kMips64Sd; | 459         opcode = kMips64Sd; | 
| 457         break; | 460         break; | 
| 458       case MachineRepresentation::kSimd128:  // Fall through. | 461       case MachineRepresentation::kSimd128:  // Fall through. | 
|  | 462       case MachineRepresentation::kSimd1x4:  // Fall through. | 
|  | 463       case MachineRepresentation::kSimd1x8:  // Fall through. | 
|  | 464       case MachineRepresentation::kSimd1x16:  // Fall through. | 
| 459       case MachineRepresentation::kNone: | 465       case MachineRepresentation::kNone: | 
| 460         UNREACHABLE(); | 466         UNREACHABLE(); | 
| 461         return; | 467         return; | 
| 462     } | 468     } | 
| 463 | 469 | 
| 464     if (g.CanBeImmediate(index, opcode)) { | 470     if (g.CanBeImmediate(index, opcode)) { | 
| 465       Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), | 471       Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), | 
| 466            g.UseRegister(base), g.UseImmediate(index), | 472            g.UseRegister(base), g.UseImmediate(index), | 
| 467            g.UseRegisterOrImmediateZero(value)); | 473            g.UseRegisterOrImmediateZero(value)); | 
| 468     } else { | 474     } else { | 
| (...skipping 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1732     case MachineRepresentation::kWord32: | 1738     case MachineRepresentation::kWord32: | 
| 1733       opcode = load_rep.IsUnsigned() ? kMips64Ulwu : kMips64Ulw; | 1739       opcode = load_rep.IsUnsigned() ? kMips64Ulwu : kMips64Ulw; | 
| 1734       break; | 1740       break; | 
| 1735     case MachineRepresentation::kTaggedSigned:   // Fall through. | 1741     case MachineRepresentation::kTaggedSigned:   // Fall through. | 
| 1736     case MachineRepresentation::kTaggedPointer:  // Fall through. | 1742     case MachineRepresentation::kTaggedPointer:  // Fall through. | 
| 1737     case MachineRepresentation::kTagged:  // Fall through. | 1743     case MachineRepresentation::kTagged:  // Fall through. | 
| 1738     case MachineRepresentation::kWord64: | 1744     case MachineRepresentation::kWord64: | 
| 1739       opcode = kMips64Uld; | 1745       opcode = kMips64Uld; | 
| 1740       break; | 1746       break; | 
| 1741     case MachineRepresentation::kSimd128:  // Fall through. | 1747     case MachineRepresentation::kSimd128:  // Fall through. | 
|  | 1748     case MachineRepresentation::kSimd1x4:  // Fall through. | 
|  | 1749     case MachineRepresentation::kSimd1x8:  // Fall through. | 
|  | 1750     case MachineRepresentation::kSimd1x16:  // Fall through. | 
| 1742     case MachineRepresentation::kNone: | 1751     case MachineRepresentation::kNone: | 
| 1743       UNREACHABLE(); | 1752       UNREACHABLE(); | 
| 1744       return; | 1753       return; | 
| 1745   } | 1754   } | 
| 1746 | 1755 | 
| 1747   if (g.CanBeImmediate(index, opcode)) { | 1756   if (g.CanBeImmediate(index, opcode)) { | 
| 1748     Emit(opcode | AddressingModeField::encode(kMode_MRI), | 1757     Emit(opcode | AddressingModeField::encode(kMode_MRI), | 
| 1749          g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); | 1758          g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); | 
| 1750   } else { | 1759   } else { | 
| 1751     InstructionOperand addr_reg = g.TempRegister(); | 1760     InstructionOperand addr_reg = g.TempRegister(); | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 1782     case MachineRepresentation::kWord32: | 1791     case MachineRepresentation::kWord32: | 
| 1783       opcode = kMips64Usw; | 1792       opcode = kMips64Usw; | 
| 1784       break; | 1793       break; | 
| 1785     case MachineRepresentation::kTaggedSigned:   // Fall through. | 1794     case MachineRepresentation::kTaggedSigned:   // Fall through. | 
| 1786     case MachineRepresentation::kTaggedPointer:  // Fall through. | 1795     case MachineRepresentation::kTaggedPointer:  // Fall through. | 
| 1787     case MachineRepresentation::kTagged:  // Fall through. | 1796     case MachineRepresentation::kTagged:  // Fall through. | 
| 1788     case MachineRepresentation::kWord64: | 1797     case MachineRepresentation::kWord64: | 
| 1789       opcode = kMips64Usd; | 1798       opcode = kMips64Usd; | 
| 1790       break; | 1799       break; | 
| 1791     case MachineRepresentation::kSimd128:  // Fall through. | 1800     case MachineRepresentation::kSimd128:  // Fall through. | 
|  | 1801     case MachineRepresentation::kSimd1x4:  // Fall through. | 
|  | 1802     case MachineRepresentation::kSimd1x8:  // Fall through. | 
|  | 1803     case MachineRepresentation::kSimd1x16:  // Fall through. | 
| 1792     case MachineRepresentation::kNone: | 1804     case MachineRepresentation::kNone: | 
| 1793       UNREACHABLE(); | 1805       UNREACHABLE(); | 
| 1794       return; | 1806       return; | 
| 1795   } | 1807   } | 
| 1796 | 1808 | 
| 1797   if (g.CanBeImmediate(index, opcode)) { | 1809   if (g.CanBeImmediate(index, opcode)) { | 
| 1798     Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), | 1810     Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), | 
| 1799          g.UseRegister(base), g.UseImmediate(index), | 1811          g.UseRegister(base), g.UseImmediate(index), | 
| 1800          g.UseRegisterOrImmediateZero(value)); | 1812          g.UseRegisterOrImmediateZero(value)); | 
| 1801   } else { | 1813   } else { | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 1832       opcode = kCheckedLoadFloat32; | 1844       opcode = kCheckedLoadFloat32; | 
| 1833       break; | 1845       break; | 
| 1834     case MachineRepresentation::kFloat64: | 1846     case MachineRepresentation::kFloat64: | 
| 1835       opcode = kCheckedLoadFloat64; | 1847       opcode = kCheckedLoadFloat64; | 
| 1836       break; | 1848       break; | 
| 1837     case MachineRepresentation::kBit: | 1849     case MachineRepresentation::kBit: | 
| 1838     case MachineRepresentation::kTaggedSigned:   // Fall through. | 1850     case MachineRepresentation::kTaggedSigned:   // Fall through. | 
| 1839     case MachineRepresentation::kTaggedPointer:  // Fall through. | 1851     case MachineRepresentation::kTaggedPointer:  // Fall through. | 
| 1840     case MachineRepresentation::kTagged: | 1852     case MachineRepresentation::kTagged: | 
| 1841     case MachineRepresentation::kSimd128: | 1853     case MachineRepresentation::kSimd128: | 
|  | 1854     case MachineRepresentation::kSimd1x4:   // Fall through. | 
|  | 1855     case MachineRepresentation::kSimd1x8:   // Fall through. | 
|  | 1856     case MachineRepresentation::kSimd1x16:  // Fall through. | 
| 1842     case MachineRepresentation::kNone: | 1857     case MachineRepresentation::kNone: | 
| 1843       UNREACHABLE(); | 1858       UNREACHABLE(); | 
| 1844       return; | 1859       return; | 
| 1845   } | 1860   } | 
| 1846   InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) | 1861   InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) | 
| 1847                                           ? g.UseImmediate(offset) | 1862                                           ? g.UseImmediate(offset) | 
| 1848                                           : g.UseRegister(offset); | 1863                                           : g.UseRegister(offset); | 
| 1849 | 1864 | 
| 1850   InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) | 1865   InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) | 
| 1851                                           ? g.CanBeImmediate(length, opcode) | 1866                                           ? g.CanBeImmediate(length, opcode) | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1893       opcode = kCheckedStoreFloat32; | 1908       opcode = kCheckedStoreFloat32; | 
| 1894       break; | 1909       break; | 
| 1895     case MachineRepresentation::kFloat64: | 1910     case MachineRepresentation::kFloat64: | 
| 1896       opcode = kCheckedStoreFloat64; | 1911       opcode = kCheckedStoreFloat64; | 
| 1897       break; | 1912       break; | 
| 1898     case MachineRepresentation::kBit: | 1913     case MachineRepresentation::kBit: | 
| 1899     case MachineRepresentation::kTaggedSigned:   // Fall through. | 1914     case MachineRepresentation::kTaggedSigned:   // Fall through. | 
| 1900     case MachineRepresentation::kTaggedPointer:  // Fall through. | 1915     case MachineRepresentation::kTaggedPointer:  // Fall through. | 
| 1901     case MachineRepresentation::kTagged: | 1916     case MachineRepresentation::kTagged: | 
| 1902     case MachineRepresentation::kSimd128: | 1917     case MachineRepresentation::kSimd128: | 
|  | 1918     case MachineRepresentation::kSimd1x4:   // Fall through. | 
|  | 1919     case MachineRepresentation::kSimd1x8:   // Fall through. | 
|  | 1920     case MachineRepresentation::kSimd1x16:  // Fall through. | 
| 1903     case MachineRepresentation::kNone: | 1921     case MachineRepresentation::kNone: | 
| 1904       UNREACHABLE(); | 1922       UNREACHABLE(); | 
| 1905       return; | 1923       return; | 
| 1906   } | 1924   } | 
| 1907   InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) | 1925   InstructionOperand offset_operand = g.CanBeImmediate(offset, opcode) | 
| 1908                                           ? g.UseImmediate(offset) | 1926                                           ? g.UseImmediate(offset) | 
| 1909                                           : g.UseRegister(offset); | 1927                                           : g.UseRegister(offset); | 
| 1910 | 1928 | 
| 1911   InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) | 1929   InstructionOperand length_operand = (!g.CanBeImmediate(offset, opcode)) | 
| 1912                                           ? g.CanBeImmediate(length, opcode) | 1930                                           ? g.CanBeImmediate(length, opcode) | 
| (...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2642   } else { | 2660   } else { | 
| 2643     DCHECK(kArchVariant == kMips64r2); | 2661     DCHECK(kArchVariant == kMips64r2); | 
| 2644     return MachineOperatorBuilder::AlignmentRequirements:: | 2662     return MachineOperatorBuilder::AlignmentRequirements:: | 
| 2645         NoUnalignedAccessSupport(); | 2663         NoUnalignedAccessSupport(); | 
| 2646   } | 2664   } | 
| 2647 } | 2665 } | 
| 2648 | 2666 | 
| 2649 }  // namespace compiler | 2667 }  // namespace compiler | 
| 2650 }  // namespace internal | 2668 }  // namespace internal | 
| 2651 }  // namespace v8 | 2669 }  // namespace v8 | 
| OLD | NEW | 
|---|