Lines Matching refs:truncation
266 return use1.truncation().IsLessGeneralThan(use2.truncation());
291 truncation_ = Truncation::Generalize(truncation_, info.truncation());
303 Truncation truncation() const { return truncation_; }
644 VisitNode<RETYPE>(node, info->truncation(), nullptr);
650 // change the truncation of one of our inputs (see EnqueueInput<PROPAGATE> for
651 // this). If we change the truncation of an already visited node, we will add
657 info->truncation().description());
658 VisitNode<PROPAGATE>(node, info->truncation(), nullptr);
726 VisitNode<LOWER>(node, info->truncation(), lowering);
965 use.truncation().description());
1044 void VisitNoop(Node* node, Truncation truncation) {
1045 if (truncation.IsUnused()) return VisitUnused<T>(node);
1047 GetOutputInfoForPhi(node, TypeOf(node), truncation);
1048 VisitUnop<T>(node, UseInfo(representation, truncation), representation);
1159 void VisitSelect(Node* node, Truncation truncation,
1165 GetOutputInfoForPhi(node, TypeOf(node), truncation);
1176 // truncation truncation along.
1177 UseInfo input_use(output, truncation);
1184 void VisitPhi(Node* node, Truncation truncation,
1187 GetOutputInfoForPhi(node, TypeOf(node), truncation);
1201 // truncation along.
1202 UseInfo input_use(output, truncation);
1539 void VisitForCheckedInt32Mul(Node* node, Truncation truncation,
1545 !input_use.truncation().IdentifiesZeroAndMinusZero());
1553 } else if (truncation.IdentifiesZeroAndMinusZero()) {
1574 void VisitSpeculativeIntegerAdditiveOp(Node* node, Truncation truncation,
1583 if (truncation.IsUnused()) return VisitUnused<T>(node);
1590 truncation.IsUsedAsWord32()) {
1606 // signed overflow. This is incompatible with relying on a Word32 truncation
1610 truncation.IsUsedAsWord32()
1612 : (truncation.identify_zeros() == kIdentifyZeros)
1631 // If the output's truncation is identify-zeros, we can pass it
1635 IdentifyZeros left_identify_zeros = truncation.identify_zeros();
1652 if (truncation.IsUsedAsWord32() ||
1665 void VisitSpeculativeAdditiveOp(Node* node, Truncation truncation,
1670 truncation.IsUsedAsWord32())) {
1689 void VisitSpeculativeNumberModulus(Node* node, Truncation truncation,
1692 (truncation.IsUsedAsWord32() ||
1700 (truncation.IsUsedAsWord32() ||
1737 // mode of the {truncation}; and for modulus the sign of the
1741 CheckedUseInfoAsWord32FromHint(hint, truncation.identify_zeros());
1744 if (truncation.IsUsedAsWord32()) {
1749 truncation.IdentifiesZeroAndMinusZero() &&
1758 truncation.IdentifiesZeroAndMinusZero() &&
1771 (truncation.IsUsedAsWord32() ||
1780 (truncation.IsUsedAsWord32() ||
1790 // mode of the {truncation}; and for modulus the sign of the
1794 truncation.identify_zeros(), FeedbackSource());
2066 void VisitNode(Node* node, Truncation truncation,
2106 node->op()->HasProperty(Operator::kPure) && truncation.IsUnused()) {
2170 return VisitSelect<T>(node, truncation, lowering);
2172 return VisitPhi<T>(node, truncation, lowering);
2186 if (truncation.IsUsedAsWord32()) {
2190 } else if (truncation.TruncatesOddballAndBigIntToNumber()) {
2204 if (truncation.IsUsedAsBool()) {
2302 return VisitSpeculativeIntegerAdditiveOp<T>(node, truncation, lowering);
2306 return VisitSpeculativeAdditiveOp<T>(node, truncation, lowering);
2392 truncation.IsUsedAsWord32())) {
2413 (truncation.IsUsedAsWord32() &&
2435 VisitForCheckedInt32Mul<T>(node, truncation, input0_type,
2443 VisitForCheckedInt32Mul<T>(node, truncation, input0_type, input1_type,
2461 (truncation.IsUsedAsWord32() &&
2478 if (BothInputsAreUnsigned32(node) && truncation.IsUsedAsWord32()) {
2491 if (truncation.IsUsedAsWord32()) {
2528 if (truncation.IsUsedAsWord32()) {
2552 (truncation.IsUsedAsWord32() ||
2561 (truncation.IsUsedAsWord32() ||
2574 return VisitSpeculativeNumberModulus<T>(node, truncation, lowering);
2580 (truncation.IsUsedAsWord32() ||
2589 (truncation.IsUsedAsWord32() || TypeOf(node).Is(Type::Signed32()) ||
2590 (truncation.IdentifiesZeroAndMinusZero() &&
2599 // mode of the {truncation}; and for modulus the sign of the
2603 UseInfo::TruncatingFloat64(truncation.identify_zeros());
2708 !truncation.IsUsedAsWord32()) {
2744 // pass the kIdentifyZeros truncation to its input, and
2788 // promise a more specific truncation.
2789 // For NumberMax we generally propagate whether the truncation
2798 truncation.IdentifiesZeroAndMinusZero())) {
2808 truncation.IdentifiesZeroAndMinusZero())) {
2824 UseInfo::TruncatingFloat64(truncation.identify_zeros()),
2830 if (lhs_type.Is(truncation.IdentifiesZeroAndMinusZero()
2846 // promise a more specific truncation.
2847 // For NumberMin we generally propagate whether the truncation
2856 truncation.IdentifiesZeroAndMinusZero())) {
2866 truncation.IdentifiesZeroAndMinusZero())) {
2882 UseInfo::TruncatingFloat64(truncation.identify_zeros()),
2889 rhs_type.Is(truncation.IdentifiesZeroAndMinusZero()
2923 // the zero identification part of the truncation, and we turn them into
2928 UseInfo::TruncatingFloat64(truncation.identify_zeros()),
2943 VisitNoop<T>(node, truncation);
3059 // can generally pass kIdentifyZeros truncation.
3139 if (truncation.IsUnused()) return VisitUnused<T>(node);
3169 if (truncation.IsUsedAsWord64()) {
3187 if (truncation.IsUsedAsWord64()) {
3205 if (truncation.IsUsedAsWord64()) {
3319 VisitNoop<T>(node, truncation);
3336 if (SmiValuesAre32Bits() && truncation.IsUsedAsWord32()) {
3380 if (truncation.IsUnused()) return VisitUnused<T>(node);
3392 if (truncation.IsUnused()) return VisitUnused<T>(node);
3398 if (truncation.IsUnused()) return VisitUnused<T>(node);
3435 if (truncation.IsUnused()) return VisitUnused<T>(node);
3442 if (truncation.IsUnused()) return VisitUnused<T>(node);
3591 } else if (truncation.IsUsedAsWord32()) {
3605 } else if (truncation.TruncatesOddballAndBigIntToNumber()) {
3852 // If {mode} is allow-return-hole _and_ the {truncation}
3854 // the {truncation} and completely wipe the {node}.
3855 if (truncation.IsUnused()) return VisitUnused<T>(node);
3856 if (truncation.TruncatesOddballAndBigIntToNumber()) {
3884 truncation.IsUsedAsWord32()) {
3885 // Propagate the Word32 truncation.
3890 truncation.TruncatesOddballAndBigIntToNumber()) {
3891 // Propagate the Float64 truncation.
3900 // TODO(turbofan): Add a (Tagged) truncation that identifies hole
3955 if (truncation.IsUnused()) return VisitUnused<T>(node);
3961 GetOutputInfoForPhi(node, type, truncation);
3965 UseInfo use(representation, truncation);
4220 TRACE(" initial #%i: %s\n", node->id(), info->truncation().description());
4223 TRACE(" queue #%i?: %s\n", node->id(), info->truncation().description());
4230 TRACE(" added: %s\n", info->truncation().description());
4232 TRACE(" inqueue: %s\n", info->truncation().description());