Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(456)

Side by Side Diff: src/compiler/mips64/instruction-selector-mips64.cc

Issue 2700813002: [V8] Implement SIMD Boolean vector types to allow mask registers. (Closed)
Patch Set: Rebase. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/mips/instruction-selector-mips.cc ('k') | src/compiler/opcodes.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/compiler/mips/instruction-selector-mips.cc ('k') | src/compiler/opcodes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698