From: Dave Airlie <airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: [PATCH 03/10] amdgpu/dc: inline some of the bw_fixed code.
Date: Fri, 29 Sep 2017 17:13:24 +1000 [thread overview]
Message-ID: <20170929071331.18132-3-airlied@gmail.com> (raw)
In-Reply-To: <20170929071331.18132-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
From: Dave Airlie <airlied@redhat.com>
This results in a ~4.5k code size reduction.
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c | 93 --------------------
drivers/gpu/drm/amd/display/dc/inc/bw_fixed.h | 111 ++++++++++++++++++++----
2 files changed, 96 insertions(+), 108 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c b/drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c
index fbf2adc..0de6fa1 100644
--- a/drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c
+++ b/drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c
@@ -56,16 +56,6 @@ static uint64_t abs_i64(int64_t arg)
return (uint64_t)(-arg);
}
-struct bw_fixed bw_min3(struct bw_fixed v1, struct bw_fixed v2, struct bw_fixed v3)
-{
- return bw_min2(bw_min2(v1, v2), v3);
-}
-
-struct bw_fixed bw_max3(struct bw_fixed v1, struct bw_fixed v2, struct bw_fixed v3)
-{
- return bw_max2(bw_max2(v1, v2), v3);
-}
-
struct bw_fixed bw_int_to_fixed(int64_t value)
{
struct bw_fixed res;
@@ -133,16 +123,6 @@ struct bw_fixed bw_frc_to_fixed(int64_t numerator, int64_t denominator)
return res;
}
-struct bw_fixed bw_min2(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- return (arg1.value <= arg2.value) ? arg1 : arg2;
-}
-
-struct bw_fixed bw_max2(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- return (arg2.value <= arg1.value) ? arg1 : arg2;
-}
-
struct bw_fixed bw_floor2(
const struct bw_fixed arg,
const struct bw_fixed significance)
@@ -174,24 +154,6 @@ struct bw_fixed bw_ceil2(
return result;
}
-struct bw_fixed bw_add(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- struct bw_fixed res;
-
- res.value = arg1.value + arg2.value;
-
- return res;
-}
-
-struct bw_fixed bw_sub(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- struct bw_fixed res;
-
- res.value = arg1.value - arg2.value;
-
- return res;
-}
-
struct bw_fixed bw_mul(const struct bw_fixed arg1, const struct bw_fixed arg2)
{
struct bw_fixed res;
@@ -242,58 +204,3 @@ struct bw_fixed bw_mul(const struct bw_fixed arg1, const struct bw_fixed arg2)
return res;
}
-struct bw_fixed bw_div(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- struct bw_fixed res = bw_frc_to_fixed(arg1.value, arg2.value);
- return res;
-}
-
-struct bw_fixed bw_mod(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- struct bw_fixed res;
- div64_u64_rem(arg1.value, arg2.value, &res.value);
- return res;
-}
-struct bw_fixed fixed31_32_to_bw_fixed(int64_t raw)
-{
- struct bw_fixed result = { 0 };
-
- if (raw < 0) {
- raw = -raw;
- result.value = -(raw >> (32 - BITS_PER_FRACTIONAL_PART));
- } else {
- result.value = raw >> (32 - BITS_PER_FRACTIONAL_PART);
- }
-
- return result;
-}
-
-bool bw_equ(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- return arg1.value == arg2.value;
-}
-
-bool bw_neq(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- return arg1.value != arg2.value;
-}
-
-bool bw_leq(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- return arg1.value <= arg2.value;
-}
-
-bool bw_meq(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- return arg1.value >= arg2.value;
-}
-
-bool bw_ltn(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- return arg1.value < arg2.value;
-}
-
-bool bw_mtn(const struct bw_fixed arg1, const struct bw_fixed arg2)
-{
- return arg1.value > arg2.value;
-}
diff --git a/drivers/gpu/drm/amd/display/dc/inc/bw_fixed.h b/drivers/gpu/drm/amd/display/dc/inc/bw_fixed.h
index b31d07a..4477e62 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/bw_fixed.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/bw_fixed.h
@@ -30,9 +30,31 @@ struct bw_fixed {
int64_t value;
};
-struct bw_fixed bw_min3(struct bw_fixed v1, struct bw_fixed v2, struct bw_fixed v3);
+static inline struct bw_fixed bw_min2(const struct bw_fixed arg1,
+ const struct bw_fixed arg2)
+{
+ return (arg1.value <= arg2.value) ? arg1 : arg2;
+}
-struct bw_fixed bw_max3(struct bw_fixed v1, struct bw_fixed v2, struct bw_fixed v3);
+static inline struct bw_fixed bw_max2(const struct bw_fixed arg1,
+ const struct bw_fixed arg2)
+{
+ return (arg2.value <= arg1.value) ? arg1 : arg2;
+}
+
+static inline struct bw_fixed bw_min3(struct bw_fixed v1,
+ struct bw_fixed v2,
+ struct bw_fixed v3)
+{
+ return bw_min2(bw_min2(v1, v2), v3);
+}
+
+static inline struct bw_fixed bw_max3(struct bw_fixed v1,
+ struct bw_fixed v2,
+ struct bw_fixed v3)
+{
+ return bw_max2(bw_max2(v1, v2), v3);
+}
struct bw_fixed bw_int_to_fixed(int64_t value);
@@ -40,24 +62,83 @@ int32_t bw_fixed_to_int(struct bw_fixed value);
struct bw_fixed bw_frc_to_fixed(int64_t num, int64_t denum);
-struct bw_fixed fixed31_32_to_bw_fixed(int64_t raw);
+static inline struct bw_fixed fixed31_32_to_bw_fixed(int64_t raw)
+{
+ struct bw_fixed result = { 0 };
+
+ if (raw < 0) {
+ raw = -raw;
+ result.value = -(raw >> (32 - BW_FIXED_BITS_PER_FRACTIONAL_PART));
+ } else {
+ result.value = raw >> (32 - BW_FIXED_BITS_PER_FRACTIONAL_PART);
+ }
+
+ return result;
+}
+
+static inline struct bw_fixed bw_add(const struct bw_fixed arg1,
+ const struct bw_fixed arg2)
+{
+ struct bw_fixed res;
+
+ res.value = arg1.value + arg2.value;
+
+ return res;
+}
+
+static inline struct bw_fixed bw_sub(const struct bw_fixed arg1, const struct bw_fixed arg2)
+{
+ struct bw_fixed res;
+
+ res.value = arg1.value - arg2.value;
+
+ return res;
+}
-struct bw_fixed bw_add(const struct bw_fixed arg1, const struct bw_fixed arg2);
-struct bw_fixed bw_sub(const struct bw_fixed arg1, const struct bw_fixed arg2);
struct bw_fixed bw_mul(const struct bw_fixed arg1, const struct bw_fixed arg2);
-struct bw_fixed bw_div(const struct bw_fixed arg1, const struct bw_fixed arg2);
-struct bw_fixed bw_mod(const struct bw_fixed arg1, const struct bw_fixed arg2);
+static inline struct bw_fixed bw_div(const struct bw_fixed arg1, const struct bw_fixed arg2)
+{
+ return bw_frc_to_fixed(arg1.value, arg2.value);
+}
+
+static inline struct bw_fixed bw_mod(const struct bw_fixed arg1, const struct bw_fixed arg2)
+{
+ struct bw_fixed res;
+ div64_u64_rem(arg1.value, arg2.value, &res.value);
+ return res;
+}
-struct bw_fixed bw_min2(const struct bw_fixed arg1, const struct bw_fixed arg2);
-struct bw_fixed bw_max2(const struct bw_fixed arg1, const struct bw_fixed arg2);
struct bw_fixed bw_floor2(const struct bw_fixed arg, const struct bw_fixed significance);
struct bw_fixed bw_ceil2(const struct bw_fixed arg, const struct bw_fixed significance);
-bool bw_equ(const struct bw_fixed arg1, const struct bw_fixed arg2);
-bool bw_neq(const struct bw_fixed arg1, const struct bw_fixed arg2);
-bool bw_leq(const struct bw_fixed arg1, const struct bw_fixed arg2);
-bool bw_meq(const struct bw_fixed arg1, const struct bw_fixed arg2);
-bool bw_ltn(const struct bw_fixed arg1, const struct bw_fixed arg2);
-bool bw_mtn(const struct bw_fixed arg1, const struct bw_fixed arg2);
+static inline bool bw_equ(const struct bw_fixed arg1, const struct bw_fixed arg2)
+{
+ return arg1.value == arg2.value;
+}
+
+static inline bool bw_neq(const struct bw_fixed arg1, const struct bw_fixed arg2)
+{
+ return arg1.value != arg2.value;
+}
+
+static inline bool bw_leq(const struct bw_fixed arg1, const struct bw_fixed arg2)
+{
+ return arg1.value <= arg2.value;
+}
+
+static inline bool bw_meq(const struct bw_fixed arg1, const struct bw_fixed arg2)
+{
+ return arg1.value >= arg2.value;
+}
+
+static inline bool bw_ltn(const struct bw_fixed arg1, const struct bw_fixed arg2)
+{
+ return arg1.value < arg2.value;
+}
+
+static inline bool bw_mtn(const struct bw_fixed arg1, const struct bw_fixed arg2)
+{
+ return arg1.value > arg2.value;
+}
#endif //BW_FIXED_H_
--
2.9.4
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next prev parent reply other threads:[~2017-09-29 7:13 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-29 7:13 [PATCH 01/10] amdgpu/dc: hide some unused aux/i2c payload apis Dave Airlie
[not found] ` <20170929071331.18132-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-09-29 7:13 ` [PATCH 02/10] amdgpu/dc: move some one line dp functions to inlines Dave Airlie
2017-09-29 7:13 ` Dave Airlie [this message]
2017-09-29 7:13 ` [PATCH 04/10] amdgpu/dc: allow inlining constant int to fixed a lot better Dave Airlie
[not found] ` <20170929071331.18132-4-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-09-29 15:13 ` Harry Wentland
2017-09-29 7:13 ` [PATCH 05/10] amdgpu/dc: use the builtin constant p trick on the 31/32 fixed point Dave Airlie
2017-09-29 7:13 ` [PATCH 06/10] amdgpu/dc: inline fixed31_32 div_int Dave Airlie
2017-09-29 7:13 ` [PATCH 07/10] amdgpu/dc: inline all the signal_types code Dave Airlie
2017-09-29 7:13 ` [PATCH 08/10] amdgpu/dc: set some of the link dp code to static Dave Airlie
2017-09-29 7:13 ` [PATCH 09/10] amdgpu/dc: rename bios get_image symbol to something more searchable Dave Airlie
2017-09-29 7:13 ` [PATCH 10/10] amdgpu/dc: inline dml_round_to_multiple Dave Airlie
[not found] ` <20170929071331.18132-10-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-09-29 15:13 ` Harry Wentland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170929071331.18132-3-airlied@gmail.com \
--to=airlied-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.