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

Side by Side Diff: src/compiler/x64/instruction-selector-x64.cc

Issue 2700813002: [V8] Implement SIMD Boolean vector types to allow mask registers. (Closed)
Patch Set: Remove stray DCHECK. Created 3 years, 10 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 <algorithm> 5 #include <algorithm>
6 6
7 #include "src/base/adapters.h" 7 #include "src/base/adapters.h"
8 #include "src/compiler/instruction-selector-impl.h" 8 #include "src/compiler/instruction-selector-impl.h"
9 #include "src/compiler/node-matchers.h" 9 #include "src/compiler/node-matchers.h"
10 #include "src/compiler/node-properties.h" 10 #include "src/compiler/node-properties.h"
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 case MachineRepresentation::kWord32: 213 case MachineRepresentation::kWord32:
214 opcode = kX64Movl; 214 opcode = kX64Movl;
215 break; 215 break;
216 case MachineRepresentation::kTaggedSigned: // Fall through. 216 case MachineRepresentation::kTaggedSigned: // Fall through.
217 case MachineRepresentation::kTaggedPointer: // Fall through. 217 case MachineRepresentation::kTaggedPointer: // Fall through.
218 case MachineRepresentation::kTagged: // Fall through. 218 case MachineRepresentation::kTagged: // Fall through.
219 case MachineRepresentation::kWord64: 219 case MachineRepresentation::kWord64:
220 opcode = kX64Movq; 220 opcode = kX64Movq;
221 break; 221 break;
222 case MachineRepresentation::kSimd128: // Fall through. 222 case MachineRepresentation::kSimd128: // Fall through.
223 case MachineRepresentation::kSimdBool4: // Fall through.
224 case MachineRepresentation::kSimdBool8: // Fall through.
225 case MachineRepresentation::kSimdBool16: // Fall through.
223 case MachineRepresentation::kNone: 226 case MachineRepresentation::kNone:
224 UNREACHABLE(); 227 UNREACHABLE();
225 break; 228 break;
226 } 229 }
227 return opcode; 230 return opcode;
228 } 231 }
229 232
230 ArchOpcode GetStoreOpcode(StoreRepresentation store_rep) { 233 ArchOpcode GetStoreOpcode(StoreRepresentation store_rep) {
231 switch (store_rep.representation()) { 234 switch (store_rep.representation()) {
232 case MachineRepresentation::kFloat32: 235 case MachineRepresentation::kFloat32:
(...skipping 12 matching lines...) Expand all
245 case MachineRepresentation::kWord32: 248 case MachineRepresentation::kWord32:
246 return kX64Movl; 249 return kX64Movl;
247 break; 250 break;
248 case MachineRepresentation::kTaggedSigned: // Fall through. 251 case MachineRepresentation::kTaggedSigned: // Fall through.
249 case MachineRepresentation::kTaggedPointer: // Fall through. 252 case MachineRepresentation::kTaggedPointer: // Fall through.
250 case MachineRepresentation::kTagged: // Fall through. 253 case MachineRepresentation::kTagged: // Fall through.
251 case MachineRepresentation::kWord64: 254 case MachineRepresentation::kWord64:
252 return kX64Movq; 255 return kX64Movq;
253 break; 256 break;
254 case MachineRepresentation::kSimd128: // Fall through. 257 case MachineRepresentation::kSimd128: // Fall through.
258 case MachineRepresentation::kSimdBool4: // Fall through.
259 case MachineRepresentation::kSimdBool8: // Fall through.
260 case MachineRepresentation::kSimdBool16: // Fall through.
255 case MachineRepresentation::kNone: 261 case MachineRepresentation::kNone:
256 UNREACHABLE(); 262 UNREACHABLE();
257 return kArchNop; 263 return kArchNop;
258 } 264 }
259 UNREACHABLE(); 265 UNREACHABLE();
260 return kArchNop; 266 return kArchNop;
261 } 267 }
262 268
263 } // namespace 269 } // namespace
264 270
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 opcode = kCheckedLoadWord64; 398 opcode = kCheckedLoadWord64;
393 break; 399 break;
394 case MachineRepresentation::kFloat32: 400 case MachineRepresentation::kFloat32:
395 opcode = kCheckedLoadFloat32; 401 opcode = kCheckedLoadFloat32;
396 break; 402 break;
397 case MachineRepresentation::kFloat64: 403 case MachineRepresentation::kFloat64:
398 opcode = kCheckedLoadFloat64; 404 opcode = kCheckedLoadFloat64;
399 break; 405 break;
400 case MachineRepresentation::kBit: // Fall through. 406 case MachineRepresentation::kBit: // Fall through.
401 case MachineRepresentation::kSimd128: // Fall through. 407 case MachineRepresentation::kSimd128: // Fall through.
408 case MachineRepresentation::kSimdBool4: // Fall through.
409 case MachineRepresentation::kSimdBool8: // Fall through.
410 case MachineRepresentation::kSimdBool16: // Fall through.
402 case MachineRepresentation::kTaggedSigned: // Fall through. 411 case MachineRepresentation::kTaggedSigned: // Fall through.
403 case MachineRepresentation::kTaggedPointer: // Fall through. 412 case MachineRepresentation::kTaggedPointer: // Fall through.
404 case MachineRepresentation::kTagged: // Fall through. 413 case MachineRepresentation::kTagged: // Fall through.
405 case MachineRepresentation::kNone: 414 case MachineRepresentation::kNone:
406 UNREACHABLE(); 415 UNREACHABLE();
407 return; 416 return;
408 } 417 }
409 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { 418 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) {
410 Int32Matcher mlength(length); 419 Int32Matcher mlength(length);
411 Int32BinopMatcher moffset(offset); 420 Int32BinopMatcher moffset(offset);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 opcode = kCheckedStoreWord64; 456 opcode = kCheckedStoreWord64;
448 break; 457 break;
449 case MachineRepresentation::kFloat32: 458 case MachineRepresentation::kFloat32:
450 opcode = kCheckedStoreFloat32; 459 opcode = kCheckedStoreFloat32;
451 break; 460 break;
452 case MachineRepresentation::kFloat64: 461 case MachineRepresentation::kFloat64:
453 opcode = kCheckedStoreFloat64; 462 opcode = kCheckedStoreFloat64;
454 break; 463 break;
455 case MachineRepresentation::kBit: // Fall through. 464 case MachineRepresentation::kBit: // Fall through.
456 case MachineRepresentation::kSimd128: // Fall through. 465 case MachineRepresentation::kSimd128: // Fall through.
466 case MachineRepresentation::kSimdBool4: // Fall through.
467 case MachineRepresentation::kSimdBool8: // Fall through.
468 case MachineRepresentation::kSimdBool16: // Fall through.
457 case MachineRepresentation::kTaggedSigned: // Fall through. 469 case MachineRepresentation::kTaggedSigned: // Fall through.
458 case MachineRepresentation::kTaggedPointer: // Fall through. 470 case MachineRepresentation::kTaggedPointer: // Fall through.
459 case MachineRepresentation::kTagged: // Fall through. 471 case MachineRepresentation::kTagged: // Fall through.
460 case MachineRepresentation::kNone: 472 case MachineRepresentation::kNone:
461 UNREACHABLE(); 473 UNREACHABLE();
462 return; 474 return;
463 } 475 }
464 InstructionOperand value_operand = 476 InstructionOperand value_operand =
465 g.CanBeImmediate(value) ? g.UseImmediate(value) : g.UseRegister(value); 477 g.CanBeImmediate(value) ? g.UseImmediate(value) : g.UseRegister(value);
466 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) { 478 if (offset->opcode() == IrOpcode::kInt32Add && CanCover(node, offset)) {
(...skipping 1848 matching lines...) Expand 10 before | Expand all | Expand 10 after
2315 // static 2327 // static
2316 MachineOperatorBuilder::AlignmentRequirements 2328 MachineOperatorBuilder::AlignmentRequirements
2317 InstructionSelector::AlignmentRequirements() { 2329 InstructionSelector::AlignmentRequirements() {
2318 return MachineOperatorBuilder::AlignmentRequirements:: 2330 return MachineOperatorBuilder::AlignmentRequirements::
2319 FullUnalignedAccessSupport(); 2331 FullUnalignedAccessSupport();
2320 } 2332 }
2321 2333
2322 } // namespace compiler 2334 } // namespace compiler
2323 } // namespace internal 2335 } // namespace internal
2324 } // namespace v8 2336 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698