| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |