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

Side by Side Diff: src/compiler/mips/code-generator-mips.cc

Issue 1779713009: Implement optional turbofan UnalignedLoad and UnalignedStore operators (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix review remarks Created 4 years, 9 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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 "src/ast/scopes.h" 5 #include "src/ast/scopes.h"
6 #include "src/compiler/code-generator.h" 6 #include "src/compiler/code-generator.h"
7 #include "src/compiler/code-generator-impl.h" 7 #include "src/compiler/code-generator-impl.h"
8 #include "src/compiler/gap-resolver.h" 8 #include "src/compiler/gap-resolver.h"
9 #include "src/compiler/node-matchers.h" 9 #include "src/compiler/node-matchers.h"
10 #include "src/compiler/osr.h" 10 #include "src/compiler/osr.h"
(...skipping 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1159 break; 1159 break;
1160 case kMipsLb: 1160 case kMipsLb:
1161 __ lb(i.OutputRegister(), i.MemoryOperand()); 1161 __ lb(i.OutputRegister(), i.MemoryOperand());
1162 break; 1162 break;
1163 case kMipsSb: 1163 case kMipsSb:
1164 __ sb(i.InputRegister(2), i.MemoryOperand()); 1164 __ sb(i.InputRegister(2), i.MemoryOperand());
1165 break; 1165 break;
1166 case kMipsLhu: 1166 case kMipsLhu:
1167 __ lhu(i.OutputRegister(), i.MemoryOperand()); 1167 __ lhu(i.OutputRegister(), i.MemoryOperand());
1168 break; 1168 break;
1169 case kMipsUlhu:
1170 __ Ulhu(i.OutputRegister(), i.MemoryOperand());
1171 break;
1169 case kMipsLh: 1172 case kMipsLh:
1170 __ lh(i.OutputRegister(), i.MemoryOperand()); 1173 __ lh(i.OutputRegister(), i.MemoryOperand());
1171 break; 1174 break;
1175 case kMipsUlh:
1176 __ Ulh(i.OutputRegister(), i.MemoryOperand());
1177 break;
1172 case kMipsSh: 1178 case kMipsSh:
1173 __ sh(i.InputRegister(2), i.MemoryOperand()); 1179 __ sh(i.InputRegister(2), i.MemoryOperand());
1174 break; 1180 break;
1181 case kMipsUsh:
1182 __ Ush(i.InputRegister(2), i.MemoryOperand(), kScratchReg);
1183 break;
1175 case kMipsLw: 1184 case kMipsLw:
1176 __ lw(i.OutputRegister(), i.MemoryOperand()); 1185 __ lw(i.OutputRegister(), i.MemoryOperand());
1177 break; 1186 break;
1187 case kMipsUlw:
1188 __ Ulw(i.OutputRegister(), i.MemoryOperand());
1189 break;
1178 case kMipsSw: 1190 case kMipsSw:
1179 __ sw(i.InputRegister(2), i.MemoryOperand()); 1191 __ sw(i.InputRegister(2), i.MemoryOperand());
1180 break; 1192 break;
1193 case kMipsUsw:
1194 __ Usw(i.InputRegister(2), i.MemoryOperand());
1195 break;
1181 case kMipsLwc1: { 1196 case kMipsLwc1: {
1182 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand()); 1197 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand());
1183 break; 1198 break;
1184 } 1199 }
1200 case kMipsUlwc1: {
1201 __ lwc1(i.OutputSingleRegister(), i.MemoryOperand());
1202 break;
1203 }
1185 case kMipsSwc1: { 1204 case kMipsSwc1: {
1186 size_t index = 0; 1205 size_t index = 0;
1187 MemOperand operand = i.MemoryOperand(&index); 1206 MemOperand operand = i.MemoryOperand(&index);
1188 __ swc1(i.InputSingleRegister(index), operand); 1207 __ swc1(i.InputSingleRegister(index), operand);
1189 break; 1208 break;
1190 } 1209 }
1210 case kMipsUswc1: {
1211 size_t index = 0;
1212 MemOperand operand = i.MemoryOperand(&index);
1213 __ Uswc1(i.InputSingleRegister(index), operand, kScratchReg);
1214 break;
1215 }
1191 case kMipsLdc1: 1216 case kMipsLdc1:
1192 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand()); 1217 __ ldc1(i.OutputDoubleRegister(), i.MemoryOperand());
1193 break; 1218 break;
1219 case kMipsUldc1:
1220 __ Uldc1(i.OutputDoubleRegister(), i.MemoryOperand(), kScratchReg);
1221 break;
1194 case kMipsSdc1: 1222 case kMipsSdc1:
1195 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand()); 1223 __ sdc1(i.InputDoubleRegister(2), i.MemoryOperand());
1196 break; 1224 break;
1225 case kMipsUsdc1:
1226 __ Usdc1(i.InputDoubleRegister(2), i.MemoryOperand(), kScratchReg);
1227 break;
1197 case kMipsPush: 1228 case kMipsPush:
1198 if (instr->InputAt(0)->IsDoubleRegister()) { 1229 if (instr->InputAt(0)->IsDoubleRegister()) {
1199 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize)); 1230 __ sdc1(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize));
1200 __ Subu(sp, sp, Operand(kDoubleSize)); 1231 __ Subu(sp, sp, Operand(kDoubleSize));
1201 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize); 1232 frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize);
1202 } else { 1233 } else {
1203 __ Push(i.InputRegister(0)); 1234 __ Push(i.InputRegister(0));
1204 frame_access_state()->IncreaseSPDelta(1); 1235 frame_access_state()->IncreaseSPDelta(1);
1205 } 1236 }
1206 break; 1237 break;
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after
1865 padding_size -= v8::internal::Assembler::kInstrSize; 1896 padding_size -= v8::internal::Assembler::kInstrSize;
1866 } 1897 }
1867 } 1898 }
1868 } 1899 }
1869 1900
1870 #undef __ 1901 #undef __
1871 1902
1872 } // namespace compiler 1903 } // namespace compiler
1873 } // namespace internal 1904 } // namespace internal
1874 } // namespace v8 1905 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698