OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 <limits.h> // For LONG_MIN, LONG_MAX. | 5 #include <limits.h> // For LONG_MIN, LONG_MAX. |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #if V8_TARGET_ARCH_MIPS | 9 #if V8_TARGET_ARCH_MIPS |
10 | 10 |
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
783 mflo(res); | 783 mflo(res); |
784 mfhi(rem); | 784 mfhi(rem); |
785 } else { | 785 } else { |
786 div(res, rs, at); | 786 div(res, rs, at); |
787 mod(rem, rs, at); | 787 mod(rem, rs, at); |
788 } | 788 } |
789 } | 789 } |
790 } | 790 } |
791 | 791 |
792 | 792 |
| 793 void MacroAssembler::Div(Register res, Register rs, const Operand& rt) { |
| 794 if (rt.is_reg()) { |
| 795 if (!IsMipsArchVariant(kMips32r6)) { |
| 796 div(rs, rt.rm()); |
| 797 mflo(res); |
| 798 } else { |
| 799 div(res, rs, rt.rm()); |
| 800 } |
| 801 } else { |
| 802 // li handles the relocation. |
| 803 DCHECK(!rs.is(at)); |
| 804 li(at, rt); |
| 805 if (!IsMipsArchVariant(kMips32r6)) { |
| 806 div(rs, at); |
| 807 mflo(res); |
| 808 } else { |
| 809 div(res, rs, at); |
| 810 } |
| 811 } |
| 812 } |
| 813 |
| 814 |
793 void MacroAssembler::Mod(Register rd, Register rs, const Operand& rt) { | 815 void MacroAssembler::Mod(Register rd, Register rs, const Operand& rt) { |
794 if (rt.is_reg()) { | 816 if (rt.is_reg()) { |
795 if (!IsMipsArchVariant(kMips32r6)) { | 817 if (!IsMipsArchVariant(kMips32r6)) { |
796 div(rs, rt.rm()); | 818 div(rs, rt.rm()); |
797 mfhi(rd); | 819 mfhi(rd); |
798 } else { | 820 } else { |
799 mod(rd, rs, rt.rm()); | 821 mod(rd, rs, rt.rm()); |
800 } | 822 } |
801 } else { | 823 } else { |
802 // li handles the relocation. | 824 // li handles the relocation. |
803 DCHECK(!rs.is(at)); | 825 DCHECK(!rs.is(at)); |
804 li(at, rt); | 826 li(at, rt); |
805 if (!IsMipsArchVariant(kMips32r6)) { | 827 if (!IsMipsArchVariant(kMips32r6)) { |
806 div(rs, at); | 828 div(rs, at); |
807 mfhi(rd); | 829 mfhi(rd); |
808 } else { | 830 } else { |
809 mod(rd, rs, at); | 831 mod(rd, rs, at); |
810 } | 832 } |
811 } | 833 } |
812 } | 834 } |
813 | 835 |
814 | 836 |
| 837 void MacroAssembler::Modu(Register rd, Register rs, const Operand& rt) { |
| 838 if (rt.is_reg()) { |
| 839 if (!IsMipsArchVariant(kMips32r6)) { |
| 840 divu(rs, rt.rm()); |
| 841 mfhi(rd); |
| 842 } else { |
| 843 modu(rd, rs, rt.rm()); |
| 844 } |
| 845 } else { |
| 846 // li handles the relocation. |
| 847 DCHECK(!rs.is(at)); |
| 848 li(at, rt); |
| 849 if (!IsMipsArchVariant(kMips32r6)) { |
| 850 divu(rs, at); |
| 851 mfhi(rd); |
| 852 } else { |
| 853 modu(rd, rs, at); |
| 854 } |
| 855 } |
| 856 } |
| 857 |
| 858 |
815 void MacroAssembler::Divu(Register rs, const Operand& rt) { | 859 void MacroAssembler::Divu(Register rs, const Operand& rt) { |
816 if (rt.is_reg()) { | 860 if (rt.is_reg()) { |
817 divu(rs, rt.rm()); | 861 divu(rs, rt.rm()); |
818 } else { | 862 } else { |
819 // li handles the relocation. | 863 // li handles the relocation. |
820 DCHECK(!rs.is(at)); | 864 DCHECK(!rs.is(at)); |
821 li(at, rt); | 865 li(at, rt); |
822 divu(rs, at); | 866 divu(rs, at); |
823 } | 867 } |
824 } | 868 } |
825 | 869 |
826 | 870 |
| 871 void MacroAssembler::Divu(Register res, Register rs, const Operand& rt) { |
| 872 if (rt.is_reg()) { |
| 873 if (!IsMipsArchVariant(kMips32r6)) { |
| 874 divu(rs, rt.rm()); |
| 875 mflo(res); |
| 876 } else { |
| 877 divu(res, rs, rt.rm()); |
| 878 } |
| 879 } else { |
| 880 // li handles the relocation. |
| 881 DCHECK(!rs.is(at)); |
| 882 li(at, rt); |
| 883 if (!IsMipsArchVariant(kMips32r6)) { |
| 884 divu(rs, at); |
| 885 mflo(res); |
| 886 } else { |
| 887 divu(res, rs, at); |
| 888 } |
| 889 } |
| 890 } |
| 891 |
| 892 |
827 void MacroAssembler::And(Register rd, Register rs, const Operand& rt) { | 893 void MacroAssembler::And(Register rd, Register rs, const Operand& rt) { |
828 if (rt.is_reg()) { | 894 if (rt.is_reg()) { |
829 and_(rd, rs, rt.rm()); | 895 and_(rd, rs, rt.rm()); |
830 } else { | 896 } else { |
831 if (is_uint16(rt.imm32_) && !MustUseReg(rt.rmode_)) { | 897 if (is_uint16(rt.imm32_) && !MustUseReg(rt.rmode_)) { |
832 andi(rd, rs, rt.imm32_); | 898 andi(rd, rs, rt.imm32_); |
833 } else { | 899 } else { |
834 // li handles the relocation. | 900 // li handles the relocation. |
835 DCHECK(!rs.is(at)); | 901 DCHECK(!rs.is(at)); |
836 li(at, rt); | 902 li(at, rt); |
(...skipping 1060 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1897 if (r2.is(zero_reg)) { | 1963 if (r2.is(zero_reg)) { |
1898 blez(rs, offset); | 1964 blez(rs, offset); |
1899 } else { | 1965 } else { |
1900 slt(scratch, r2, rs); | 1966 slt(scratch, r2, rs); |
1901 beq(scratch, zero_reg, offset); | 1967 beq(scratch, zero_reg, offset); |
1902 } | 1968 } |
1903 break; | 1969 break; |
1904 // Unsigned comparison. | 1970 // Unsigned comparison. |
1905 case Ugreater: | 1971 case Ugreater: |
1906 if (r2.is(zero_reg)) { | 1972 if (r2.is(zero_reg)) { |
1907 bgtz(rs, offset); | 1973 bne(rs, zero_reg, offset); |
1908 } else { | 1974 } else { |
1909 sltu(scratch, r2, rs); | 1975 sltu(scratch, r2, rs); |
1910 bne(scratch, zero_reg, offset); | 1976 bne(scratch, zero_reg, offset); |
1911 } | 1977 } |
1912 break; | 1978 break; |
1913 case Ugreater_equal: | 1979 case Ugreater_equal: |
1914 if (r2.is(zero_reg)) { | 1980 if (r2.is(zero_reg)) { |
1915 bgez(rs, offset); | 1981 b(offset); |
1916 } else { | 1982 } else { |
1917 sltu(scratch, rs, r2); | 1983 sltu(scratch, rs, r2); |
1918 beq(scratch, zero_reg, offset); | 1984 beq(scratch, zero_reg, offset); |
1919 } | 1985 } |
1920 break; | 1986 break; |
1921 case Uless: | 1987 case Uless: |
1922 if (r2.is(zero_reg)) { | 1988 if (r2.is(zero_reg)) { |
1923 // No code needs to be emitted. | 1989 // No code needs to be emitted. |
1924 return; | 1990 return; |
1925 } else { | 1991 } else { |
1926 sltu(scratch, rs, r2); | 1992 sltu(scratch, rs, r2); |
1927 bne(scratch, zero_reg, offset); | 1993 bne(scratch, zero_reg, offset); |
1928 } | 1994 } |
1929 break; | 1995 break; |
1930 case Uless_equal: | 1996 case Uless_equal: |
1931 if (r2.is(zero_reg)) { | 1997 if (r2.is(zero_reg)) { |
1932 b(offset); | 1998 beq(rs, zero_reg, offset); |
1933 } else { | 1999 } else { |
1934 sltu(scratch, r2, rs); | 2000 sltu(scratch, r2, rs); |
1935 beq(scratch, zero_reg, offset); | 2001 beq(scratch, zero_reg, offset); |
1936 } | 2002 } |
1937 break; | 2003 break; |
1938 default: | 2004 default: |
1939 UNREACHABLE(); | 2005 UNREACHABLE(); |
1940 } | 2006 } |
1941 } else { | 2007 } else { |
1942 // Be careful to always use shifted_branch_offset only just before the | 2008 // Be careful to always use shifted_branch_offset only just before the |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2004 } else { | 2070 } else { |
2005 r2 = scratch; | 2071 r2 = scratch; |
2006 li(r2, rt); | 2072 li(r2, rt); |
2007 slt(scratch, r2, rs); | 2073 slt(scratch, r2, rs); |
2008 beq(scratch, zero_reg, offset); | 2074 beq(scratch, zero_reg, offset); |
2009 } | 2075 } |
2010 break; | 2076 break; |
2011 // Unsigned comparison. | 2077 // Unsigned comparison. |
2012 case Ugreater: | 2078 case Ugreater: |
2013 if (rt.imm32_ == 0) { | 2079 if (rt.imm32_ == 0) { |
2014 bgtz(rs, offset); | 2080 bne(rs, zero_reg, offset); |
2015 } else { | 2081 } else { |
2016 r2 = scratch; | 2082 r2 = scratch; |
2017 li(r2, rt); | 2083 li(r2, rt); |
2018 sltu(scratch, r2, rs); | 2084 sltu(scratch, r2, rs); |
2019 bne(scratch, zero_reg, offset); | 2085 bne(scratch, zero_reg, offset); |
2020 } | 2086 } |
2021 break; | 2087 break; |
2022 case Ugreater_equal: | 2088 case Ugreater_equal: |
2023 if (rt.imm32_ == 0) { | 2089 if (rt.imm32_ == 0) { |
2024 bgez(rs, offset); | 2090 b(offset); |
2025 } else if (is_int16(rt.imm32_)) { | 2091 } else if (is_int16(rt.imm32_)) { |
2026 sltiu(scratch, rs, rt.imm32_); | 2092 sltiu(scratch, rs, rt.imm32_); |
2027 beq(scratch, zero_reg, offset); | 2093 beq(scratch, zero_reg, offset); |
2028 } else { | 2094 } else { |
2029 r2 = scratch; | 2095 r2 = scratch; |
2030 li(r2, rt); | 2096 li(r2, rt); |
2031 sltu(scratch, rs, r2); | 2097 sltu(scratch, rs, r2); |
2032 beq(scratch, zero_reg, offset); | 2098 beq(scratch, zero_reg, offset); |
2033 } | 2099 } |
2034 break; | 2100 break; |
2035 case Uless: | 2101 case Uless: |
2036 if (rt.imm32_ == 0) { | 2102 if (rt.imm32_ == 0) { |
2037 // No code needs to be emitted. | 2103 // No code needs to be emitted. |
2038 return; | 2104 return; |
2039 } else if (is_int16(rt.imm32_)) { | 2105 } else if (is_int16(rt.imm32_)) { |
2040 sltiu(scratch, rs, rt.imm32_); | 2106 sltiu(scratch, rs, rt.imm32_); |
2041 bne(scratch, zero_reg, offset); | 2107 bne(scratch, zero_reg, offset); |
2042 } else { | 2108 } else { |
2043 r2 = scratch; | 2109 r2 = scratch; |
2044 li(r2, rt); | 2110 li(r2, rt); |
2045 sltu(scratch, rs, r2); | 2111 sltu(scratch, rs, r2); |
2046 bne(scratch, zero_reg, offset); | 2112 bne(scratch, zero_reg, offset); |
2047 } | 2113 } |
2048 break; | 2114 break; |
2049 case Uless_equal: | 2115 case Uless_equal: |
2050 if (rt.imm32_ == 0) { | 2116 if (rt.imm32_ == 0) { |
2051 b(offset); | 2117 beq(rs, zero_reg, offset); |
2052 } else { | 2118 } else { |
2053 r2 = scratch; | 2119 r2 = scratch; |
2054 li(r2, rt); | 2120 li(r2, rt); |
2055 sltu(scratch, r2, rs); | 2121 sltu(scratch, r2, rs); |
2056 beq(scratch, zero_reg, offset); | 2122 beq(scratch, zero_reg, offset); |
2057 } | 2123 } |
2058 break; | 2124 break; |
2059 default: | 2125 default: |
2060 UNREACHABLE(); | 2126 UNREACHABLE(); |
2061 } | 2127 } |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2143 } else { | 2209 } else { |
2144 slt(scratch, r2, rs); | 2210 slt(scratch, r2, rs); |
2145 offset = shifted_branch_offset(L, false); | 2211 offset = shifted_branch_offset(L, false); |
2146 beq(scratch, zero_reg, offset); | 2212 beq(scratch, zero_reg, offset); |
2147 } | 2213 } |
2148 break; | 2214 break; |
2149 // Unsigned comparison. | 2215 // Unsigned comparison. |
2150 case Ugreater: | 2216 case Ugreater: |
2151 if (r2.is(zero_reg)) { | 2217 if (r2.is(zero_reg)) { |
2152 offset = shifted_branch_offset(L, false); | 2218 offset = shifted_branch_offset(L, false); |
2153 bgtz(rs, offset); | 2219 bne(rs, zero_reg, offset); |
2154 } else { | 2220 } else { |
2155 sltu(scratch, r2, rs); | 2221 sltu(scratch, r2, rs); |
2156 offset = shifted_branch_offset(L, false); | 2222 offset = shifted_branch_offset(L, false); |
2157 bne(scratch, zero_reg, offset); | 2223 bne(scratch, zero_reg, offset); |
2158 } | 2224 } |
2159 break; | 2225 break; |
2160 case Ugreater_equal: | 2226 case Ugreater_equal: |
2161 if (r2.is(zero_reg)) { | 2227 if (r2.is(zero_reg)) { |
2162 offset = shifted_branch_offset(L, false); | 2228 offset = shifted_branch_offset(L, false); |
2163 bgez(rs, offset); | 2229 b(offset); |
2164 } else { | 2230 } else { |
2165 sltu(scratch, rs, r2); | 2231 sltu(scratch, rs, r2); |
2166 offset = shifted_branch_offset(L, false); | 2232 offset = shifted_branch_offset(L, false); |
2167 beq(scratch, zero_reg, offset); | 2233 beq(scratch, zero_reg, offset); |
2168 } | 2234 } |
2169 break; | 2235 break; |
2170 case Uless: | 2236 case Uless: |
2171 if (r2.is(zero_reg)) { | 2237 if (r2.is(zero_reg)) { |
2172 // No code needs to be emitted. | 2238 // No code needs to be emitted. |
2173 return; | 2239 return; |
2174 } else { | 2240 } else { |
2175 sltu(scratch, rs, r2); | 2241 sltu(scratch, rs, r2); |
2176 offset = shifted_branch_offset(L, false); | 2242 offset = shifted_branch_offset(L, false); |
2177 bne(scratch, zero_reg, offset); | 2243 bne(scratch, zero_reg, offset); |
2178 } | 2244 } |
2179 break; | 2245 break; |
2180 case Uless_equal: | 2246 case Uless_equal: |
2181 if (r2.is(zero_reg)) { | 2247 if (r2.is(zero_reg)) { |
2182 offset = shifted_branch_offset(L, false); | 2248 offset = shifted_branch_offset(L, false); |
2183 b(offset); | 2249 beq(rs, zero_reg, offset); |
2184 } else { | 2250 } else { |
2185 sltu(scratch, r2, rs); | 2251 sltu(scratch, r2, rs); |
2186 offset = shifted_branch_offset(L, false); | 2252 offset = shifted_branch_offset(L, false); |
2187 beq(scratch, zero_reg, offset); | 2253 beq(scratch, zero_reg, offset); |
2188 } | 2254 } |
2189 break; | 2255 break; |
2190 default: | 2256 default: |
2191 UNREACHABLE(); | 2257 UNREACHABLE(); |
2192 } | 2258 } |
2193 } else { | 2259 } else { |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2285 r2 = scratch; | 2351 r2 = scratch; |
2286 li(r2, rt); | 2352 li(r2, rt); |
2287 sltu(scratch, r2, rs); | 2353 sltu(scratch, r2, rs); |
2288 offset = shifted_branch_offset(L, false); | 2354 offset = shifted_branch_offset(L, false); |
2289 bne(scratch, zero_reg, offset); | 2355 bne(scratch, zero_reg, offset); |
2290 } | 2356 } |
2291 break; | 2357 break; |
2292 case Ugreater_equal: | 2358 case Ugreater_equal: |
2293 if (rt.imm32_ == 0) { | 2359 if (rt.imm32_ == 0) { |
2294 offset = shifted_branch_offset(L, false); | 2360 offset = shifted_branch_offset(L, false); |
2295 bgez(rs, offset); | 2361 b(offset); |
2296 } else if (is_int16(rt.imm32_)) { | 2362 } else if (is_int16(rt.imm32_)) { |
2297 sltiu(scratch, rs, rt.imm32_); | 2363 sltiu(scratch, rs, rt.imm32_); |
2298 offset = shifted_branch_offset(L, false); | 2364 offset = shifted_branch_offset(L, false); |
2299 beq(scratch, zero_reg, offset); | 2365 beq(scratch, zero_reg, offset); |
2300 } else { | 2366 } else { |
2301 DCHECK(!scratch.is(rs)); | 2367 DCHECK(!scratch.is(rs)); |
2302 r2 = scratch; | 2368 r2 = scratch; |
2303 li(r2, rt); | 2369 li(r2, rt); |
2304 sltu(scratch, rs, r2); | 2370 sltu(scratch, rs, r2); |
2305 offset = shifted_branch_offset(L, false); | 2371 offset = shifted_branch_offset(L, false); |
(...skipping 2164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4470 | 4536 |
4471 void MacroAssembler::SmiToDoubleFPURegister(Register smi, | 4537 void MacroAssembler::SmiToDoubleFPURegister(Register smi, |
4472 FPURegister value, | 4538 FPURegister value, |
4473 Register scratch1) { | 4539 Register scratch1) { |
4474 sra(scratch1, smi, kSmiTagSize); | 4540 sra(scratch1, smi, kSmiTagSize); |
4475 mtc1(scratch1, value); | 4541 mtc1(scratch1, value); |
4476 cvt_d_w(value, value); | 4542 cvt_d_w(value, value); |
4477 } | 4543 } |
4478 | 4544 |
4479 | 4545 |
4480 void MacroAssembler::AdduAndCheckForOverflow(Register dst, | 4546 void MacroAssembler::AdduAndCheckForOverflow(Register dst, Register left, |
4481 Register left, | 4547 const Operand& right, |
| 4548 Register overflow_dst, |
| 4549 Register scratch) { |
| 4550 if (right.is_reg()) { |
| 4551 AdduAndCheckForOverflow(dst, left, right.rm(), overflow_dst, scratch); |
| 4552 } else { |
| 4553 if (dst.is(left)) { |
| 4554 mov(scratch, left); // Preserve left. |
| 4555 addiu(dst, left, right.immediate()); // Left is overwritten. |
| 4556 xor_(scratch, dst, scratch); // Original left. |
| 4557 // Load right since xori takes uint16 as immediate. |
| 4558 addiu(t9, zero_reg, right.immediate()); |
| 4559 xor_(overflow_dst, dst, t9); |
| 4560 and_(overflow_dst, overflow_dst, scratch); |
| 4561 } else { |
| 4562 addiu(dst, left, right.immediate()); |
| 4563 xor_(overflow_dst, dst, left); |
| 4564 // Load right since xori takes uint16 as immediate. |
| 4565 addiu(t9, zero_reg, right.immediate()); |
| 4566 xor_(scratch, dst, t9); |
| 4567 and_(overflow_dst, scratch, overflow_dst); |
| 4568 } |
| 4569 } |
| 4570 } |
| 4571 |
| 4572 |
| 4573 void MacroAssembler::AdduAndCheckForOverflow(Register dst, Register left, |
4482 Register right, | 4574 Register right, |
4483 Register overflow_dst, | 4575 Register overflow_dst, |
4484 Register scratch) { | 4576 Register scratch) { |
4485 DCHECK(!dst.is(overflow_dst)); | 4577 DCHECK(!dst.is(overflow_dst)); |
4486 DCHECK(!dst.is(scratch)); | 4578 DCHECK(!dst.is(scratch)); |
4487 DCHECK(!overflow_dst.is(scratch)); | 4579 DCHECK(!overflow_dst.is(scratch)); |
4488 DCHECK(!overflow_dst.is(left)); | 4580 DCHECK(!overflow_dst.is(left)); |
4489 DCHECK(!overflow_dst.is(right)); | 4581 DCHECK(!overflow_dst.is(right)); |
4490 | 4582 |
4491 if (left.is(right) && dst.is(left)) { | 4583 if (left.is(right) && dst.is(left)) { |
(...skipping 20 matching lines...) Expand all Loading... |
4512 and_(overflow_dst, overflow_dst, scratch); | 4604 and_(overflow_dst, overflow_dst, scratch); |
4513 } else { | 4605 } else { |
4514 addu(dst, left, right); | 4606 addu(dst, left, right); |
4515 xor_(overflow_dst, dst, left); | 4607 xor_(overflow_dst, dst, left); |
4516 xor_(scratch, dst, right); | 4608 xor_(scratch, dst, right); |
4517 and_(overflow_dst, scratch, overflow_dst); | 4609 and_(overflow_dst, scratch, overflow_dst); |
4518 } | 4610 } |
4519 } | 4611 } |
4520 | 4612 |
4521 | 4613 |
4522 void MacroAssembler::SubuAndCheckForOverflow(Register dst, | 4614 void MacroAssembler::SubuAndCheckForOverflow(Register dst, Register left, |
4523 Register left, | 4615 const Operand& right, |
| 4616 Register overflow_dst, |
| 4617 Register scratch) { |
| 4618 if (right.is_reg()) { |
| 4619 SubuAndCheckForOverflow(dst, left, right.rm(), overflow_dst, scratch); |
| 4620 } else { |
| 4621 if (dst.is(left)) { |
| 4622 mov(scratch, left); // Preserve left. |
| 4623 addiu(dst, left, -(right.immediate())); // Left is overwritten. |
| 4624 xor_(overflow_dst, dst, scratch); // scratch is original left. |
| 4625 // Load right since xori takes uint16 as immediate. |
| 4626 addiu(t9, zero_reg, right.immediate()); |
| 4627 xor_(scratch, scratch, t9); // scratch is original left. |
| 4628 and_(overflow_dst, scratch, overflow_dst); |
| 4629 } else { |
| 4630 addiu(dst, left, -(right.immediate())); |
| 4631 xor_(overflow_dst, dst, left); |
| 4632 // Load right since xori takes uint16 as immediate. |
| 4633 addiu(t9, zero_reg, right.immediate()); |
| 4634 xor_(scratch, left, t9); |
| 4635 and_(overflow_dst, scratch, overflow_dst); |
| 4636 } |
| 4637 } |
| 4638 } |
| 4639 |
| 4640 |
| 4641 void MacroAssembler::SubuAndCheckForOverflow(Register dst, Register left, |
4524 Register right, | 4642 Register right, |
4525 Register overflow_dst, | 4643 Register overflow_dst, |
4526 Register scratch) { | 4644 Register scratch) { |
4527 DCHECK(!dst.is(overflow_dst)); | 4645 DCHECK(!dst.is(overflow_dst)); |
4528 DCHECK(!dst.is(scratch)); | 4646 DCHECK(!dst.is(scratch)); |
4529 DCHECK(!overflow_dst.is(scratch)); | 4647 DCHECK(!overflow_dst.is(scratch)); |
4530 DCHECK(!overflow_dst.is(left)); | 4648 DCHECK(!overflow_dst.is(left)); |
4531 DCHECK(!overflow_dst.is(right)); | 4649 DCHECK(!overflow_dst.is(right)); |
4532 DCHECK(!scratch.is(left)); | 4650 DCHECK(!scratch.is(left)); |
4533 DCHECK(!scratch.is(right)); | 4651 DCHECK(!scratch.is(right)); |
(...skipping 1562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6096 } | 6214 } |
6097 if (mag.shift > 0) sra(result, result, mag.shift); | 6215 if (mag.shift > 0) sra(result, result, mag.shift); |
6098 srl(at, dividend, 31); | 6216 srl(at, dividend, 31); |
6099 Addu(result, result, Operand(at)); | 6217 Addu(result, result, Operand(at)); |
6100 } | 6218 } |
6101 | 6219 |
6102 | 6220 |
6103 } } // namespace v8::internal | 6221 } } // namespace v8::internal |
6104 | 6222 |
6105 #endif // V8_TARGET_ARCH_MIPS | 6223 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |