Merge pull request #7360 from alalek:fix_aarch64_fp16

pull/7355/merge
Alexander Alekhin 8 years ago
commit 63280767f1
  1. 8
      modules/core/include/opencv2/core/cvdef.h
  2. 6
      modules/core/src/convert.cpp

@ -307,10 +307,16 @@ enum CpuFeatures {
#define CV_2PI 6.283185307179586476925286766559 #define CV_2PI 6.283185307179586476925286766559
#define CV_LOG2 0.69314718055994530941723212145818 #define CV_LOG2 0.69314718055994530941723212145818
#if defined (__ARM_FP16_FORMAT_IEEE)
# define CV_FP16_TYPE 1
#else
# define CV_FP16_TYPE 0
#endif
typedef union Cv16suf typedef union Cv16suf
{ {
short i; short i;
#if ( defined (__arm__) || defined (__aarch64__) ) && !defined (__CUDACC__) && ( defined (__GNUC__) && ( ( ( 4 <= __GNUC__ ) && ( 7 <= __GNUC_MINOR__ ) ) || ( 5 <= __GNUC__ ) ) ) #if CV_FP16_TYPE
__fp16 h; __fp16 h;
#endif #endif
struct _fp16Format struct _fp16Format

@ -4380,7 +4380,7 @@ struct Cvt_SIMD<float, int>
#endif #endif
#if !( ( defined (__arm__) || defined (__aarch64__) ) && ( defined (__GNUC__) && ( ( ( 4 <= __GNUC__ ) && ( 7 <= __GNUC_MINOR__ ) ) || ( 5 <= __GNUC__ ) ) ) ) #if !CV_FP16_TYPE
// const numbers for floating points format // const numbers for floating points format
const unsigned int kShiftSignificand = 13; const unsigned int kShiftSignificand = 13;
const unsigned int kMaskFp16Significand = 0x3ff; const unsigned int kMaskFp16Significand = 0x3ff;
@ -4388,7 +4388,7 @@ const unsigned int kBiasFp16Exponent = 15;
const unsigned int kBiasFp32Exponent = 127; const unsigned int kBiasFp32Exponent = 127;
#endif #endif
#if ( defined (__arm__) || defined (__aarch64__) ) && ( defined (__GNUC__) && ( ( ( 4 <= __GNUC__ ) && ( 7 <= __GNUC_MINOR__ ) ) || ( 5 <= __GNUC__ ) ) ) #if CV_FP16_TYPE
static float convertFp16SW(short fp16) static float convertFp16SW(short fp16)
{ {
// Fp16 -> Fp32 // Fp16 -> Fp32
@ -4450,7 +4450,7 @@ static float convertFp16SW(short fp16)
} }
#endif #endif
#if ( defined (__arm__) || defined (__aarch64__) ) && ( defined (__GNUC__) && ( ( ( 4 <= __GNUC__ ) && ( 7 <= __GNUC_MINOR__ ) ) || ( 5 <= __GNUC__ ) ) ) #if CV_FP16_TYPE
static short convertFp16SW(float fp32) static short convertFp16SW(float fp32)
{ {
// Fp32 -> Fp16 // Fp32 -> Fp16

Loading…
Cancel
Save