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

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

Issue 1147493002: Reland "MIPS: Add float instructions and test coverage, part one" (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Bug fixed Created 5 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 1602 matching lines...) Expand 10 before | Expand all | Expand 10 after
1613 1613
1614 1614
1615 void Assembler::srav(Register rd, Register rt, Register rs) { 1615 void Assembler::srav(Register rd, Register rt, Register rs) {
1616 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SRAV); 1616 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SRAV);
1617 } 1617 }
1618 1618
1619 1619
1620 void Assembler::rotr(Register rd, Register rt, uint16_t sa) { 1620 void Assembler::rotr(Register rd, Register rt, uint16_t sa) {
1621 // Should be called via MacroAssembler::Ror. 1621 // Should be called via MacroAssembler::Ror.
1622 DCHECK(rd.is_valid() && rt.is_valid() && is_uint5(sa)); 1622 DCHECK(rd.is_valid() && rt.is_valid() && is_uint5(sa));
1623 DCHECK(IsMipsArchVariant(kMips32r2)); 1623 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6));
1624 Instr instr = SPECIAL | (1 << kRsShift) | (rt.code() << kRtShift) 1624 Instr instr = SPECIAL | (1 << kRsShift) | (rt.code() << kRtShift)
1625 | (rd.code() << kRdShift) | (sa << kSaShift) | SRL; 1625 | (rd.code() << kRdShift) | (sa << kSaShift) | SRL;
1626 emit(instr); 1626 emit(instr);
1627 } 1627 }
1628 1628
1629 1629
1630 void Assembler::rotrv(Register rd, Register rt, Register rs) { 1630 void Assembler::rotrv(Register rd, Register rt, Register rs) {
1631 // Should be called via MacroAssembler::Ror. 1631 // Should be called via MacroAssembler::Ror.
1632 DCHECK(rd.is_valid() && rt.is_valid() && rs.is_valid() ); 1632 DCHECK(rd.is_valid() && rt.is_valid() && rs.is_valid() );
1633 DCHECK(IsMipsArchVariant(kMips32r2)); 1633 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6));
1634 Instr instr = SPECIAL | (rs.code() << kRsShift) | (rt.code() << kRtShift) 1634 Instr instr = SPECIAL | (rs.code() << kRsShift) | (rt.code() << kRtShift)
1635 | (rd.code() << kRdShift) | (1 << kSaShift) | SRLV; 1635 | (rd.code() << kRdShift) | (1 << kSaShift) | SRLV;
1636 emit(instr); 1636 emit(instr);
1637 } 1637 }
1638 1638
1639 1639
1640 // ------------Memory-instructions------------- 1640 // ------------Memory-instructions-------------
1641 1641
1642 // Helper for base-reg + offset, when offset is larger than int16. 1642 // Helper for base-reg + offset, when offset is larger than int16.
1643 void Assembler::LoadRegPlusOffsetToAt(const MemOperand& src) { 1643 void Assembler::LoadRegPlusOffsetToAt(const MemOperand& src) {
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
1896 } 1896 }
1897 1897
1898 1898
1899 void Assembler::movf(Register rd, Register rs, uint16_t cc) { 1899 void Assembler::movf(Register rd, Register rs, uint16_t cc) {
1900 Register rt; 1900 Register rt;
1901 rt.code_ = (cc & 0x0007) << 2 | 0; 1901 rt.code_ = (cc & 0x0007) << 2 | 0;
1902 GenInstrRegister(SPECIAL, rs, rt, rd, 0, MOVCI); 1902 GenInstrRegister(SPECIAL, rs, rt, rd, 0, MOVCI);
1903 } 1903 }
1904 1904
1905 1905
1906 void Assembler::sel(SecondaryField fmt, FPURegister fd, FPURegister fs,
1907 FPURegister ft) {
1908 DCHECK(IsMipsArchVariant(kMips32r6));
1909 DCHECK((fmt == D) || (fmt == S));
1910
1911 Instr instr = COP1 | fmt << kRsShift | ft.code() << kFtShift |
1912 fs.code() << kFsShift | fd.code() << kFdShift | SEL;
1913 emit(instr);
1914 }
1915
1916
1917 void Assembler::seleqz(Register rd, Register rs, Register rt) { 1906 void Assembler::seleqz(Register rd, Register rs, Register rt) {
1918 DCHECK(IsMipsArchVariant(kMips32r6)); 1907 DCHECK(IsMipsArchVariant(kMips32r6));
1919 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SELEQZ_S); 1908 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SELEQZ_S);
1920 } 1909 }
1921 1910
1922 1911
1923 void Assembler::seleqz(SecondaryField fmt, FPURegister fd, FPURegister fs,
1924 FPURegister ft) {
1925 DCHECK(IsMipsArchVariant(kMips32r6));
1926 DCHECK((fmt == D) || (fmt == S));
1927 GenInstrRegister(COP1, fmt, ft, fs, fd, SELEQZ_C);
1928 }
1929
1930
1931 void Assembler::selnez(Register rd, Register rs, Register rt) {
1932 DCHECK(IsMipsArchVariant(kMips32r6));
1933 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SELNEZ_S);
1934 }
1935
1936
1937 void Assembler::selnez(SecondaryField fmt, FPURegister fd, FPURegister fs,
1938 FPURegister ft) {
1939 DCHECK(IsMipsArchVariant(kMips32r6));
1940 DCHECK((fmt == D) || (fmt == S));
1941 GenInstrRegister(COP1, fmt, ft, fs, fd, SELNEZ_C);
1942 }
1943
1944
1945 // Bit twiddling. 1912 // Bit twiddling.
1946 void Assembler::clz(Register rd, Register rs) { 1913 void Assembler::clz(Register rd, Register rs) {
1947 if (!IsMipsArchVariant(kMips32r6)) { 1914 if (!IsMipsArchVariant(kMips32r6)) {
1948 // Clz instr requires same GPR number in 'rd' and 'rt' fields. 1915 // Clz instr requires same GPR number in 'rd' and 'rt' fields.
1949 GenInstrRegister(SPECIAL2, rs, rd, rd, 0, CLZ); 1916 GenInstrRegister(SPECIAL2, rs, rd, rd, 0, CLZ);
1950 } else { 1917 } else {
1951 GenInstrRegister(SPECIAL, rs, zero_reg, rd, 1, CLZ_R6); 1918 GenInstrRegister(SPECIAL, rs, zero_reg, rd, 1, CLZ_R6);
1952 } 1919 }
1953 } 1920 }
1954 1921
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
2103 2070
2104 void Assembler::DoubleAsTwoUInt32(double d, uint32_t* lo, uint32_t* hi) { 2071 void Assembler::DoubleAsTwoUInt32(double d, uint32_t* lo, uint32_t* hi) {
2105 uint64_t i; 2072 uint64_t i;
2106 memcpy(&i, &d, 8); 2073 memcpy(&i, &d, 8);
2107 2074
2108 *lo = i & 0xffffffff; 2075 *lo = i & 0xffffffff;
2109 *hi = i >> 32; 2076 *hi = i >> 32;
2110 } 2077 }
2111 2078
2112 2079
2080 void Assembler::movn_s(FPURegister fd, FPURegister fs, Register rt) {
2081 DCHECK(IsMipsArchVariant(kMips32r2));
2082 GenInstrRegister(COP1, S, rt, fs, fd, MOVN_C);
2083 }
2084
2085
2086 void Assembler::movn_d(FPURegister fd, FPURegister fs, Register rt) {
2087 DCHECK(IsMipsArchVariant(kMips32r2));
2088 GenInstrRegister(COP1, D, rt, fs, fd, MOVN_C);
2089 }
2090
2091
2092 void Assembler::sel(SecondaryField fmt, FPURegister fd, FPURegister fs,
2093 FPURegister ft) {
2094 DCHECK(IsMipsArchVariant(kMips32r6));
2095 DCHECK((fmt == D) || (fmt == S));
2096
2097 GenInstrRegister(COP1, fmt, ft, fs, fd, SEL);
2098 }
2099
2100
2101 void Assembler::sel_s(FPURegister fd, FPURegister fs, FPURegister ft) {
2102 sel(S, fd, fs, ft);
2103 }
2104
2105
2106 void Assembler::sel_d(FPURegister fd, FPURegister fs, FPURegister ft) {
2107 sel(D, fd, fs, ft);
2108 }
2109
2110
2111 void Assembler::seleqz(SecondaryField fmt, FPURegister fd, FPURegister fs,
2112 FPURegister ft) {
2113 DCHECK(IsMipsArchVariant(kMips32r6));
2114 DCHECK((fmt == D) || (fmt == S));
2115 GenInstrRegister(COP1, fmt, ft, fs, fd, SELEQZ_C);
2116 }
2117
2118
2119 void Assembler::selnez(Register rd, Register rs, Register rt) {
2120 DCHECK(IsMipsArchVariant(kMips32r6));
2121 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SELNEZ_S);
2122 }
2123
2124
2125 void Assembler::selnez(SecondaryField fmt, FPURegister fd, FPURegister fs,
2126 FPURegister ft) {
2127 DCHECK(IsMipsArchVariant(kMips32r6));
2128 DCHECK((fmt == D) || (fmt == S));
2129 GenInstrRegister(COP1, fmt, ft, fs, fd, SELNEZ_C);
2130 }
2131
2132
2133 void Assembler::seleqz_d(FPURegister fd, FPURegister fs, FPURegister ft) {
2134 seleqz(D, fd, fs, ft);
2135 }
2136
2137
2138 void Assembler::seleqz_s(FPURegister fd, FPURegister fs, FPURegister ft) {
2139 seleqz(S, fd, fs, ft);
2140 }
2141
2142
2143 void Assembler::selnez_d(FPURegister fd, FPURegister fs, FPURegister ft) {
2144 selnez(D, fd, fs, ft);
2145 }
2146
2147
2148 void Assembler::selnez_s(FPURegister fd, FPURegister fs, FPURegister ft) {
2149 selnez(S, fd, fs, ft);
2150 }
2151
2152
2153 void Assembler::movz_s(FPURegister fd, FPURegister fs, Register rt) {
2154 DCHECK(IsMipsArchVariant(kMips32r2));
2155 GenInstrRegister(COP1, S, rt, fs, fd, MOVZ_C);
2156 }
2157
2158
2159 void Assembler::movz_d(FPURegister fd, FPURegister fs, Register rt) {
2160 DCHECK(IsMipsArchVariant(kMips32r2));
2161 GenInstrRegister(COP1, D, rt, fs, fd, MOVZ_C);
2162 }
2163
2164
2165 void Assembler::movt_s(FPURegister fd, FPURegister fs, uint16_t cc) {
2166 DCHECK(IsMipsArchVariant(kMips32r2));
2167 FPURegister ft;
2168 ft.code_ = (cc & 0x0007) << 2 | 1;
2169 GenInstrRegister(COP1, S, ft, fs, fd, MOVF);
2170 }
2171
2172
2173 void Assembler::movt_d(FPURegister fd, FPURegister fs, uint16_t cc) {
2174 DCHECK(IsMipsArchVariant(kMips32r2));
2175 FPURegister ft;
2176 ft.code_ = (cc & 0x0007) << 2 | 1;
2177 GenInstrRegister(COP1, D, ft, fs, fd, MOVF);
2178 }
2179
2180
2181 void Assembler::movf_s(FPURegister fd, FPURegister fs, uint16_t cc) {
2182 DCHECK(IsMipsArchVariant(kMips32r2));
2183 FPURegister ft;
2184 ft.code_ = (cc & 0x0007) << 2 | 0;
2185 GenInstrRegister(COP1, S, ft, fs, fd, MOVF);
2186 }
2187
2188
2189 void Assembler::movf_d(FPURegister fd, FPURegister fs, uint16_t cc) {
2190 DCHECK(IsMipsArchVariant(kMips32r2));
2191 FPURegister ft;
2192 ft.code_ = (cc & 0x0007) << 2 | 0;
2193 GenInstrRegister(COP1, D, ft, fs, fd, MOVF);
2194 }
2195
2196
2113 // Arithmetic. 2197 // Arithmetic.
2114 2198
2115 void Assembler::add_s(FPURegister fd, FPURegister fs, FPURegister ft) { 2199 void Assembler::add_s(FPURegister fd, FPURegister fs, FPURegister ft) {
2116 GenInstrRegister(COP1, S, ft, fs, fd, ADD_D); 2200 GenInstrRegister(COP1, S, ft, fs, fd, ADD_S);
2117 } 2201 }
2118 2202
2119 2203
2120 void Assembler::add_d(FPURegister fd, FPURegister fs, FPURegister ft) { 2204 void Assembler::add_d(FPURegister fd, FPURegister fs, FPURegister ft) {
2121 GenInstrRegister(COP1, D, ft, fs, fd, ADD_D); 2205 GenInstrRegister(COP1, D, ft, fs, fd, ADD_D);
2122 } 2206 }
2123 2207
2124 2208
2125 void Assembler::sub_s(FPURegister fd, FPURegister fs, FPURegister ft) { 2209 void Assembler::sub_s(FPURegister fd, FPURegister fs, FPURegister ft) {
2126 GenInstrRegister(COP1, S, ft, fs, fd, SUB_D); 2210 GenInstrRegister(COP1, S, ft, fs, fd, SUB_S);
2127 } 2211 }
2128 2212
2129 2213
2130 void Assembler::sub_d(FPURegister fd, FPURegister fs, FPURegister ft) { 2214 void Assembler::sub_d(FPURegister fd, FPURegister fs, FPURegister ft) {
2131 GenInstrRegister(COP1, D, ft, fs, fd, SUB_D); 2215 GenInstrRegister(COP1, D, ft, fs, fd, SUB_D);
2132 } 2216 }
2133 2217
2134 2218
2135 void Assembler::mul_s(FPURegister fd, FPURegister fs, FPURegister ft) { 2219 void Assembler::mul_s(FPURegister fd, FPURegister fs, FPURegister ft) {
2136 GenInstrRegister(COP1, S, ft, fs, fd, MUL_D); 2220 GenInstrRegister(COP1, S, ft, fs, fd, MUL_S);
2137 } 2221 }
2138 2222
2139 2223
2140 void Assembler::mul_d(FPURegister fd, FPURegister fs, FPURegister ft) { 2224 void Assembler::mul_d(FPURegister fd, FPURegister fs, FPURegister ft) {
2141 GenInstrRegister(COP1, D, ft, fs, fd, MUL_D); 2225 GenInstrRegister(COP1, D, ft, fs, fd, MUL_D);
2142 } 2226 }
2143 2227
2144 2228
2145 void Assembler::madd_d(FPURegister fd, FPURegister fr, FPURegister fs, 2229 void Assembler::madd_d(FPURegister fd, FPURegister fr, FPURegister fs,
2146 FPURegister ft) { 2230 FPURegister ft) {
2147 DCHECK(IsMipsArchVariant(kMips32r2)); 2231 DCHECK(IsMipsArchVariant(kMips32r2));
2148 GenInstrRegister(COP1X, fr, ft, fs, fd, MADD_D); 2232 GenInstrRegister(COP1X, fr, ft, fs, fd, MADD_D);
2149 } 2233 }
2150 2234
2151 2235
2152 void Assembler::div_s(FPURegister fd, FPURegister fs, FPURegister ft) { 2236 void Assembler::div_s(FPURegister fd, FPURegister fs, FPURegister ft) {
2153 GenInstrRegister(COP1, S, ft, fs, fd, DIV_D); 2237 GenInstrRegister(COP1, S, ft, fs, fd, DIV_S);
2154 } 2238 }
2155 2239
2156 2240
2157 void Assembler::div_d(FPURegister fd, FPURegister fs, FPURegister ft) { 2241 void Assembler::div_d(FPURegister fd, FPURegister fs, FPURegister ft) {
2158 GenInstrRegister(COP1, D, ft, fs, fd, DIV_D); 2242 GenInstrRegister(COP1, D, ft, fs, fd, DIV_D);
2159 } 2243 }
2160 2244
2161 2245
2162 void Assembler::abs_s(FPURegister fd, FPURegister fs) { 2246 void Assembler::abs_s(FPURegister fd, FPURegister fs) {
2163 GenInstrRegister(COP1, S, f0, fs, fd, ABS_D); 2247 GenInstrRegister(COP1, S, f0, fs, fd, ABS_S);
2164 } 2248 }
2165 2249
2166 2250
2167 void Assembler::abs_d(FPURegister fd, FPURegister fs) { 2251 void Assembler::abs_d(FPURegister fd, FPURegister fs) {
2168 GenInstrRegister(COP1, D, f0, fs, fd, ABS_D); 2252 GenInstrRegister(COP1, D, f0, fs, fd, ABS_D);
2169 } 2253 }
2170 2254
2171 2255
2172 void Assembler::mov_d(FPURegister fd, FPURegister fs) { 2256 void Assembler::mov_d(FPURegister fd, FPURegister fs) {
2173 GenInstrRegister(COP1, D, f0, fs, fd, MOV_D); 2257 GenInstrRegister(COP1, D, f0, fs, fd, MOV_S);
2258 }
2259
2260
2261 void Assembler::mov_s(FPURegister fd, FPURegister fs) {
2262 GenInstrRegister(COP1, S, f0, fs, fd, MOV_D);
2174 } 2263 }
2175 2264
2176 2265
2177 void Assembler::neg_s(FPURegister fd, FPURegister fs) { 2266 void Assembler::neg_s(FPURegister fd, FPURegister fs) {
2178 GenInstrRegister(COP1, S, f0, fs, fd, NEG_D); 2267 GenInstrRegister(COP1, S, f0, fs, fd, NEG_S);
2179 } 2268 }
2180 2269
2181 2270
2182 void Assembler::neg_d(FPURegister fd, FPURegister fs) { 2271 void Assembler::neg_d(FPURegister fd, FPURegister fs) {
2183 GenInstrRegister(COP1, D, f0, fs, fd, NEG_D); 2272 GenInstrRegister(COP1, D, f0, fs, fd, NEG_D);
2184 } 2273 }
2185 2274
2186 2275
2187 void Assembler::sqrt_s(FPURegister fd, FPURegister fs) { 2276 void Assembler::sqrt_s(FPURegister fd, FPURegister fs) {
2188 GenInstrRegister(COP1, S, f0, fs, fd, SQRT_D); 2277 GenInstrRegister(COP1, S, f0, fs, fd, SQRT_S);
2189 } 2278 }
2190 2279
2191 2280
2192 void Assembler::sqrt_d(FPURegister fd, FPURegister fs) { 2281 void Assembler::sqrt_d(FPURegister fd, FPURegister fs) {
2193 GenInstrRegister(COP1, D, f0, fs, fd, SQRT_D); 2282 GenInstrRegister(COP1, D, f0, fs, fd, SQRT_D);
2194 } 2283 }
2195 2284
2196 2285
2286 void Assembler::rsqrt_s(FPURegister fd, FPURegister fs) {
2287 GenInstrRegister(COP1, S, f0, fs, fd, RSQRT_S);
2288 }
2289
2290
2291 void Assembler::rsqrt_d(FPURegister fd, FPURegister fs) {
2292 GenInstrRegister(COP1, D, f0, fs, fd, RSQRT_D);
2293 }
2294
2295
2296 void Assembler::recip_d(FPURegister fd, FPURegister fs) {
2297 GenInstrRegister(COP1, D, f0, fs, fd, RECIP_D);
2298 }
2299
2300
2301 void Assembler::recip_s(FPURegister fd, FPURegister fs) {
2302 GenInstrRegister(COP1, S, f0, fs, fd, RECIP_S);
2303 }
2304
2305
2197 // Conversions. 2306 // Conversions.
2198 2307
2199 void Assembler::cvt_w_s(FPURegister fd, FPURegister fs) { 2308 void Assembler::cvt_w_s(FPURegister fd, FPURegister fs) {
2200 GenInstrRegister(COP1, S, f0, fs, fd, CVT_W_S); 2309 GenInstrRegister(COP1, S, f0, fs, fd, CVT_W_S);
2201 } 2310 }
2202 2311
2203 2312
2204 void Assembler::cvt_w_d(FPURegister fd, FPURegister fs) { 2313 void Assembler::cvt_w_d(FPURegister fd, FPURegister fs) {
2205 GenInstrRegister(COP1, D, f0, fs, fd, CVT_W_D); 2314 GenInstrRegister(COP1, D, f0, fs, fd, CVT_W_D);
2206 } 2315 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2244 void Assembler::ceil_w_d(FPURegister fd, FPURegister fs) { 2353 void Assembler::ceil_w_d(FPURegister fd, FPURegister fs) {
2245 GenInstrRegister(COP1, D, f0, fs, fd, CEIL_W_D); 2354 GenInstrRegister(COP1, D, f0, fs, fd, CEIL_W_D);
2246 } 2355 }
2247 2356
2248 2357
2249 void Assembler::rint_s(FPURegister fd, FPURegister fs) { rint(S, fd, fs); } 2358 void Assembler::rint_s(FPURegister fd, FPURegister fs) { rint(S, fd, fs); }
2250 2359
2251 2360
2252 void Assembler::rint(SecondaryField fmt, FPURegister fd, FPURegister fs) { 2361 void Assembler::rint(SecondaryField fmt, FPURegister fd, FPURegister fs) {
2253 DCHECK(IsMipsArchVariant(kMips32r6)); 2362 DCHECK(IsMipsArchVariant(kMips32r6));
2363 DCHECK((fmt == D) || (fmt == S));
2254 GenInstrRegister(COP1, fmt, f0, fs, fd, RINT); 2364 GenInstrRegister(COP1, fmt, f0, fs, fd, RINT);
2255 } 2365 }
2256 2366
2257 2367
2258 void Assembler::rint_d(FPURegister fd, FPURegister fs) { rint(D, fd, fs); } 2368 void Assembler::rint_d(FPURegister fd, FPURegister fs) { rint(D, fd, fs); }
2259 2369
2260 2370
2261 void Assembler::cvt_l_s(FPURegister fd, FPURegister fs) { 2371 void Assembler::cvt_l_s(FPURegister fd, FPURegister fs) {
2262 DCHECK(IsMipsArchVariant(kMips32r2)); 2372 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6));
2263 GenInstrRegister(COP1, S, f0, fs, fd, CVT_L_S); 2373 GenInstrRegister(COP1, S, f0, fs, fd, CVT_L_S);
2264 } 2374 }
2265 2375
2266 2376
2267 void Assembler::cvt_l_d(FPURegister fd, FPURegister fs) { 2377 void Assembler::cvt_l_d(FPURegister fd, FPURegister fs) {
2268 DCHECK(IsMipsArchVariant(kMips32r2)); 2378 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6));
2269 GenInstrRegister(COP1, D, f0, fs, fd, CVT_L_D); 2379 GenInstrRegister(COP1, D, f0, fs, fd, CVT_L_D);
2270 } 2380 }
2271 2381
2272 2382
2273 void Assembler::trunc_l_s(FPURegister fd, FPURegister fs) { 2383 void Assembler::trunc_l_s(FPURegister fd, FPURegister fs) {
2274 DCHECK(IsMipsArchVariant(kMips32r2)); 2384 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6));
2275 GenInstrRegister(COP1, S, f0, fs, fd, TRUNC_L_S); 2385 GenInstrRegister(COP1, S, f0, fs, fd, TRUNC_L_S);
2276 } 2386 }
2277 2387
2278 2388
2279 void Assembler::trunc_l_d(FPURegister fd, FPURegister fs) { 2389 void Assembler::trunc_l_d(FPURegister fd, FPURegister fs) {
2280 DCHECK(IsMipsArchVariant(kMips32r2)); 2390 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6));
2281 GenInstrRegister(COP1, D, f0, fs, fd, TRUNC_L_D); 2391 GenInstrRegister(COP1, D, f0, fs, fd, TRUNC_L_D);
2282 } 2392 }
2283 2393
2284 2394
2285 void Assembler::round_l_s(FPURegister fd, FPURegister fs) { 2395 void Assembler::round_l_s(FPURegister fd, FPURegister fs) {
2286 GenInstrRegister(COP1, S, f0, fs, fd, ROUND_L_S); 2396 GenInstrRegister(COP1, S, f0, fs, fd, ROUND_L_S);
2287 } 2397 }
2288 2398
2289 2399
2290 void Assembler::round_l_d(FPURegister fd, FPURegister fs) { 2400 void Assembler::round_l_d(FPURegister fd, FPURegister fs) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
2399 GenInstrRegister(COP1, D, f0, fs, fd, CVT_S_D); 2509 GenInstrRegister(COP1, D, f0, fs, fd, CVT_S_D);
2400 } 2510 }
2401 2511
2402 2512
2403 void Assembler::cvt_d_w(FPURegister fd, FPURegister fs) { 2513 void Assembler::cvt_d_w(FPURegister fd, FPURegister fs) {
2404 GenInstrRegister(COP1, W, f0, fs, fd, CVT_D_W); 2514 GenInstrRegister(COP1, W, f0, fs, fd, CVT_D_W);
2405 } 2515 }
2406 2516
2407 2517
2408 void Assembler::cvt_d_l(FPURegister fd, FPURegister fs) { 2518 void Assembler::cvt_d_l(FPURegister fd, FPURegister fs) {
2409 DCHECK(IsMipsArchVariant(kMips32r2)); 2519 DCHECK(IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6));
2410 GenInstrRegister(COP1, L, f0, fs, fd, CVT_D_L); 2520 GenInstrRegister(COP1, L, f0, fs, fd, CVT_D_L);
2411 } 2521 }
2412 2522
2413 2523
2414 void Assembler::cvt_d_s(FPURegister fd, FPURegister fs) { 2524 void Assembler::cvt_d_s(FPURegister fd, FPURegister fs) {
2415 GenInstrRegister(COP1, S, f0, fs, fd, CVT_D_S); 2525 GenInstrRegister(COP1, S, f0, fs, fd, CVT_D_S);
2416 } 2526 }
2417 2527
2418 2528
2419 // Conditions for >= MIPSr6. 2529 // Conditions for >= MIPSr6.
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
2883 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) { 2993 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) {
2884 // No out-of-line constant pool support. 2994 // No out-of-line constant pool support.
2885 DCHECK(!FLAG_enable_ool_constant_pool); 2995 DCHECK(!FLAG_enable_ool_constant_pool);
2886 return; 2996 return;
2887 } 2997 }
2888 2998
2889 2999
2890 } } // namespace v8::internal 3000 } } // namespace v8::internal
2891 3001
2892 #endif // V8_TARGET_ARCH_MIPS 3002 #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