Chromium Code Reviews| Index: src/compiler/machine-operator.h |
| diff --git a/src/compiler/machine-operator.h b/src/compiler/machine-operator.h |
| index 6ab2ee49c1170991fba1597ae2cca1665376f171..f75472beb6490c8bcd5a5bc382904a78c33ac29f 100644 |
| --- a/src/compiler/machine-operator.h |
| +++ b/src/compiler/machine-operator.h |
| @@ -70,6 +70,15 @@ std::ostream& operator<<(std::ostream&, StoreRepresentation); |
| StoreRepresentation const& StoreRepresentationOf(Operator const*); |
| +typedef MachineType UnalignedLoadRepresentation; |
| + |
| +UnalignedLoadRepresentation UnalignedLoadRepresentationOf(Operator const*); |
| + |
| +// An UnalignedStore needs a MachineType. |
| +typedef MachineRepresentation UnalignedStoreRepresentation; |
| + |
| +UnalignedStoreRepresentation const& UnalignedStoreRepresentationOf( |
| + Operator const*); |
| // A CheckedLoad needs a MachineType. |
| typedef MachineType CheckedLoadRepresentation; |
| @@ -121,13 +130,16 @@ class MachineOperatorBuilder final : public ZoneObject { |
| kWord64ReverseBits = 1u << 21, |
| kFloat32Neg = 1u << 22, |
| kFloat64Neg = 1u << 23, |
| - kAllOptionalOps = |
| - kFloat32Max | kFloat32Min | kFloat64Max | kFloat64Min | |
| - kFloat32RoundDown | kFloat64RoundDown | kFloat32RoundUp | |
| - kFloat64RoundUp | kFloat32RoundTruncate | kFloat64RoundTruncate | |
| - kFloat64RoundTiesAway | kFloat32RoundTiesEven | kFloat64RoundTiesEven | |
| - kWord32Ctz | kWord64Ctz | kWord32Popcnt | kWord64Popcnt | |
| - kWord32ReverseBits | kWord64ReverseBits | kFloat32Neg | kFloat64Neg |
| + kUnalignedLoad = 1u << 24, |
|
titzer
2016/07/11 08:40:00
Isn't this superfluous with the AlignmentRequireme
ivica.bogosavljevic
2016/07/11 09:34:43
Acknowledged.
|
| + kUnalignedStore = 1u << 25, |
| + kAllOptionalOps = kFloat32Max | kFloat32Min | kFloat64Max | kFloat64Min | |
| + kFloat32RoundDown | kFloat64RoundDown | kFloat32RoundUp | |
| + kFloat64RoundUp | kFloat32RoundTruncate | |
| + kFloat64RoundTruncate | kFloat64RoundTiesAway | |
| + kFloat32RoundTiesEven | kFloat64RoundTiesEven | |
| + kWord32Ctz | kWord64Ctz | kWord32Popcnt | kWord64Popcnt | |
| + kWord32ReverseBits | kWord64ReverseBits | kFloat32Neg | |
| + kFloat64Neg | kUnalignedLoad | kUnalignedStore |
| }; |
| typedef base::Flags<Flag, unsigned> Flags; |
| @@ -601,6 +613,12 @@ class MachineOperatorBuilder final : public ZoneObject { |
| // store [base + index], value |
| const Operator* Store(StoreRepresentation rep); |
| + // unaligned load [base + index] |
| + const OptionalOperator UnalignedLoad(UnalignedLoadRepresentation rep); |
| + |
| + // unaligned store [base + index], value |
| + const OptionalOperator UnalignedStore(UnalignedStoreRepresentation rep); |
| + |
| const Operator* StackSlot(MachineRepresentation rep); |
| // Access to the machine stack. |