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

Side by Side Diff: src/arm64/assembler-arm64.h

Issue 257203002: ARM64: Use the shifter operand to merge in previous shift instructions. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address first round of review comments Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/arm64/constants-arm64.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 #ifndef V8_ARM64_ASSEMBLER_ARM64_H_ 5 #ifndef V8_ARM64_ASSEMBLER_ARM64_H_
6 #define V8_ARM64_ASSEMBLER_ARM64_H_ 6 #define V8_ARM64_ASSEMBLER_ARM64_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 10
(...skipping 1730 matching lines...) Expand 10 before | Expand all | Expand 10 after
1741 inline static Instr ImmRotate(unsigned immr, unsigned reg_size); 1741 inline static Instr ImmRotate(unsigned immr, unsigned reg_size);
1742 inline static Instr ImmLLiteral(int imm19); 1742 inline static Instr ImmLLiteral(int imm19);
1743 inline static Instr BitN(unsigned bitn, unsigned reg_size); 1743 inline static Instr BitN(unsigned bitn, unsigned reg_size);
1744 inline static Instr ShiftDP(Shift shift); 1744 inline static Instr ShiftDP(Shift shift);
1745 inline static Instr ImmDPShift(unsigned amount); 1745 inline static Instr ImmDPShift(unsigned amount);
1746 inline static Instr ExtendMode(Extend extend); 1746 inline static Instr ExtendMode(Extend extend);
1747 inline static Instr ImmExtendShift(unsigned left_shift); 1747 inline static Instr ImmExtendShift(unsigned left_shift);
1748 inline static Instr ImmCondCmp(unsigned imm); 1748 inline static Instr ImmCondCmp(unsigned imm);
1749 inline static Instr Nzcv(StatusFlags nzcv); 1749 inline static Instr Nzcv(StatusFlags nzcv);
1750 1750
1751 static bool IsImmAddSub(int64_t immediate);
1752 static bool IsImmLogical(uint64_t value,
1753 unsigned width,
1754 unsigned* n,
1755 unsigned* imm_s,
1756 unsigned* imm_r);
1757
1751 // MemOperand offset encoding. 1758 // MemOperand offset encoding.
1752 inline static Instr ImmLSUnsigned(int imm12); 1759 inline static Instr ImmLSUnsigned(int imm12);
1753 inline static Instr ImmLS(int imm9); 1760 inline static Instr ImmLS(int imm9);
1754 inline static Instr ImmLSPair(int imm7, LSDataSize size); 1761 inline static Instr ImmLSPair(int imm7, LSDataSize size);
1755 inline static Instr ImmShiftLS(unsigned shift_amount); 1762 inline static Instr ImmShiftLS(unsigned shift_amount);
1756 inline static Instr ImmException(int imm16); 1763 inline static Instr ImmException(int imm16);
1757 inline static Instr ImmSystemRegister(int imm15); 1764 inline static Instr ImmSystemRegister(int imm15);
1758 inline static Instr ImmHint(int imm7); 1765 inline static Instr ImmHint(int imm7);
1759 inline static Instr ImmBarrierDomain(int imm2); 1766 inline static Instr ImmBarrierDomain(int imm2);
1760 inline static Instr ImmBarrierType(int imm2); 1767 inline static Instr ImmBarrierType(int imm2);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1854 void Logical(const Register& rd, 1861 void Logical(const Register& rd,
1855 const Register& rn, 1862 const Register& rn,
1856 const Operand& operand, 1863 const Operand& operand,
1857 LogicalOp op); 1864 LogicalOp op);
1858 void LogicalImmediate(const Register& rd, 1865 void LogicalImmediate(const Register& rd,
1859 const Register& rn, 1866 const Register& rn,
1860 unsigned n, 1867 unsigned n,
1861 unsigned imm_s, 1868 unsigned imm_s,
1862 unsigned imm_r, 1869 unsigned imm_r,
1863 LogicalOp op); 1870 LogicalOp op);
1864 static bool IsImmLogical(uint64_t value,
1865 unsigned width,
1866 unsigned* n,
1867 unsigned* imm_s,
1868 unsigned* imm_r);
1869 1871
1870 void ConditionalCompare(const Register& rn, 1872 void ConditionalCompare(const Register& rn,
1871 const Operand& operand, 1873 const Operand& operand,
1872 StatusFlags nzcv, 1874 StatusFlags nzcv,
1873 Condition cond, 1875 Condition cond,
1874 ConditionalCompareOp op); 1876 ConditionalCompareOp op);
1875 static bool IsImmConditionalCompare(int64_t immediate); 1877 static bool IsImmConditionalCompare(int64_t immediate);
1876 1878
1877 void AddSubWithCarry(const Register& rd, 1879 void AddSubWithCarry(const Register& rd,
1878 const Register& rn, 1880 const Register& rn,
(...skipping 10 matching lines...) Expand all
1889 void EmitExtendShift(const Register& rd, 1891 void EmitExtendShift(const Register& rd,
1890 const Register& rn, 1892 const Register& rn,
1891 Extend extend, 1893 Extend extend,
1892 unsigned left_shift); 1894 unsigned left_shift);
1893 1895
1894 void AddSub(const Register& rd, 1896 void AddSub(const Register& rd,
1895 const Register& rn, 1897 const Register& rn,
1896 const Operand& operand, 1898 const Operand& operand,
1897 FlagsUpdate S, 1899 FlagsUpdate S,
1898 AddSubOp op); 1900 AddSubOp op);
1899 static bool IsImmAddSub(int64_t immediate);
1900 1901
1901 static bool IsImmFP32(float imm); 1902 static bool IsImmFP32(float imm);
1902 static bool IsImmFP64(double imm); 1903 static bool IsImmFP64(double imm);
1903 1904
1904 // Find an appropriate LoadStoreOp or LoadStorePairOp for the specified 1905 // Find an appropriate LoadStoreOp or LoadStorePairOp for the specified
1905 // registers. Only simple loads are supported; sign- and zero-extension (such 1906 // registers. Only simple loads are supported; sign- and zero-extension (such
1906 // as in LDPSW_x or LDRB_w) are not supported. 1907 // as in LDPSW_x or LDRB_w) are not supported.
1907 static inline LoadStoreOp LoadOpFor(const CPURegister& rt); 1908 static inline LoadStoreOp LoadOpFor(const CPURegister& rt);
1908 static inline LoadStorePairOp LoadPairOpFor(const CPURegister& rt, 1909 static inline LoadStorePairOp LoadPairOpFor(const CPURegister& rt,
1909 const CPURegister& rt2); 1910 const CPURegister& rt2);
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
2225 class EnsureSpace BASE_EMBEDDED { 2226 class EnsureSpace BASE_EMBEDDED {
2226 public: 2227 public:
2227 explicit EnsureSpace(Assembler* assembler) { 2228 explicit EnsureSpace(Assembler* assembler) {
2228 assembler->CheckBufferSpace(); 2229 assembler->CheckBufferSpace();
2229 } 2230 }
2230 }; 2231 };
2231 2232
2232 } } // namespace v8::internal 2233 } } // namespace v8::internal
2233 2234
2234 #endif // V8_ARM64_ASSEMBLER_ARM64_H_ 2235 #endif // V8_ARM64_ASSEMBLER_ARM64_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm64/constants-arm64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698