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

Side by Side Diff: src/mips/assembler-mips.cc

Issue 1902743002: MIPS: Implement unaligned access instruction. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Address code review remarks Created 4 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
« no previous file with comments | « src/mips/assembler-mips.h ('k') | src/mips/constants-mips.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 (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 1811 matching lines...) Expand 10 before | Expand all | Expand 10 after
1822 if (is_int16(rs.offset_)) { 1822 if (is_int16(rs.offset_)) {
1823 GenInstrImmediate(LW, rs.rm(), rd, rs.offset_); 1823 GenInstrImmediate(LW, rs.rm(), rd, rs.offset_);
1824 } else { // Offset > 16 bits, use multiple instructions to load. 1824 } else { // Offset > 16 bits, use multiple instructions to load.
1825 LoadRegPlusOffsetToAt(rs); 1825 LoadRegPlusOffsetToAt(rs);
1826 GenInstrImmediate(LW, at, rd, 0); // Equiv to lw(rd, MemOperand(at, 0)); 1826 GenInstrImmediate(LW, at, rd, 0); // Equiv to lw(rd, MemOperand(at, 0));
1827 } 1827 }
1828 } 1828 }
1829 1829
1830 1830
1831 void Assembler::lwl(Register rd, const MemOperand& rs) { 1831 void Assembler::lwl(Register rd, const MemOperand& rs) {
1832 DCHECK(is_int16(rs.offset_));
1833 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) ||
1834 IsMipsArchVariant(kMips32r2));
1832 GenInstrImmediate(LWL, rs.rm(), rd, rs.offset_); 1835 GenInstrImmediate(LWL, rs.rm(), rd, rs.offset_);
1833 } 1836 }
1834 1837
1835 1838
1836 void Assembler::lwr(Register rd, const MemOperand& rs) { 1839 void Assembler::lwr(Register rd, const MemOperand& rs) {
1840 DCHECK(is_int16(rs.offset_));
1841 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) ||
1842 IsMipsArchVariant(kMips32r2));
1837 GenInstrImmediate(LWR, rs.rm(), rd, rs.offset_); 1843 GenInstrImmediate(LWR, rs.rm(), rd, rs.offset_);
1838 } 1844 }
1839 1845
1840 1846
1841 void Assembler::sb(Register rd, const MemOperand& rs) { 1847 void Assembler::sb(Register rd, const MemOperand& rs) {
1842 if (is_int16(rs.offset_)) { 1848 if (is_int16(rs.offset_)) {
1843 GenInstrImmediate(SB, rs.rm(), rd, rs.offset_); 1849 GenInstrImmediate(SB, rs.rm(), rd, rs.offset_);
1844 } else { // Offset > 16 bits, use multiple instructions to store. 1850 } else { // Offset > 16 bits, use multiple instructions to store.
1845 LoadRegPlusOffsetToAt(rs); 1851 LoadRegPlusOffsetToAt(rs);
1846 GenInstrImmediate(SB, at, rd, 0); // Equiv to sb(rd, MemOperand(at, 0)); 1852 GenInstrImmediate(SB, at, rd, 0); // Equiv to sb(rd, MemOperand(at, 0));
(...skipping 15 matching lines...) Expand all
1862 if (is_int16(rs.offset_)) { 1868 if (is_int16(rs.offset_)) {
1863 GenInstrImmediate(SW, rs.rm(), rd, rs.offset_); 1869 GenInstrImmediate(SW, rs.rm(), rd, rs.offset_);
1864 } else { // Offset > 16 bits, use multiple instructions to store. 1870 } else { // Offset > 16 bits, use multiple instructions to store.
1865 LoadRegPlusOffsetToAt(rs); 1871 LoadRegPlusOffsetToAt(rs);
1866 GenInstrImmediate(SW, at, rd, 0); // Equiv to sw(rd, MemOperand(at, 0)); 1872 GenInstrImmediate(SW, at, rd, 0); // Equiv to sw(rd, MemOperand(at, 0));
1867 } 1873 }
1868 } 1874 }
1869 1875
1870 1876
1871 void Assembler::swl(Register rd, const MemOperand& rs) { 1877 void Assembler::swl(Register rd, const MemOperand& rs) {
1878 DCHECK(is_int16(rs.offset_));
1879 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) ||
1880 IsMipsArchVariant(kMips32r2));
1872 GenInstrImmediate(SWL, rs.rm(), rd, rs.offset_); 1881 GenInstrImmediate(SWL, rs.rm(), rd, rs.offset_);
1873 } 1882 }
1874 1883
1875 1884
1876 void Assembler::swr(Register rd, const MemOperand& rs) { 1885 void Assembler::swr(Register rd, const MemOperand& rs) {
1886 DCHECK(is_int16(rs.offset_));
1887 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) ||
1888 IsMipsArchVariant(kMips32r2));
1877 GenInstrImmediate(SWR, rs.rm(), rd, rs.offset_); 1889 GenInstrImmediate(SWR, rs.rm(), rd, rs.offset_);
1878 } 1890 }
1879 1891
1880 1892
1881 void Assembler::lui(Register rd, int32_t j) { 1893 void Assembler::lui(Register rd, int32_t j) {
1882 DCHECK(is_uint16(j)); 1894 DCHECK(is_uint16(j));
1883 GenInstrImmediate(LUI, zero_reg, rd, j); 1895 GenInstrImmediate(LUI, zero_reg, rd, j);
1884 } 1896 }
1885 1897
1886 1898
(...skipping 1269 matching lines...) Expand 10 before | Expand all | Expand 10 after
3156 3168
3157 if (icache_flush_mode != SKIP_ICACHE_FLUSH) { 3169 if (icache_flush_mode != SKIP_ICACHE_FLUSH) {
3158 Assembler::FlushICache(isolate, pc, 2 * sizeof(int32_t)); 3170 Assembler::FlushICache(isolate, pc, 2 * sizeof(int32_t));
3159 } 3171 }
3160 } 3172 }
3161 3173
3162 } // namespace internal 3174 } // namespace internal
3163 } // namespace v8 3175 } // namespace v8
3164 3176
3165 #endif // V8_TARGET_ARCH_MIPS 3177 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/mips/assembler-mips.h ('k') | src/mips/constants-mips.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698