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 <ja...@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 <elong...@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 <elong...@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
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev