| 1115 | } |
| 1116 | |
| 1117 | XlaOp XlaBuilder::Dot(XlaOp lhs, XlaOp rhs, |
| 1118 | const PrecisionConfig* precision_config) { |
| 1119 | return ReportErrorOrReturn([&]() -> StatusOr<XlaOp> { |
| 1120 | TF_ASSIGN_OR_RETURN(const Shape* lhs_shape, GetShapePtr(lhs)); |
| 1121 | |
| 1122 | DotDimensionNumbers dimension_numbers; |
| 1123 | dimension_numbers.add_lhs_contracting_dimensions( |
| 1124 | lhs_shape->dimensions_size() == 1 ? 0 : 1); |
| 1125 | dimension_numbers.add_rhs_contracting_dimensions(0); |
| 1126 | return DotGeneral(lhs, rhs, dimension_numbers, precision_config); |
| 1127 | }); |
| 1128 | } |
| 1129 | |
| 1130 | XlaOp XlaBuilder::DotGeneral(XlaOp lhs, XlaOp rhs, |
| 1131 | const DotDimensionNumbers& dimension_numbers, |