Line data Source code
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 799953 : std::ostream& operator<<(std::ostream& os, MachineRepresentation rep) {
12 1263685 : return os << MachineReprToString(rep);
13 : }
14 :
15 1263685 : const char* MachineReprToString(MachineRepresentation rep) {
16 1263685 : switch (rep) {
17 : case MachineRepresentation::kNone:
18 : return "kMachNone";
19 : case MachineRepresentation::kBit:
20 67 : return "kRepBit";
21 : case MachineRepresentation::kWord8:
22 138415 : return "kRepWord8";
23 : case MachineRepresentation::kWord16:
24 138415 : return "kRepWord16";
25 : case MachineRepresentation::kWord32:
26 392080 : return "kRepWord32";
27 : case MachineRepresentation::kWord64:
28 363883 : return "kRepWord64";
29 : case MachineRepresentation::kFloat32:
30 82051 : return "kRepFloat32";
31 : case MachineRepresentation::kFloat64:
32 76927 : return "kRepFloat64";
33 : case MachineRepresentation::kSimd128:
34 0 : return "kRepSimd128";
35 : case MachineRepresentation::kSimd1x4:
36 0 : return "kRepSimd1x4";
37 : case MachineRepresentation::kSimd1x8:
38 0 : return "kRepSimd1x8";
39 : case MachineRepresentation::kSimd1x16:
40 0 : return "kRepSimd1x16";
41 : case MachineRepresentation::kTaggedSigned:
42 0 : return "kRepTaggedSigned";
43 : case MachineRepresentation::kTaggedPointer:
44 0 : return "kRepTaggedPointer";
45 : case MachineRepresentation::kTagged:
46 71847 : return "kRepTagged";
47 : }
48 0 : UNREACHABLE();
49 : return nullptr;
50 : }
51 :
52 438112 : std::ostream& operator<<(std::ostream& os, MachineSemantic type) {
53 438112 : switch (type) {
54 : case MachineSemantic::kNone:
55 0 : return os << "kMachNone";
56 : case MachineSemantic::kBool:
57 0 : return os << "kTypeBool";
58 : case MachineSemantic::kInt32:
59 146042 : return os << "kTypeInt32";
60 : case MachineSemantic::kUint32:
61 143472 : return os << "kTypeUint32";
62 : case MachineSemantic::kInt64:
63 30744 : return os << "kTypeInt64";
64 : case MachineSemantic::kUint64:
65 30744 : return os << "kTypeUint64";
66 : case MachineSemantic::kNumber:
67 56364 : return os << "kTypeNumber";
68 : case MachineSemantic::kAny:
69 30746 : return os << "kTypeAny";
70 : }
71 0 : UNREACHABLE();
72 : return os;
73 : }
74 :
75 :
76 463732 : std::ostream& operator<<(std::ostream& os, MachineType type) {
77 463732 : if (type == MachineType::None()) {
78 : return os;
79 463732 : } else if (type.representation() == MachineRepresentation::kNone) {
80 0 : return os << type.semantic();
81 463732 : } else if (type.semantic() == MachineSemantic::kNone) {
82 25620 : return os << type.representation();
83 : } else {
84 438112 : return os << type.representation() << "|" << type.semantic();
85 : }
86 : return os;
87 : }
88 :
89 : } // namespace internal
90 : } // namespace v8
|