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 2187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2198 Instr instr = PREF | (rs.rm().code() << kRsShift) | (hint << kRtShift) | 2198 Instr instr = PREF | (rs.rm().code() << kRsShift) | (hint << kRtShift) |
2199 | (rs.offset_); | 2199 | (rs.offset_); |
2200 emit(instr); | 2200 emit(instr); |
2201 } | 2201 } |
2202 | 2202 |
2203 | 2203 |
2204 // --------Coprocessor-instructions---------------- | 2204 // --------Coprocessor-instructions---------------- |
2205 | 2205 |
2206 // Load, store, move. | 2206 // Load, store, move. |
2207 void Assembler::lwc1(FPURegister fd, const MemOperand& src) { | 2207 void Assembler::lwc1(FPURegister fd, const MemOperand& src) { |
2208 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_); | 2208 if (is_int16(src.offset_)) { |
| 2209 GenInstrImmediate(LWC1, src.rm(), fd, src.offset_); |
| 2210 } else { // Offset > 16 bits, use multiple instructions to load. |
| 2211 LoadRegPlusOffsetToAt(src); |
| 2212 GenInstrImmediate(LWC1, at, fd, 0); |
| 2213 } |
2209 } | 2214 } |
2210 | 2215 |
2211 | 2216 |
2212 void Assembler::ldc1(FPURegister fd, const MemOperand& src) { | 2217 void Assembler::ldc1(FPURegister fd, const MemOperand& src) { |
2213 GenInstrImmediate(LDC1, src.rm(), fd, src.offset_); | 2218 if (is_int16(src.offset_)) { |
| 2219 GenInstrImmediate(LDC1, src.rm(), fd, src.offset_); |
| 2220 } else { // Offset > 16 bits, use multiple instructions to load. |
| 2221 LoadRegPlusOffsetToAt(src); |
| 2222 GenInstrImmediate(LDC1, at, fd, 0); |
| 2223 } |
2214 } | 2224 } |
2215 | 2225 |
2216 | 2226 |
2217 void Assembler::swc1(FPURegister fd, const MemOperand& src) { | 2227 void Assembler::swc1(FPURegister fd, const MemOperand& src) { |
2218 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_); | 2228 if (is_int16(src.offset_)) { |
| 2229 GenInstrImmediate(SWC1, src.rm(), fd, src.offset_); |
| 2230 } else { // Offset > 16 bits, use multiple instructions to load. |
| 2231 LoadRegPlusOffsetToAt(src); |
| 2232 GenInstrImmediate(SWC1, at, fd, 0); |
| 2233 } |
2219 } | 2234 } |
2220 | 2235 |
2221 | 2236 |
2222 void Assembler::sdc1(FPURegister fd, const MemOperand& src) { | 2237 void Assembler::sdc1(FPURegister fd, const MemOperand& src) { |
2223 GenInstrImmediate(SDC1, src.rm(), fd, src.offset_); | 2238 if (is_int16(src.offset_)) { |
| 2239 GenInstrImmediate(SDC1, src.rm(), fd, src.offset_); |
| 2240 } else { // Offset > 16 bits, use multiple instructions to load. |
| 2241 LoadRegPlusOffsetToAt(src); |
| 2242 GenInstrImmediate(SDC1, at, fd, 0); |
| 2243 } |
2224 } | 2244 } |
2225 | 2245 |
2226 | 2246 |
2227 void Assembler::mtc1(Register rt, FPURegister fs) { | 2247 void Assembler::mtc1(Register rt, FPURegister fs) { |
2228 GenInstrRegister(COP1, MTC1, rt, fs, f0); | 2248 GenInstrRegister(COP1, MTC1, rt, fs, f0); |
2229 } | 2249 } |
2230 | 2250 |
2231 | 2251 |
2232 void Assembler::mthc1(Register rt, FPURegister fs) { | 2252 void Assembler::mthc1(Register rt, FPURegister fs) { |
2233 GenInstrRegister(COP1, MTHC1, rt, fs, f0); | 2253 GenInstrRegister(COP1, MTHC1, rt, fs, f0); |
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2899 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) { | 2919 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) { |
2900 // No out-of-line constant pool support. | 2920 // No out-of-line constant pool support. |
2901 DCHECK(!FLAG_enable_ool_constant_pool); | 2921 DCHECK(!FLAG_enable_ool_constant_pool); |
2902 return; | 2922 return; |
2903 } | 2923 } |
2904 | 2924 |
2905 | 2925 |
2906 } } // namespace v8::internal | 2926 } } // namespace v8::internal |
2907 | 2927 |
2908 #endif // V8_TARGET_ARCH_MIPS64 | 2928 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |