[Mesa-dev] [PATCH] genxml: Remove a redundant identical code for different branches

Mun, Gwan-gyeong elongbug at gmail.com
Wed Jul 26 03:16:31 UTC 2017


Hi Jason,
You are right, as you commented, compilers can eliminate these redundancies
easy.
However I think we don't need to generate redundant codes.

Best regards,
Gwan-gyeong

2017년 7월 26일 (수) 오전 12:34, Jason Ekstrand <jason at jlekstrand.net>님이 작성:

> Does the redundancy ends up mattering in any way?  A decent optimizing
> compiler should easily be able to get rid of that for you.
>
> --Jason
>
>
> On July 25, 2017 2:51:31 AM Gwan-gyeong Mun <elongbug at gmail.com> wrote:
>
> > Before, it generates functions like this,
> >
> > static inline uint32_t ATTRIBUTE_PURE
> > RENDER_SURFACE_STATE_RedClearColor_start(const struct gen_device_info
> *devinfo)
> > {
> >    switch (devinfo->gen) {
> >    case 10: return 384;
> >    case 9: return 384;
> >    case 8: return 255;
> >    case 7:
> >       if (devinfo->is_haswell) {
> >          return 255;
> >       } else {
> >          return 255;
> >       }
> >    case 6: return 0;
> >    case 5: return 0;
> >    case 4:
> >       if (devinfo->is_g4x) {
> >          return 0;
> >       } else {
> >          return 0;
> >       }
> >    default:
> >       unreachable("Invalid hardware generation");
> >    }
> > }
> >
> > After, it generates fuctions without a redundant identical code for
> different
> > branches.
> >
> > static inline uint32_t ATTRIBUTE_PURE
> > RENDER_SURFACE_STATE_RedClearColor_start(const struct gen_device_info
> *devinfo)
> > {
> >    switch (devinfo->gen) {
> >    case 10: return 384;
> >    case 9: return 384;
> >    case 8: return 255;
> >    case 7: return 255;
> >    case 6: return 0;
> >    case 5: return 0;
> >    case 4: return 0;
> >    default:
> >       unreachable("Invalid hardware generation");
> >    }
> > }
> >
> > Signed-off-by: Mun Gwan-gyeong <elongbug at gmail.com>
> > ---
> >  src/intel/genxml/gen_bits_header.py | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/src/intel/genxml/gen_bits_header.py
> > b/src/intel/genxml/gen_bits_header.py
> > index 1b3504073b..8084facdb7 100644
> > --- a/src/intel/genxml/gen_bits_header.py
> > +++ b/src/intel/genxml/gen_bits_header.py
> > @@ -83,20 +83,28 @@ ${item.token_name}_${prop}(const struct
> gen_device_info
> > *devinfo)
> >     case 10: return ${item.get_prop(prop, 10)};
> >     case 9: return ${item.get_prop(prop, 9)};
> >     case 8: return ${item.get_prop(prop, 8)};
> > +% if item.get_prop(prop, 7) == item.get_prop(prop, 7.5):
> > +   case 7: return ${item.get_prop(prop, 7)};
> > +% else:
> >     case 7:
> >        if (devinfo->is_haswell) {
> >           return ${item.get_prop(prop, 7.5)};
> >        } else {
> >           return ${item.get_prop(prop, 7)};
> >        }
> > +% endif
> >     case 6: return ${item.get_prop(prop, 6)};
> >     case 5: return ${item.get_prop(prop, 5)};
> > +% if item.get_prop(prop, 4) == item.get_prop(prop, 4.5):
> > +   case 4: return ${item.get_prop(prop, 4)};
> > +% else:
> >     case 4:
> >        if (devinfo->is_g4x) {
> >           return ${item.get_prop(prop, 4.5)};
> >        } else {
> >           return ${item.get_prop(prop, 4)};
> >        }
> > +% endif
> >     default:
> >        unreachable("Invalid hardware generation");
> >     }
> > --
> > 2.13.3
> >
>
>
> --
Gwan-gyeong Mun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170726/fabc0b3d/attachment-0001.html>


More information about the mesa-dev mailing list