| 262 | } |
| 263 | |
| 264 | Status CopyElementToLargerSlice(const Tensor& element, Tensor* parent, |
| 265 | int index) { |
| 266 | if (parent->dims() != element.dims() + 1) { |
| 267 | return errors::Internal( |
| 268 | "Mismatched ranks. Element's rank is: ", element.dims(), |
| 269 | " but element is meant to be a slice in output Tensor having rank: ", |
| 270 | parent->dims(), " (should be: ", element.dims() + 1, ")"); |
| 271 | } |
| 272 | |
| 273 | #define HANDLE_DIMS(NDIMS) \ |
| 274 | case NDIMS: { \ |
| 275 | TF_RETURN_IF_ERROR( \ |
| 276 | HandleElementToLargerSliceWithRank<NDIMS>(element, parent, index)); \ |
| 277 | return Status::OK(); \ |
| 278 | } |
| 279 | |
| 280 | switch (element.dims()) { |
| 281 | HANDLE_DIMS(0); |
| 282 | HANDLE_DIMS(1); |
| 283 | HANDLE_DIMS(2); |
| 284 | HANDLE_DIMS(3); |
| 285 | HANDLE_DIMS(4); |
| 286 | HANDLE_DIMS(5); |
| 287 | #undef HANDLE_DIMS |
| 288 | default: |
| 289 | return errors::Unimplemented("CopyElementToLargerSlice Unhandled rank: ", |
| 290 | element.dims()); |
| 291 | } |
| 292 | } |
| 293 | |
| 294 | Status SetElementZero(Tensor* element, const Tensor& padding) { |
| 295 | #define HANDLE_TYPE(T) \ |
no test coverage detected