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

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

Issue 2122853002: Implement UnaligedLoad and UnaligedStore turbofan operators. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add UnalingedLoad and UnalignedStore tests Created 4 years, 5 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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 #ifndef V8_COMPILER_MACHINE_OPERATOR_H_ 5 #ifndef V8_COMPILER_MACHINE_OPERATOR_H_
6 #define V8_COMPILER_MACHINE_OPERATOR_H_ 6 #define V8_COMPILER_MACHINE_OPERATOR_H_
7 7
8 #include "src/base/flags.h" 8 #include "src/base/flags.h"
9 #include "src/machine-type.h" 9 #include "src/machine-type.h"
10 10
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 bool operator==(StoreRepresentation, StoreRepresentation); 64 bool operator==(StoreRepresentation, StoreRepresentation);
65 bool operator!=(StoreRepresentation, StoreRepresentation); 65 bool operator!=(StoreRepresentation, StoreRepresentation);
66 66
67 size_t hash_value(StoreRepresentation); 67 size_t hash_value(StoreRepresentation);
68 68
69 std::ostream& operator<<(std::ostream&, StoreRepresentation); 69 std::ostream& operator<<(std::ostream&, StoreRepresentation);
70 70
71 StoreRepresentation const& StoreRepresentationOf(Operator const*); 71 StoreRepresentation const& StoreRepresentationOf(Operator const*);
72 72
73 typedef MachineType UnalignedLoadRepresentation;
74
75 UnalignedLoadRepresentation UnalignedLoadRepresentationOf(Operator const*);
76
77 // An UnalignedStore needs a MachineType.
78 typedef MachineRepresentation UnalignedStoreRepresentation;
79
80 UnalignedStoreRepresentation const& UnalignedStoreRepresentationOf(
81 Operator const*);
73 82
74 // A CheckedLoad needs a MachineType. 83 // A CheckedLoad needs a MachineType.
75 typedef MachineType CheckedLoadRepresentation; 84 typedef MachineType CheckedLoadRepresentation;
76 85
77 CheckedLoadRepresentation CheckedLoadRepresentationOf(Operator const*); 86 CheckedLoadRepresentation CheckedLoadRepresentationOf(Operator const*);
78 87
79 88
80 // A CheckedStore needs a MachineType. 89 // A CheckedStore needs a MachineType.
81 typedef MachineRepresentation CheckedStoreRepresentation; 90 typedef MachineRepresentation CheckedStoreRepresentation;
82 91
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 const Operator* Simd128Or(); 603 const Operator* Simd128Or();
595 const Operator* Simd128Xor(); 604 const Operator* Simd128Xor();
596 const Operator* Simd128Not(); 605 const Operator* Simd128Not();
597 606
598 // load [base + index] 607 // load [base + index]
599 const Operator* Load(LoadRepresentation rep); 608 const Operator* Load(LoadRepresentation rep);
600 609
601 // store [base + index], value 610 // store [base + index], value
602 const Operator* Store(StoreRepresentation rep); 611 const Operator* Store(StoreRepresentation rep);
603 612
613 // unaligned load [base + index]
614 const Operator* UnalignedLoad(UnalignedLoadRepresentation rep);
615
616 // unaligned store [base + index], value
617 const Operator* UnalignedStore(UnalignedStoreRepresentation rep);
618
604 const Operator* StackSlot(MachineRepresentation rep); 619 const Operator* StackSlot(MachineRepresentation rep);
605 620
606 // Access to the machine stack. 621 // Access to the machine stack.
607 const Operator* LoadStackPointer(); 622 const Operator* LoadStackPointer();
608 const Operator* LoadFramePointer(); 623 const Operator* LoadFramePointer();
609 const Operator* LoadParentFramePointer(); 624 const Operator* LoadParentFramePointer();
610 625
611 // checked-load heap, index, length 626 // checked-load heap, index, length
612 const Operator* CheckedLoad(CheckedLoadRepresentation); 627 const Operator* CheckedLoad(CheckedLoadRepresentation);
613 // checked-store heap, index, length, value 628 // checked-store heap, index, length, value
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 }; 691 };
677 692
678 693
679 DEFINE_OPERATORS_FOR_FLAGS(MachineOperatorBuilder::Flags) 694 DEFINE_OPERATORS_FOR_FLAGS(MachineOperatorBuilder::Flags)
680 695
681 } // namespace compiler 696 } // namespace compiler
682 } // namespace internal 697 } // namespace internal
683 } // namespace v8 698 } // namespace v8
684 699
685 #endif // V8_COMPILER_MACHINE_OPERATOR_H_ 700 #endif // V8_COMPILER_MACHINE_OPERATOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698