1014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Copyright 2014 the V8 project authors. All rights reserved. 2014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// found in the LICENSE file. 4014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 5014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/machine-type.h" 6014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/ostreams.h" 7014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 8014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochnamespace v8 { 9014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochnamespace internal { 10014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 11014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochstd::ostream& operator<<(std::ostream& os, MachineRepresentation rep) { 12f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return os << MachineReprToString(rep); 13f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} 14f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 15f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochconst char* MachineReprToString(MachineRepresentation rep) { 16014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch switch (rep) { 17014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineRepresentation::kNone: 18f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kMachNone"; 19014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineRepresentation::kBit: 20f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepBit"; 21014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineRepresentation::kWord8: 22f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepWord8"; 23014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineRepresentation::kWord16: 24f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepWord16"; 25014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineRepresentation::kWord32: 26f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepWord32"; 27014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineRepresentation::kWord64: 28f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepWord64"; 29014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineRepresentation::kFloat32: 30f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepFloat32"; 31014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineRepresentation::kFloat64: 32f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepFloat64"; 33109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch case MachineRepresentation::kSimd128: 34f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepSimd128"; 3562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch case MachineRepresentation::kSimd1x4: 3662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch return "kRepSimd1x4"; 3762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch case MachineRepresentation::kSimd1x8: 3862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch return "kRepSimd1x8"; 3962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch case MachineRepresentation::kSimd1x16: 4062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch return "kRepSimd1x16"; 41f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch case MachineRepresentation::kTaggedSigned: 42f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepTaggedSigned"; 43f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch case MachineRepresentation::kTaggedPointer: 44f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepTaggedPointer"; 45014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineRepresentation::kTagged: 46f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return "kRepTagged"; 47014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch } 48014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch UNREACHABLE(); 49f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch return nullptr; 50014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 51014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 52014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochstd::ostream& operator<<(std::ostream& os, MachineSemantic type) { 53014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch switch (type) { 54014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineSemantic::kNone: 55014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << "kMachNone"; 56014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineSemantic::kBool: 57014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << "kTypeBool"; 58014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineSemantic::kInt32: 59014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << "kTypeInt32"; 60014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineSemantic::kUint32: 61014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << "kTypeUint32"; 62014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineSemantic::kInt64: 63014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << "kTypeInt64"; 64014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineSemantic::kUint64: 65014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << "kTypeUint64"; 66014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineSemantic::kNumber: 67014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << "kTypeNumber"; 68014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch case MachineSemantic::kAny: 69014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << "kTypeAny"; 70014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch } 71014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch UNREACHABLE(); 72014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os; 73014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 74014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 75014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 76014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochstd::ostream& operator<<(std::ostream& os, MachineType type) { 77014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch if (type == MachineType::None()) { 78014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os; 79014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch } else if (type.representation() == MachineRepresentation::kNone) { 80014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << type.semantic(); 81014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch } else if (type.semantic() == MachineSemantic::kNone) { 82014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << type.representation(); 83014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch } else { 84014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os << type.representation() << "|" << type.semantic(); 85014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch } 86014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return os; 87014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 88014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 89014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // namespace internal 90014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // namespace v8 91