Home | History | Annotate | Download | only in optimizing

Lines Matching refs:is_min

229   *min_val = SimplifyMin(GetVal(info, trip, in_body, /* is_min */ true));
230 *max_val = SimplifyMax(GetVal(info, trip, in_body, /* is_min */ false), chase_hint);
235 *min_val = SimplifyMin(GetVal(info, trip, in_body, /* is_min */ true));
441 Value min_val = GetVal(info, nullptr, /* in_body */ true, /* is_min */ true);
442 Value max_val = GetVal(info, nullptr, /* in_body */ true, /* is_min */ false);
541 bool is_min) const {
553 if (!is_min && stride_value == 1) {
564 return GetVal(&cancelled_trip, trip, in_body, is_min);
566 } else if (is_min && stride_value == -1) {
579 return SubValue(Value(0), GetVal(&cancelled_trip, trip, in_body, !is_min));
586 return AddValue(GetMul(info->op_a, trip, trip, in_body, is_min),
587 GetVal(info->op_b, trip, in_body, is_min));
593 bool is_min) const {
602 Value c = GetVal(info->op_b, trip, in_body, is_min);
603 if (is_min) {
606 Value m = GetVal(trip, trip, in_body, is_min);
619 bool is_min) const {
629 const bool is_min_a = a >= 0 ? is_min : !is_min;
631 Value b = GetVal(info->op_b, trip, in_body, is_min);
641 bool is_min) const {
645 if (is_min) {
664 GetFetch(instruction->InputAt(1), trip, in_body, is_min));
666 return AddValue(GetFetch(instruction->InputAt(0), trip, in_body, is_min),
672 return is_min ? Value(0) : Value(std::numeric_limits<int32_t>::max());
674 return GetFetch(instruction->InputAt(0)->AsNewArray()->GetLength(), trip, in_body, is_min);
681 return GetFetch(instruction->InputAt(0), trip, in_body, is_min);
698 return GetVal(next_info, next_trip, next_in_body, is_min);
707 bool is_min) const {
714 return AddValue(GetVal(info->op_a, trip, in_body, is_min),
715 GetVal(info->op_b, trip, in_body, is_min));
717 return SubValue(GetVal(info->op_a, trip, in_body, is_min),
718 GetVal(info->op_b, trip, in_body, !is_min));
721 GetVal(info->op_b, trip, in_body, !is_min));
723 return GetMul(info->op_a, info->op_b, trip, in_body, is_min);
725 return GetDiv(info->op_a, info->op_b, trip, in_body, is_min);
731 return GetFetch(info->fetch, trip, in_body, is_min);
734 if (!in_body && !is_min) { // one extra!
735 return GetVal(info->op_a, trip, in_body, is_min);
740 if (is_min) {
743 return SubValue(GetVal(info->op_a, trip, in_body, is_min), Value(1));
751 return CorrectForType(GetLinear(info, trip, in_body, is_min), info->type);
753 return GetPolynomial(info, trip, in_body, is_min);
755 return GetGeometric(info, trip, in_body, is_min);
758 return MergeVal(GetVal(info->op_a, trip, in_body, is_min),
759 GetVal(info->op_b, trip, in_body, is_min), is_min);
769 bool is_min) const {
773 is_min);
775 return MulRangeAndConstant(value, info1, trip, in_body, is_min);
778 Value v1_min = GetVal(info1, trip, in_body, /* is_min */ true);
779 Value v1_max = GetVal(info1, trip, in_body, /* is_min */ false);
780 Value v2_min = GetVal(info2, trip, in_body, /* is_min */ true);
781 Value v2_max = GetVal(info2, trip, in_body, /* is_min */ false);
785 return is_min ? MulValue(v1_min, v2_min) : MulValue(v1_max, v2_max);
787 return is_min ? MulValue(v1_max, v2_min) : MulValue(v1_min, v2_max);
793 return is_min ? MulValue(v1_min, v2_max) : MulValue(v1_max, v2_min);
795 return is_min ? MulValue(v1_max, v2_max) : MulValue(v1_min, v2_min);
805 bool is_min) const {
809 return DivRangeAndConstant(value, info1, trip, in_body, is_min);
812 Value v1_min = GetVal(info1, trip, in_body, /* is_min */ true);
813 Value v1_max = GetVal(info1, trip, in_body, /* is_min */ false);
814 Value v2_min = GetVal(info2, trip, in_body, /* is_min */ true);
815 Value v2_max = GetVal(info2, trip, in_body, /* is_min */ false);
819 return is_min ? DivValue(v1_min, v2_max) : DivValue(v1_max, v2_min);
821 return is_min ? DivValue(v1_max, v2_max) : DivValue(v1_min, v2_min);
827 return is_min ? DivValue(v1_min, v2_min) : DivValue(v1_max, v2_max);
829 return is_min ? DivValue(v1_max, v2_min) : DivValue(v1_min, v2_max);
870 bool is_min) const {
873 return MulValue(GetVal(info, trip, in_body, is_min == value >= 0), c);
883 bool is_min) const {
886 return DivValue(GetVal(info, trip, in_body, is_min == value >= 0), c);
943 InductionVarRange::Value InductionVarRange::MergeVal(Value v1, Value v2, bool is_min) const {
947 is_min ? std::min(v1.b_constant, v2.b_constant)
1006 return GenerateCode(trip->op_b, nullptr, graph, block, taken_test, in_body, /* is_min */ false);
1009 trip->op_b, nullptr, nullptr, nullptr, nullptr, in_body, /* is_min */ false)) {
1017 GenerateCode(info, trip, graph, block, lower, in_body, /* is_min */ true)) &&
1019 GenerateCode(info, trip, graph, block, upper, in_body, /* is_min */ false);
1207 bool is_min) const {
1220 // sub expressions, viz. no induction, there is no need to adjust is_min).
1232 if (GenerateCode(info->op_a, trip, graph, block, &opa, in_body, is_min) &&
1233 GenerateCode(info->op_b, trip, graph, block, &opb, in_body, is_min)) {
1266 if (GenerateCode(info->op_b, trip, graph, block, &opb, in_body, !is_min)) {
1280 if (!in_body && !is_min) { // one extra!
1281 return GenerateCode(info->op_a, trip, graph, block, result, in_body, is_min);
1286 if (is_min) {
1292 if (GenerateCode(info->op_a, trip, graph, block, &opb, in_body, is_min)) {
1317 const bool is_min_a = stride_value >= 0 ? is_min : !is_min;
1319 GenerateCode(info->op_b, trip, graph, block, &opb, in_body, is_min)) {
1346 Value extreme = GetVal(info, trip, in_body, is_min);