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

Side by Side Diff: src/compiler/machine-operator.cc

Issue 2700813002: [V8] Implement SIMD Boolean vector types to allow mask registers. (Closed)
Patch Set: Rebase. 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
« no previous file with comments | « src/compiler/machine-operator.h ('k') | src/compiler/mips/instruction-selector-mips.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/compiler/machine-operator.h" 5 #include "src/compiler/machine-operator.h"
6 6
7 #include "src/base/lazy-instance.h" 7 #include "src/base/lazy-instance.h"
8 #include "src/compiler/opcodes.h" 8 #include "src/compiler/opcodes.h"
9 #include "src/compiler/operator.h" 9 #include "src/compiler/operator.h"
10 10
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 V(Int32x4GreaterThan, Operator::kNoProperties, 2, 0, 1) \ 256 V(Int32x4GreaterThan, Operator::kNoProperties, 2, 0, 1) \
257 V(Int32x4GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 257 V(Int32x4GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
258 V(Int32x4FromFloat32x4, Operator::kNoProperties, 1, 0, 1) \ 258 V(Int32x4FromFloat32x4, Operator::kNoProperties, 1, 0, 1) \
259 V(Uint32x4Min, Operator::kCommutative, 2, 0, 1) \ 259 V(Uint32x4Min, Operator::kCommutative, 2, 0, 1) \
260 V(Uint32x4Max, Operator::kCommutative, 2, 0, 1) \ 260 V(Uint32x4Max, Operator::kCommutative, 2, 0, 1) \
261 V(Uint32x4LessThan, Operator::kNoProperties, 2, 0, 1) \ 261 V(Uint32x4LessThan, Operator::kNoProperties, 2, 0, 1) \
262 V(Uint32x4LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 262 V(Uint32x4LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
263 V(Uint32x4GreaterThan, Operator::kNoProperties, 2, 0, 1) \ 263 V(Uint32x4GreaterThan, Operator::kNoProperties, 2, 0, 1) \
264 V(Uint32x4GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 264 V(Uint32x4GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
265 V(Uint32x4FromFloat32x4, Operator::kNoProperties, 1, 0, 1) \ 265 V(Uint32x4FromFloat32x4, Operator::kNoProperties, 1, 0, 1) \
266 V(CreateBool32x4, Operator::kNoProperties, 4, 0, 1) \
267 V(Bool32x4And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 266 V(Bool32x4And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
268 V(Bool32x4Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 267 V(Bool32x4Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
269 V(Bool32x4Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 268 V(Bool32x4Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
270 V(Bool32x4Not, Operator::kNoProperties, 1, 0, 1) \ 269 V(Bool32x4Not, Operator::kNoProperties, 1, 0, 1) \
271 V(Bool32x4AnyTrue, Operator::kNoProperties, 1, 0, 1) \ 270 V(Bool32x4AnyTrue, Operator::kNoProperties, 1, 0, 1) \
272 V(Bool32x4AllTrue, Operator::kNoProperties, 1, 0, 1) \ 271 V(Bool32x4AllTrue, Operator::kNoProperties, 1, 0, 1) \
273 V(Bool32x4Swizzle, Operator::kNoProperties, 5, 0, 1) \
274 V(Bool32x4Shuffle, Operator::kNoProperties, 6, 0, 1) \
275 V(Bool32x4Equal, Operator::kCommutative, 2, 0, 1) \
276 V(Bool32x4NotEqual, Operator::kCommutative, 2, 0, 1) \
277 V(CreateInt16x8, Operator::kNoProperties, 8, 0, 1) \ 272 V(CreateInt16x8, Operator::kNoProperties, 8, 0, 1) \
278 V(Int16x8Neg, Operator::kNoProperties, 1, 0, 1) \ 273 V(Int16x8Neg, Operator::kNoProperties, 1, 0, 1) \
279 V(Int16x8Add, Operator::kCommutative, 2, 0, 1) \ 274 V(Int16x8Add, Operator::kCommutative, 2, 0, 1) \
280 V(Int16x8AddSaturate, Operator::kCommutative, 2, 0, 1) \ 275 V(Int16x8AddSaturate, Operator::kCommutative, 2, 0, 1) \
281 V(Int16x8Sub, Operator::kNoProperties, 2, 0, 1) \ 276 V(Int16x8Sub, Operator::kNoProperties, 2, 0, 1) \
282 V(Int16x8SubSaturate, Operator::kNoProperties, 2, 0, 1) \ 277 V(Int16x8SubSaturate, Operator::kNoProperties, 2, 0, 1) \
283 V(Int16x8Mul, Operator::kCommutative, 2, 0, 1) \ 278 V(Int16x8Mul, Operator::kCommutative, 2, 0, 1) \
284 V(Int16x8Min, Operator::kCommutative, 2, 0, 1) \ 279 V(Int16x8Min, Operator::kCommutative, 2, 0, 1) \
285 V(Int16x8Max, Operator::kCommutative, 2, 0, 1) \ 280 V(Int16x8Max, Operator::kCommutative, 2, 0, 1) \
286 V(Int16x8Equal, Operator::kCommutative, 2, 0, 1) \ 281 V(Int16x8Equal, Operator::kCommutative, 2, 0, 1) \
287 V(Int16x8NotEqual, Operator::kCommutative, 2, 0, 1) \ 282 V(Int16x8NotEqual, Operator::kCommutative, 2, 0, 1) \
288 V(Int16x8LessThan, Operator::kNoProperties, 2, 0, 1) \ 283 V(Int16x8LessThan, Operator::kNoProperties, 2, 0, 1) \
289 V(Int16x8LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 284 V(Int16x8LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
290 V(Int16x8GreaterThan, Operator::kNoProperties, 2, 0, 1) \ 285 V(Int16x8GreaterThan, Operator::kNoProperties, 2, 0, 1) \
291 V(Int16x8GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 286 V(Int16x8GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
292 V(Uint16x8AddSaturate, Operator::kCommutative, 2, 0, 1) \ 287 V(Uint16x8AddSaturate, Operator::kCommutative, 2, 0, 1) \
293 V(Uint16x8SubSaturate, Operator::kNoProperties, 2, 0, 1) \ 288 V(Uint16x8SubSaturate, Operator::kNoProperties, 2, 0, 1) \
294 V(Uint16x8Min, Operator::kCommutative, 2, 0, 1) \ 289 V(Uint16x8Min, Operator::kCommutative, 2, 0, 1) \
295 V(Uint16x8Max, Operator::kCommutative, 2, 0, 1) \ 290 V(Uint16x8Max, Operator::kCommutative, 2, 0, 1) \
296 V(Uint16x8LessThan, Operator::kNoProperties, 2, 0, 1) \ 291 V(Uint16x8LessThan, Operator::kNoProperties, 2, 0, 1) \
297 V(Uint16x8LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 292 V(Uint16x8LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
298 V(Uint16x8GreaterThan, Operator::kNoProperties, 2, 0, 1) \ 293 V(Uint16x8GreaterThan, Operator::kNoProperties, 2, 0, 1) \
299 V(Uint16x8GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 294 V(Uint16x8GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
300 V(CreateBool16x8, Operator::kNoProperties, 8, 0, 1) \
301 V(Bool16x8And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 295 V(Bool16x8And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
302 V(Bool16x8Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 296 V(Bool16x8Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
303 V(Bool16x8Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 297 V(Bool16x8Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
304 V(Bool16x8Not, Operator::kNoProperties, 1, 0, 1) \ 298 V(Bool16x8Not, Operator::kNoProperties, 1, 0, 1) \
305 V(Bool16x8AnyTrue, Operator::kNoProperties, 1, 0, 1) \ 299 V(Bool16x8AnyTrue, Operator::kNoProperties, 1, 0, 1) \
306 V(Bool16x8AllTrue, Operator::kNoProperties, 1, 0, 1) \ 300 V(Bool16x8AllTrue, Operator::kNoProperties, 1, 0, 1) \
307 V(Bool16x8Swizzle, Operator::kNoProperties, 9, 0, 1) \
308 V(Bool16x8Shuffle, Operator::kNoProperties, 10, 0, 1) \
309 V(Bool16x8Equal, Operator::kCommutative, 2, 0, 1) \
310 V(Bool16x8NotEqual, Operator::kCommutative, 2, 0, 1) \
311 V(CreateInt8x16, Operator::kNoProperties, 16, 0, 1) \ 301 V(CreateInt8x16, Operator::kNoProperties, 16, 0, 1) \
312 V(Int8x16Neg, Operator::kNoProperties, 1, 0, 1) \ 302 V(Int8x16Neg, Operator::kNoProperties, 1, 0, 1) \
313 V(Int8x16Add, Operator::kCommutative, 2, 0, 1) \ 303 V(Int8x16Add, Operator::kCommutative, 2, 0, 1) \
314 V(Int8x16AddSaturate, Operator::kCommutative, 2, 0, 1) \ 304 V(Int8x16AddSaturate, Operator::kCommutative, 2, 0, 1) \
315 V(Int8x16Sub, Operator::kNoProperties, 2, 0, 1) \ 305 V(Int8x16Sub, Operator::kNoProperties, 2, 0, 1) \
316 V(Int8x16SubSaturate, Operator::kNoProperties, 2, 0, 1) \ 306 V(Int8x16SubSaturate, Operator::kNoProperties, 2, 0, 1) \
317 V(Int8x16Mul, Operator::kCommutative, 2, 0, 1) \ 307 V(Int8x16Mul, Operator::kCommutative, 2, 0, 1) \
318 V(Int8x16Min, Operator::kCommutative, 2, 0, 1) \ 308 V(Int8x16Min, Operator::kCommutative, 2, 0, 1) \
319 V(Int8x16Max, Operator::kCommutative, 2, 0, 1) \ 309 V(Int8x16Max, Operator::kCommutative, 2, 0, 1) \
320 V(Int8x16Equal, Operator::kCommutative, 2, 0, 1) \ 310 V(Int8x16Equal, Operator::kCommutative, 2, 0, 1) \
321 V(Int8x16NotEqual, Operator::kCommutative, 2, 0, 1) \ 311 V(Int8x16NotEqual, Operator::kCommutative, 2, 0, 1) \
322 V(Int8x16LessThan, Operator::kNoProperties, 2, 0, 1) \ 312 V(Int8x16LessThan, Operator::kNoProperties, 2, 0, 1) \
323 V(Int8x16LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 313 V(Int8x16LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
324 V(Int8x16GreaterThan, Operator::kNoProperties, 2, 0, 1) \ 314 V(Int8x16GreaterThan, Operator::kNoProperties, 2, 0, 1) \
325 V(Int8x16GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 315 V(Int8x16GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
326 V(Uint8x16AddSaturate, Operator::kCommutative, 2, 0, 1) \ 316 V(Uint8x16AddSaturate, Operator::kCommutative, 2, 0, 1) \
327 V(Uint8x16SubSaturate, Operator::kNoProperties, 2, 0, 1) \ 317 V(Uint8x16SubSaturate, Operator::kNoProperties, 2, 0, 1) \
328 V(Uint8x16Min, Operator::kCommutative, 2, 0, 1) \ 318 V(Uint8x16Min, Operator::kCommutative, 2, 0, 1) \
329 V(Uint8x16Max, Operator::kCommutative, 2, 0, 1) \ 319 V(Uint8x16Max, Operator::kCommutative, 2, 0, 1) \
330 V(Uint8x16LessThan, Operator::kNoProperties, 2, 0, 1) \ 320 V(Uint8x16LessThan, Operator::kNoProperties, 2, 0, 1) \
331 V(Uint8x16LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 321 V(Uint8x16LessThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
332 V(Uint8x16GreaterThan, Operator::kNoProperties, 2, 0, 1) \ 322 V(Uint8x16GreaterThan, Operator::kNoProperties, 2, 0, 1) \
333 V(Uint8x16GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \ 323 V(Uint8x16GreaterThanOrEqual, Operator::kNoProperties, 2, 0, 1) \
334 V(CreateBool8x16, Operator::kNoProperties, 16, 0, 1) \
335 V(Bool8x16And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 324 V(Bool8x16And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
336 V(Bool8x16Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 325 V(Bool8x16Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
337 V(Bool8x16Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 326 V(Bool8x16Xor, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
338 V(Bool8x16Not, Operator::kNoProperties, 1, 0, 1) \ 327 V(Bool8x16Not, Operator::kNoProperties, 1, 0, 1) \
339 V(Bool8x16AnyTrue, Operator::kNoProperties, 1, 0, 1) \ 328 V(Bool8x16AnyTrue, Operator::kNoProperties, 1, 0, 1) \
340 V(Bool8x16AllTrue, Operator::kNoProperties, 1, 0, 1) \ 329 V(Bool8x16AllTrue, Operator::kNoProperties, 1, 0, 1) \
341 V(Bool8x16Swizzle, Operator::kNoProperties, 17, 0, 1) \
342 V(Bool8x16Shuffle, Operator::kNoProperties, 18, 0, 1) \
343 V(Bool8x16Equal, Operator::kCommutative, 2, 0, 1) \
344 V(Bool8x16NotEqual, Operator::kCommutative, 2, 0, 1) \
345 V(Simd128Load, Operator::kNoProperties, 2, 0, 1) \ 330 V(Simd128Load, Operator::kNoProperties, 2, 0, 1) \
346 V(Simd128Load1, Operator::kNoProperties, 2, 0, 1) \ 331 V(Simd128Load1, Operator::kNoProperties, 2, 0, 1) \
347 V(Simd128Load2, Operator::kNoProperties, 2, 0, 1) \ 332 V(Simd128Load2, Operator::kNoProperties, 2, 0, 1) \
348 V(Simd128Load3, Operator::kNoProperties, 2, 0, 1) \ 333 V(Simd128Load3, Operator::kNoProperties, 2, 0, 1) \
349 V(Simd128Store, Operator::kNoProperties, 3, 0, 1) \ 334 V(Simd128Store, Operator::kNoProperties, 3, 0, 1) \
350 V(Simd128Store1, Operator::kNoProperties, 3, 0, 1) \ 335 V(Simd128Store1, Operator::kNoProperties, 3, 0, 1) \
351 V(Simd128Store2, Operator::kNoProperties, 3, 0, 1) \ 336 V(Simd128Store2, Operator::kNoProperties, 3, 0, 1) \
352 V(Simd128Store3, Operator::kNoProperties, 3, 0, 1) \ 337 V(Simd128Store3, Operator::kNoProperties, 3, 0, 1) \
353 V(Simd128And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 338 V(Simd128And, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
354 V(Simd128Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \ 339 V(Simd128Or, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 V(Uint32) 407 V(Uint32)
423 408
424 #define ATOMIC_REPRESENTATION_LIST(V) \ 409 #define ATOMIC_REPRESENTATION_LIST(V) \
425 V(kWord8) \ 410 V(kWord8) \
426 V(kWord16) \ 411 V(kWord16) \
427 V(kWord32) 412 V(kWord32)
428 413
429 #define SIMD_LANE_OP_LIST(V) \ 414 #define SIMD_LANE_OP_LIST(V) \
430 V(Float32x4, 4) \ 415 V(Float32x4, 4) \
431 V(Int32x4, 4) \ 416 V(Int32x4, 4) \
432 V(Bool32x4, 4) \
433 V(Int16x8, 8) \ 417 V(Int16x8, 8) \
434 V(Bool16x8, 8) \ 418 V(Int8x16, 16)
435 V(Int8x16, 16) \
436 V(Bool8x16, 16)
437 419
438 #define SIMD_FORMAT_LIST(V) \ 420 #define SIMD_FORMAT_LIST(V) \
439 V(32x4, 32) \ 421 V(32x4, 32) \
440 V(16x8, 16) \ 422 V(16x8, 16) \
441 V(8x16, 8) 423 V(8x16, 8)
442 424
443 #define STACK_SLOT_CACHED_SIZES_LIST(V) V(4) V(8) V(16) 425 #define STACK_SLOT_CACHED_SIZES_LIST(V) V(4) V(8) V(16)
444 426
445 struct StackSlotOperator : public Operator1<int> { 427 struct StackSlotOperator : public Operator1<int> {
446 explicit StackSlotOperator(int size) 428 explicit StackSlotOperator(int size)
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 648
667 const Operator* MachineOperatorBuilder::UnalignedStore( 649 const Operator* MachineOperatorBuilder::UnalignedStore(
668 UnalignedStoreRepresentation rep) { 650 UnalignedStoreRepresentation rep) {
669 switch (rep) { 651 switch (rep) {
670 #define STORE(kRep) \ 652 #define STORE(kRep) \
671 case MachineRepresentation::kRep: \ 653 case MachineRepresentation::kRep: \
672 return &cache_.kUnalignedStore##kRep; 654 return &cache_.kUnalignedStore##kRep;
673 MACHINE_REPRESENTATION_LIST(STORE) 655 MACHINE_REPRESENTATION_LIST(STORE)
674 #undef STORE 656 #undef STORE
675 case MachineRepresentation::kBit: 657 case MachineRepresentation::kBit:
658 case MachineRepresentation::kSimd1x4:
659 case MachineRepresentation::kSimd1x8:
660 case MachineRepresentation::kSimd1x16:
676 case MachineRepresentation::kNone: 661 case MachineRepresentation::kNone:
677 break; 662 break;
678 } 663 }
679 UNREACHABLE(); 664 UNREACHABLE();
680 return nullptr; 665 return nullptr;
681 } 666 }
682 667
683 #define PURE(Name, properties, value_input_count, control_input_count, \ 668 #define PURE(Name, properties, value_input_count, control_input_count, \
684 output_count) \ 669 output_count) \
685 const Operator* MachineOperatorBuilder::Name() { return &cache_.k##Name; } 670 const Operator* MachineOperatorBuilder::Name() { return &cache_.k##Name; }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 return &cache_.k##Store##kRep##MapWriteBarrier; \ 734 return &cache_.k##Store##kRep##MapWriteBarrier; \
750 case kPointerWriteBarrier: \ 735 case kPointerWriteBarrier: \
751 return &cache_.k##Store##kRep##PointerWriteBarrier; \ 736 return &cache_.k##Store##kRep##PointerWriteBarrier; \
752 case kFullWriteBarrier: \ 737 case kFullWriteBarrier: \
753 return &cache_.k##Store##kRep##FullWriteBarrier; \ 738 return &cache_.k##Store##kRep##FullWriteBarrier; \
754 } \ 739 } \
755 break; 740 break;
756 MACHINE_REPRESENTATION_LIST(STORE) 741 MACHINE_REPRESENTATION_LIST(STORE)
757 #undef STORE 742 #undef STORE
758 case MachineRepresentation::kBit: 743 case MachineRepresentation::kBit:
744 case MachineRepresentation::kSimd1x4:
745 case MachineRepresentation::kSimd1x8:
746 case MachineRepresentation::kSimd1x16:
759 case MachineRepresentation::kNone: 747 case MachineRepresentation::kNone:
760 break; 748 break;
761 } 749 }
762 UNREACHABLE(); 750 UNREACHABLE();
763 return nullptr; 751 return nullptr;
764 } 752 }
765 753
766 const Operator* MachineOperatorBuilder::ProtectedStore( 754 const Operator* MachineOperatorBuilder::ProtectedStore(
767 MachineRepresentation rep) { 755 MachineRepresentation rep) {
768 switch (rep) { 756 switch (rep) {
769 #define STORE(kRep) \ 757 #define STORE(kRep) \
770 case MachineRepresentation::kRep: \ 758 case MachineRepresentation::kRep: \
771 return &cache_.kProtectedStore##kRep; \ 759 return &cache_.kProtectedStore##kRep; \
772 break; 760 break;
773 MACHINE_REPRESENTATION_LIST(STORE) 761 MACHINE_REPRESENTATION_LIST(STORE)
774 #undef STORE 762 #undef STORE
775 case MachineRepresentation::kBit: 763 case MachineRepresentation::kBit:
764 case MachineRepresentation::kSimd1x4:
765 case MachineRepresentation::kSimd1x8:
766 case MachineRepresentation::kSimd1x16:
776 case MachineRepresentation::kNone: 767 case MachineRepresentation::kNone:
777 break; 768 break;
778 } 769 }
779 UNREACHABLE(); 770 UNREACHABLE();
780 return nullptr; 771 return nullptr;
781 } 772 }
782 773
783 const Operator* MachineOperatorBuilder::UnsafePointerAdd() { 774 const Operator* MachineOperatorBuilder::UnsafePointerAdd() {
784 return &cache_.kUnsafePointerAdd; 775 return &cache_.kUnsafePointerAdd;
785 } 776 }
(...skipping 21 matching lines...) Expand all
807 798
808 const Operator* MachineOperatorBuilder::CheckedStore( 799 const Operator* MachineOperatorBuilder::CheckedStore(
809 CheckedStoreRepresentation rep) { 800 CheckedStoreRepresentation rep) {
810 switch (rep) { 801 switch (rep) {
811 #define STORE(kRep) \ 802 #define STORE(kRep) \
812 case MachineRepresentation::kRep: \ 803 case MachineRepresentation::kRep: \
813 return &cache_.kCheckedStore##kRep; 804 return &cache_.kCheckedStore##kRep;
814 MACHINE_REPRESENTATION_LIST(STORE) 805 MACHINE_REPRESENTATION_LIST(STORE)
815 #undef STORE 806 #undef STORE
816 case MachineRepresentation::kBit: 807 case MachineRepresentation::kBit:
808 case MachineRepresentation::kSimd1x4:
809 case MachineRepresentation::kSimd1x8:
810 case MachineRepresentation::kSimd1x16:
817 case MachineRepresentation::kNone: 811 case MachineRepresentation::kNone:
818 break; 812 break;
819 } 813 }
820 UNREACHABLE(); 814 UNREACHABLE();
821 return nullptr; 815 return nullptr;
822 } 816 }
823 817
824 const Operator* MachineOperatorBuilder::AtomicLoad(LoadRepresentation rep) { 818 const Operator* MachineOperatorBuilder::AtomicLoad(LoadRepresentation rep) {
825 #define LOAD(Type) \ 819 #define LOAD(Type) \
826 if (rep == MachineType::Type()) { \ 820 if (rep == MachineType::Type()) { \
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
893 return new (zone_) \ 887 return new (zone_) \
894 Operator1<uint32_t>(IrOpcode::kSimd##format##Swizzle, Operator::kPure, \ 888 Operator1<uint32_t>(IrOpcode::kSimd##format##Swizzle, Operator::kPure, \
895 "Swizzle", 2, 0, 0, 1, 0, 0, swizzle); \ 889 "Swizzle", 2, 0, 0, 1, 0, 0, swizzle); \
896 } 890 }
897 SIMD_FORMAT_LIST(SIMD_PERMUTE_OPS) 891 SIMD_FORMAT_LIST(SIMD_PERMUTE_OPS)
898 #undef SIMD_PERMUTE_OPS 892 #undef SIMD_PERMUTE_OPS
899 893
900 } // namespace compiler 894 } // namespace compiler
901 } // namespace internal 895 } // namespace internal
902 } // namespace v8 896 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/machine-operator.h ('k') | src/compiler/mips/instruction-selector-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698