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

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

Issue 1046873004: MIPS: Refactor simulator and add selection instructions for r6. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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
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 2121 matching lines...) Expand 10 before | Expand all | Expand 10 after
2132 // GPR. 2132 // GPR.
2133 void Assembler::seleqz(Register rs, Register rt, Register rd) { 2133 void Assembler::seleqz(Register rs, Register rt, Register rd) {
2134 DCHECK(kArchVariant == kMips64r6); 2134 DCHECK(kArchVariant == kMips64r6);
2135 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SELEQZ_S); 2135 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SELEQZ_S);
2136 } 2136 }
2137 2137
2138 2138
2139 // FPR. 2139 // FPR.
2140 void Assembler::seleqz(SecondaryField fmt, FPURegister fd, 2140 void Assembler::seleqz(SecondaryField fmt, FPURegister fd,
2141 FPURegister ft, FPURegister fs) { 2141 FPURegister ft, FPURegister fs) {
2142 DCHECK(kArchVariant == kMips64r6); 2142 DCHECK((fmt == D) || (fmt == S));
2143 DCHECK(fmt == D); 2143 GenInstrRegister(COP1, fmt, ft, fs, fd, SELEQZ_C);
2144 DCHECK(fmt == S);
2145
2146 Instr instr = COP1 | fmt << kRsShift | ft.code() << kFtShift |
2147 fs.code() << kFsShift | fd.code() << kFdShift | SELEQZ_C;
2148 emit(instr);
2149 } 2144 }
2150 2145
2151 2146
2152 // GPR. 2147 // GPR.
2153 void Assembler::selnez(Register rs, Register rt, Register rd) { 2148 void Assembler::selnez(Register rs, Register rt, Register rd) {
2154 DCHECK(kArchVariant == kMips64r6); 2149 DCHECK(kArchVariant == kMips64r6);
2155 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SELNEZ_S); 2150 GenInstrRegister(SPECIAL, rs, rt, rd, 0, SELNEZ_S);
2156 } 2151 }
2157 2152
2158 2153
2159 // FPR. 2154 // FPR.
2160 void Assembler::selnez(SecondaryField fmt, FPURegister fd, 2155 void Assembler::selnez(SecondaryField fmt, FPURegister fd,
2161 FPURegister ft, FPURegister fs) { 2156 FPURegister ft, FPURegister fs) {
2162 DCHECK(kArchVariant == kMips64r6); 2157 DCHECK(kArchVariant == kMips64r6);
2163 DCHECK(fmt == D); 2158 DCHECK((fmt == D) || (fmt == S));
2164 DCHECK(fmt == S); 2159 GenInstrRegister(COP1, fmt, ft, fs, fd, SELNEZ_C);
2165
2166 Instr instr = COP1 | fmt << kRsShift | ft.code() << kFtShift |
2167 fs.code() << kFsShift | fd.code() << kFdShift | SELNEZ_C;
2168 emit(instr);
2169 } 2160 }
2170 2161
2171 2162
2172 // Bit twiddling. 2163 // Bit twiddling.
2173 void Assembler::clz(Register rd, Register rs) { 2164 void Assembler::clz(Register rd, Register rs) {
2174 if (kArchVariant != kMips64r6) { 2165 if (kArchVariant != kMips64r6) {
2175 // Clz instr requires same GPR number in 'rd' and 'rt' fields. 2166 // Clz instr requires same GPR number in 'rd' and 'rt' fields.
2176 GenInstrRegister(SPECIAL2, rs, rd, rd, 0, CLZ); 2167 GenInstrRegister(SPECIAL2, rs, rd, rd, 0, CLZ);
2177 } else { 2168 } else {
2178 GenInstrRegister(SPECIAL, rs, zero_reg, rd, 1, CLZ_R6); 2169 GenInstrRegister(SPECIAL, rs, zero_reg, rd, 1, CLZ_R6);
(...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after
2939 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) { 2930 void Assembler::PopulateConstantPool(ConstantPoolArray* constant_pool) {
2940 // No out-of-line constant pool support. 2931 // No out-of-line constant pool support.
2941 DCHECK(!FLAG_enable_ool_constant_pool); 2932 DCHECK(!FLAG_enable_ool_constant_pool);
2942 return; 2933 return;
2943 } 2934 }
2944 2935
2945 2936
2946 } } // namespace v8::internal 2937 } } // namespace v8::internal
2947 2938
2948 #endif // V8_TARGET_ARCH_MIPS64 2939 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698