|
|
|
@@ -13,66 +13,66 @@ |
|
|
|
* See the License for the specific language governing permissions and |
|
|
|
* limitations under the License. |
|
|
|
*/ |
|
|
|
#ifndef MINDSPORE_LITE_NNACL_CAST_BASE_H_ |
|
|
|
#define MINDSPORE_LITE_NNACL_CAST_BASE_H_ |
|
|
|
|
|
|
|
#include "nnacl/fp32/cast_fp32.h" |
|
|
|
#include "nnacl/fp32/common_func_fp32.h" |
|
|
|
#include "nnacl/op_base.h" |
|
|
|
#include "nnacl/nnacl_common.h" |
|
|
|
|
|
|
|
void BoolToFloat32(const bool *input, float *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = (float)input[i]; |
|
|
|
} |
|
|
|
} |
|
|
|
#ifdef __cplusplus |
|
|
|
extern "C" { |
|
|
|
#endif |
|
|
|
|
|
|
|
void Uint8ToFloat32(const uint8_t *input, float *output, int number) { |
|
|
|
inline void BoolToFloat32(const bool *input, float *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = (float)input[i]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Uint8ToInt8(const uint8_t *input, int8_t *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = (int8_t)(input[i] - 128); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Int8ToUint8(const int8_t *input, uint8_t *output, int number) { |
|
|
|
inline void Uint8ToFloat32(const uint8_t *input, float *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = (uint8_t)(input[i] + 128); |
|
|
|
output[i] = (float)input[i]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Int32ToFloat32(const int32_t *input, float *output, int number) { |
|
|
|
inline void Int32ToFloat32(const int32_t *input, float *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = (float)input[i]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Fp16ToFloat32(const uint16_t *input, float *output, int number) { |
|
|
|
inline void Fp16ToFloat32(const uint16_t *input, float *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = ShortToFloat32(input[i]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Float32ToFp16(const float *input, uint16_t *output, int number) { |
|
|
|
inline void Float32ToFp16(const float *input, uint16_t *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = Float32ToShort(input[i]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Float32ToInt32(const float *input, int32_t *output, int number) { |
|
|
|
inline void Float32ToInt32(const float *input, int32_t *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = (int32_t)input[i]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Float32ToInt64(const float *input, int64_t *output, int number) { |
|
|
|
inline void Float32ToInt64(const float *input, int64_t *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = (int64_t)input[i]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Int32ToInt64(const int32_t *input, int64_t *output, int number) { |
|
|
|
inline void Int32ToInt64(const int32_t *input, int64_t *output, int number) { |
|
|
|
for (int i = 0; i < number; ++i) { |
|
|
|
output[i] = (int64_t)input[i]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef __cplusplus |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#endif // MINDSPORE_LITE_NNACL_CAST_BASE_H_ |