diff --git a/drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h b/drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h index ab0870e2a103c71b85f0e2a98f336022db9e2e96..479d7d83220c2bf4d01e96bc8132a220d5c148e1 100644 --- a/drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h +++ b/drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h @@ -86,9 +86,20 @@ static inline double dml_round(double a) return floor; } -static inline double dml_log2(double x) +/* float +static inline int dml_log2(float x) { - return (double) dcn_bw_log(x, 2); + unsigned int ix = *((unsigned int *)&x); + + return (int)((ix >> 23) & 0xff) - 127; +}*/ + +/* double */ +static inline int dml_log2(double x) +{ + unsigned long long ix = *((unsigned long long *)&x); + + return (int)((ix >> 52) & 0x7ff) - 1023; } static inline double dml_pow(double a, int exp) @@ -116,11 +127,6 @@ static inline double dml_floor_ex(double x, double granularity) return (double) dcn_bw_floor2(x, granularity); } -static inline double dml_log(double x, double base) -{ - return (double) dcn_bw_log(x, base); -} - static inline unsigned int dml_round_to_multiple(unsigned int num, unsigned int multiple, unsigned char up)