drm/amd/display: add some math functions for dcn_calc_math
authorCharlene Liu <charlene.liu@amd.com>
Fri, 17 May 2019 02:52:46 +0000 (22:52 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 11 Jun 2019 17:49:21 +0000 (12:49 -0500)
Implement floor, ceil, and fabs

Signed-off-by: Charlene Liu <charlene.liu@amd.com>
Reviewed-by: Charlene Liu <Charlene.Liu@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c
drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.h
drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h

index 7600a4a4abc7fd8bd03c707f6df8bf9d9b9aa3a7..07d18e78de49d7ebee9d19c4210f7a12d716203b 100644 (file)
@@ -73,6 +73,17 @@ float dcn_bw_floor2(const float arg, const float significance)
                return 0;
        return ((int) (arg / significance)) * significance;
 }
+float dcn_bw_floor(const float arg)
+{
+       return ((int) (arg));
+}
+
+float dcn_bw_ceil(const float arg)
+{
+       float flr = dcn_bw_floor2(arg, 1);
+
+       return flr + 0.00001 >= arg ? arg : flr + 1;
+}
 
 float dcn_bw_ceil2(const float arg, const float significance)
 {
@@ -109,6 +120,15 @@ float dcn_bw_pow(float a, float exp)
        }
 }
 
+double dcn_bw_fabs(double a)
+{
+       if (a > 0)
+               return (a);
+       else
+               return (-a);
+}
+
+
 float dcn_bw_log(float a, float b)
 {
        int * const exp_ptr = (int *)(&a);
index f46ab0e24ca1334ad34c05785ca42d8416cc248c..45a07eeffbb6b2bc0fa66e4ee567d8cdc5f2835c 100644 (file)
@@ -31,10 +31,13 @@ float dcn_bw_min2(const float arg1, const float arg2);
 unsigned int dcn_bw_max(const unsigned int arg1, const unsigned int arg2);
 float dcn_bw_max2(const float arg1, const float arg2);
 float dcn_bw_floor2(const float arg, const float significance);
+float dcn_bw_floor(const float arg);
 float dcn_bw_ceil2(const float arg, const float significance);
+float dcn_bw_ceil(const float arg);
 float dcn_bw_max3(float v1, float v2, float v3);
 float dcn_bw_max5(float v1, float v2, float v3, float v4, float v5);
 float dcn_bw_pow(float a, float exp);
 float dcn_bw_log(float a, float b);
+double dcn_bw_fabs(double a);
 
 #endif /* _DCN_CALC_MATH_H_ */
index e8ce08567cd8e909bd641fd9706e195a5b4de4b2..eca140da13d8296fadc3aa3314572c0152e50fbf 100644 (file)
@@ -129,4 +129,12 @@ static inline unsigned int dml_round_to_multiple(unsigned int num,
        else
                return (num - remainder);
 }
+static inline double dml_abs(double a)
+{
+       if (a > 0)
+               return a;
+       else
+               return (a*(-1));
+}
+
 #endif