| 463 | } |
| 464 | |
| 465 | Status InferenceContext::Merge(DimensionHandle d0, DimensionHandle d1, |
| 466 | DimensionHandle* out) { |
| 467 | if (d0.SameHandle(d1)) { |
| 468 | *out = d0; |
| 469 | return Status::OK(); |
| 470 | } else if (!ValueKnown(d1)) { |
| 471 | *out = d0; |
| 472 | merged_dims_.emplace_back(d0, d1); |
| 473 | return Status::OK(); |
| 474 | } else if (!ValueKnown(d0)) { |
| 475 | *out = d1; |
| 476 | merged_dims_.emplace_back(d0, d1); |
| 477 | return Status::OK(); |
| 478 | } else if (Value(d0) == Value(d1)) { |
| 479 | *out = d0; |
| 480 | return Status::OK(); |
| 481 | } else { |
| 482 | *out = nullptr; |
| 483 | return errors::InvalidArgument("Dimensions must be equal, but are ", |
| 484 | Value(d0), " and ", Value(d1)); |
| 485 | } |
| 486 | } |
| 487 | |
| 488 | Status InferenceContext::MergePrefix(ShapeHandle s, ShapeHandle prefix, |
| 489 | ShapeHandle* s_out, |