Lines Matching refs:UseInfo
62 // The {UseInfo} class is used to describe a use of an input of a node.
74 class UseInfo {
76 UseInfo(MachineRepresentation preferred, Truncation truncation)
78 static UseInfo TruncatingWord32() {
79 return UseInfo(MachineRepresentation::kWord32, Truncation::Word32());
81 static UseInfo TruncatingWord64() {
82 return UseInfo(MachineRepresentation::kWord64, Truncation::Word64());
84 static UseInfo Bool() {
85 return UseInfo(MachineRepresentation::kBit, Truncation::Bool());
87 static UseInfo Float32() {
88 return UseInfo(MachineRepresentation::kFloat32, Truncation::Float32());
90 static UseInfo Float64() {
91 return UseInfo(MachineRepresentation::kFloat64, Truncation::Float64());
93 static UseInfo PointerInt() {
96 static UseInfo AnyTagged() {
97 return UseInfo(MachineRepresentation::kTagged, Truncation::Any());
101 static UseInfo Any() {
102 return UseInfo(MachineRepresentation::kNone, Truncation::Any());
104 static UseInfo None() {
105 return UseInfo(MachineRepresentation::kNone, Truncation::None());
110 static UseInfo Float64TruncatingToWord32() {
111 return UseInfo(MachineRepresentation::kFloat64, Truncation::Word32());
113 static UseInfo Word64TruncatingToWord32() {
114 return UseInfo(MachineRepresentation::kWord64, Truncation::Word32());
116 static UseInfo AnyTruncatingToBool() {
117 return UseInfo(MachineRepresentation::kNone, Truncation::Bool());
129 UseInfo TruncatingUseInfoFromRepresentation(MachineRepresentation rep) {
132 return UseInfo::AnyTagged();
134 return UseInfo::Float64();
136 return UseInfo::Float32();
138 return UseInfo::TruncatingWord64();
142 return UseInfo::TruncatingWord32();
144 return UseInfo::Bool();
149 return UseInfo::None();
153 UseInfo UseInfoForBasePointer(const FieldAccess& access) {
154 return access.tag() != 0 ? UseInfo::AnyTagged() : UseInfo::PointerInt();
158 UseInfo UseInfoForBasePointer(const ElementAccess& access) {
159 return access.tag() != 0 ? UseInfo::AnyTagged() : UseInfo::PointerInt();
214 void SetAndCheckInput(Node* node, int index, UseInfo use_info) {
216 input_use_infos_.resize(node->InputCount(), UseInfo::None());
225 ZoneVector<UseInfo> input_use_infos_;
227 static bool IsUseLessGeneral(UseInfo use1, UseInfo use2) {
310 bool AddUse(UseInfo info) {
411 UseInfo use_info = UseInfo::None()) {
538 void ConvertInput(Node* node, int index, UseInfo use) {
561 void ProcessInput(Node* node, int index, UseInfo use) {
591 ProcessInput(node, i, UseInfo::AnyTagged());
600 void VisitBinop(Node* node, UseInfo left_use, UseInfo right_use,
612 void VisitBinop(Node* node, UseInfo input_use, NodeOutputInfo output) {
617 void VisitUnop(Node* node, UseInfo input_use, NodeOutputInfo output) {
631 VisitBinop(node, UseInfo::Float64(), NodeOutputInfo::Float64());
634 VisitBinop(node, UseInfo::TruncatingWord32(), NodeOutputInfo::Int32());
637 VisitBinop(node, UseInfo::TruncatingWord32(),
641 VisitBinop(node, UseInfo::TruncatingWord32(), NodeOutputInfo::Uint32());
644 VisitBinop(node, UseInfo::TruncatingWord64(), NodeOutputInfo::Int64());
647 VisitBinop(node, UseInfo::TruncatingWord64(), NodeOutputInfo::Uint64());
650 VisitBinop(node, UseInfo::Float64(), NodeOutputInfo::Bool());
653 VisitBinop(node, UseInfo::TruncatingWord32(), NodeOutputInfo::Bool());
656 VisitBinop(node, UseInfo::TruncatingWord32(), NodeOutputInfo::Bool());
659 VisitBinop(node, UseInfo::TruncatingWord64(), NodeOutputInfo::Bool());
662 VisitBinop(node, UseInfo::TruncatingWord64(), NodeOutputInfo::Bool());
710 ProcessInput(node, 0, UseInfo::Bool());
725 UseInfo input_use(output.representation(), truncation);
747 UseInfo input_use(output.representation(), truncation);
749 ProcessInput(node, i, i < values ? input_use : UseInfo::None());
761 ProcessInput(node, i, UseInfo::None());
766 ProcessInput(node, i, UseInfo::None());
792 EnqueueInput(node, i, UseInfo::Any());
842 ProcessInput(node, 0, UseInfo::None());
862 ProcessInput(node, 0, UseInfo::Bool());
866 ProcessInput(node, 0, UseInfo::TruncatingWord32());
907 ProcessInput(node, 0, UseInfo::AnyTruncatingToBool());
925 ProcessInput(node, 0, UseInfo::AnyTruncatingToBool());
1055 VisitBinop(node, UseInfo::TruncatingWord32(),
1056 UseInfo::TruncatingWord32(), NodeOutputInfo::Int32());
1064 VisitBinop(node, UseInfo::TruncatingWord32(),
1065 UseInfo::TruncatingWord32(), NodeOutputInfo::Int32());
1073 VisitBinop(node, UseInfo::TruncatingWord32(),
1074 UseInfo::TruncatingWord32(), NodeOutputInfo::Uint32());
1082 VisitUnop(node, UseInfo::TruncatingWord32(), NodeOutputInfo::Int32());
1088 VisitUnop(node, UseInfo::TruncatingWord32(), NodeOutputInfo::Uint32());
1093 VisitUnop(node, UseInfo::Float64(), NodeOutputInfo::Bool());
1108 VisitUnop(node, UseInfo::AnyTagged(), NodeOutputInfo::NumberTagged());
1125 VisitBinop(node, UseInfo::AnyTagged(), NodeOutputInfo::Bool());
1132 VisitBinop(node, UseInfo::AnyTagged(), NodeOutputInfo::Bool());
1137 VisitBinop(node, UseInfo::AnyTagged(), NodeOutputInfo::Bool());
1142 VisitBinop(node, UseInfo::AnyTagged(), NodeOutputInfo::Bool());
1147 ProcessInput(node, 0, UseInfo::AnyTagged());
1170 ProcessInput(node, 0, UseInfo::PointerInt()); // buffer
1171 ProcessInput(node, 1, UseInfo::TruncatingWord32()); // offset
1172 ProcessInput(node, 2, UseInfo::TruncatingWord32()); // length
1207 ProcessInput(node, 0, UseInfo::PointerInt()); // buffer
1208 ProcessInput(node, 1, UseInfo::TruncatingWord32()); // offset
1209 ProcessInput(node, 2, UseInfo::TruncatingWord32()); // length
1221 ProcessInput(node, 1, UseInfo::TruncatingWord32()); // index
1229 ProcessInput(node, 1, UseInfo::TruncatingWord32()); // index
1238 ProcessInput(node, 0, UseInfo::AnyTagged());
1244 ProcessInput(node, 0, UseInfo::AnyTagged());
1257 ProcessInput(node, 0, UseInfo::AnyTagged()); // tagged pointer
1258 ProcessInput(node, 1, UseInfo::PointerInt()); // index
1267 ProcessInput(node, 0, UseInfo::AnyTagged()); // tagged pointer
1268 UseInfo::PointerInt()); // index
1277 return VisitBinop(node, UseInfo::TruncatingWord32(),
1287 return VisitBinop(node, UseInfo::TruncatingWord32(),
1290 return VisitBinop(node, UseInfo::TruncatingWord32(),
1294 return VisitUnop(node, UseInfo::TruncatingWord32(),
1339 return VisitBinop(node, UseInfo::TruncatingWord64(),
1342 return VisitBinop(node, UseInfo::TruncatingWord64(),
1347 node, UseInfo::TruncatingWord32(),
1351 node, UseInfo::TruncatingWord32(),
1354 return VisitUnop(node, UseInfo::Float64(), NodeOutputInfo::Float32());
1356 return VisitUnop(node, UseInfo::Float64(), NodeOutputInfo::Int32());
1359 return VisitUnop(node, UseInfo::Word64TruncatingToWord32(),
1363 return VisitUnop(node, UseInfo::Float32(), NodeOutputInfo::Float64());
1366 node, UseInfo::TruncatingWord32(),
1369 return VisitUnop(node, UseInfo::TruncatingWord32(),
1373 return VisitUnop(node, UseInfo::Float64TruncatingToWord32(),
1376 return VisitUnop(node, UseInfo::Float64TruncatingToWord32(),
1391 return VisitUnop(node, UseInfo::Float64(), NodeOutputInfo::Float64());
1398 return VisitUnop(node, UseInfo::Float64(), NodeOutputInfo::Int32());
1401 return VisitBinop(node, UseInfo::Float64(), UseInfo::TruncatingWord32(),
1461 void PrintUseInfo(UseInfo info) {