Home | History | Annotate | Download | only in src
      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
      3 // found in the LICENSE file.
      4 
      5 #include "src/machine-type.h"
      6 #include "src/ostreams.h"
      7 
      8 namespace v8 {
      9 namespace internal {
     10 
     11 std::ostream& operator<<(std::ostream& os, MachineRepresentation rep) {
     12   switch (rep) {
     13     case MachineRepresentation::kNone:
     14       return os << "kMachNone";
     15     case MachineRepresentation::kBit:
     16       return os << "kRepBit";
     17     case MachineRepresentation::kWord8:
     18       return os << "kRepWord8";
     19     case MachineRepresentation::kWord16:
     20       return os << "kRepWord16";
     21     case MachineRepresentation::kWord32:
     22       return os << "kRepWord32";
     23     case MachineRepresentation::kWord64:
     24       return os << "kRepWord64";
     25     case MachineRepresentation::kFloat32:
     26       return os << "kRepFloat32";
     27     case MachineRepresentation::kFloat64:
     28       return os << "kRepFloat64";
     29     case MachineRepresentation::kSimd128:
     30       return os << "kRepSimd128";
     31     case MachineRepresentation::kTagged:
     32       return os << "kRepTagged";
     33   }
     34   UNREACHABLE();
     35   return os;
     36 }
     37 
     38 
     39 std::ostream& operator<<(std::ostream& os, MachineSemantic type) {
     40   switch (type) {
     41     case MachineSemantic::kNone:
     42       return os << "kMachNone";
     43     case MachineSemantic::kBool:
     44       return os << "kTypeBool";
     45     case MachineSemantic::kInt32:
     46       return os << "kTypeInt32";
     47     case MachineSemantic::kUint32:
     48       return os << "kTypeUint32";
     49     case MachineSemantic::kInt64:
     50       return os << "kTypeInt64";
     51     case MachineSemantic::kUint64:
     52       return os << "kTypeUint64";
     53     case MachineSemantic::kNumber:
     54       return os << "kTypeNumber";
     55     case MachineSemantic::kAny:
     56       return os << "kTypeAny";
     57   }
     58   UNREACHABLE();
     59   return os;
     60 }
     61 
     62 
     63 std::ostream& operator<<(std::ostream& os, MachineType type) {
     64   if (type == MachineType::None()) {
     65     return os;
     66   } else if (type.representation() == MachineRepresentation::kNone) {
     67     return os << type.semantic();
     68   } else if (type.semantic() == MachineSemantic::kNone) {
     69     return os << type.representation();
     70   } else {
     71     return os << type.representation() << "|" << type.semantic();
     72   }
     73   return os;
     74 }
     75 
     76 }  // namespace internal
     77 }  // namespace v8
     78