| 1272 | } |
| 1273 | |
| 1274 | StatusOr<Literal> ConvertSwitch(const LiteralBase& literal, |
| 1275 | PrimitiveType primitive_dest_type, |
| 1276 | bool bitcast) { |
| 1277 | TF_RET_CHECK(literal.shape().IsArray()); |
| 1278 | if (literal.shape().element_type() == primitive_dest_type) { |
| 1279 | return literal.Clone(); |
| 1280 | } |
| 1281 | switch (literal.shape().element_type()) { |
| 1282 | #define CONVERT_IF_DEST_TYPE_MATCHES(type) \ |
| 1283 | case (type): \ |
| 1284 | return ConvertIfDestTypeMatches<(type)>(literal, primitive_dest_type, \ |
| 1285 | bitcast); |
| 1286 | CONVERT_IF_DEST_TYPE_MATCHES(PRED) |
| 1287 | CONVERT_IF_DEST_TYPE_MATCHES(S8) |
| 1288 | CONVERT_IF_DEST_TYPE_MATCHES(S16) |
| 1289 | CONVERT_IF_DEST_TYPE_MATCHES(S32) |
| 1290 | CONVERT_IF_DEST_TYPE_MATCHES(S64) |
| 1291 | CONVERT_IF_DEST_TYPE_MATCHES(U8) |
| 1292 | CONVERT_IF_DEST_TYPE_MATCHES(U16) |
| 1293 | CONVERT_IF_DEST_TYPE_MATCHES(U32) |
| 1294 | CONVERT_IF_DEST_TYPE_MATCHES(U64) |
| 1295 | CONVERT_IF_DEST_TYPE_MATCHES(F16) |
| 1296 | CONVERT_IF_DEST_TYPE_MATCHES(F32) |
| 1297 | CONVERT_IF_DEST_TYPE_MATCHES(F64) |
| 1298 | CONVERT_IF_DEST_TYPE_MATCHES(BF16) |
| 1299 | #undef CONVERT_IF_DEST_TYPE_MATCHES |
| 1300 | // Other types are not yet supported. |
| 1301 | default: |
| 1302 | return Unimplemented("%s from type %s to type %s is not implemented.", |
| 1303 | (bitcast ? "Bitcast converting" : "Converting"), |
| 1304 | PrimitiveType_Name(literal.shape().element_type()), |
| 1305 | PrimitiveType_Name(primitive_dest_type)); |
| 1306 | } |
| 1307 | } |
| 1308 | |
| 1309 | } // namespace |
| 1310 |
no test coverage detected