<div><div dir="auto">Hi Jason,</div><div dir="auto">You are right, as you commented, compilers can eliminate these redundancies easy.</div><div dir="auto">However I think we don't need to generate redundant codes.</div><div dir="auto"><br></div><div dir="auto">Best regards,</div><div dir="auto">Gwan-gyeong</div><br><div class="gmail_quote"><div>2017년 7월 26일 (수) 오전 12:34, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>>님이 작성:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Does the redundancy ends up mattering in any way?  A decent optimizing<br>
compiler should easily be able to get rid of that for you.<br>
<br>
--Jason<br>
<br>
<br>
On July 25, 2017 2:51:31 AM Gwan-gyeong Mun <<a href="mailto:elongbug@gmail.com" target="_blank">elongbug@gmail.com</a>> wrote:<br>
<br>
> Before, it generates functions like this,<br>
><br>
> static inline uint32_t ATTRIBUTE_PURE<br>
> RENDER_SURFACE_STATE_RedClearColor_start(const struct gen_device_info *devinfo)<br>
> {<br>
>    switch (devinfo->gen) {<br>
>    case 10: return 384;<br>
>    case 9: return 384;<br>
>    case 8: return 255;<br>
>    case 7:<br>
>       if (devinfo->is_haswell) {<br>
>          return 255;<br>
>       } else {<br>
>          return 255;<br>
>       }<br>
>    case 6: return 0;<br>
>    case 5: return 0;<br>
>    case 4:<br>
>       if (devinfo->is_g4x) {<br>
>          return 0;<br>
>       } else {<br>
>          return 0;<br>
>       }<br>
>    default:<br>
>       unreachable("Invalid hardware generation");<br>
>    }<br>
> }<br>
><br>
> After, it generates fuctions without a redundant identical code for different<br>
> branches.<br>
><br>
> static inline uint32_t ATTRIBUTE_PURE<br>
> RENDER_SURFACE_STATE_RedClearColor_start(const struct gen_device_info *devinfo)<br>
> {<br>
>    switch (devinfo->gen) {<br>
>    case 10: return 384;<br>
>    case 9: return 384;<br>
>    case 8: return 255;<br>
>    case 7: return 255;<br>
>    case 6: return 0;<br>
>    case 5: return 0;<br>
>    case 4: return 0;<br>
>    default:<br>
>       unreachable("Invalid hardware generation");<br>
>    }<br>
> }<br>
><br>
> Signed-off-by: Mun Gwan-gyeong <<a href="mailto:elongbug@gmail.com" target="_blank">elongbug@gmail.com</a>><br>
> ---<br>
>  src/intel/genxml/gen_bits_header.py | 8 ++++++++<br>
>  1 file changed, 8 insertions(+)<br>
><br>
> diff --git a/src/intel/genxml/gen_bits_header.py<br>
> b/src/intel/genxml/gen_bits_header.py<br>
> index 1b3504073b..8084facdb7 100644<br>
> --- a/src/intel/genxml/gen_bits_header.py<br>
> +++ b/src/intel/genxml/gen_bits_header.py<br>
> @@ -83,20 +83,28 @@ ${item.token_name}_${prop}(const struct gen_device_info<br>
> *devinfo)<br>
>     case 10: return ${item.get_prop(prop, 10)};<br>
>     case 9: return ${item.get_prop(prop, 9)};<br>
>     case 8: return ${item.get_prop(prop, 8)};<br>
> +% if item.get_prop(prop, 7) == item.get_prop(prop, 7.5):<br>
> +   case 7: return ${item.get_prop(prop, 7)};<br>
> +% else:<br>
>     case 7:<br>
>        if (devinfo->is_haswell) {<br>
>           return ${item.get_prop(prop, 7.5)};<br>
>        } else {<br>
>           return ${item.get_prop(prop, 7)};<br>
>        }<br>
> +% endif<br>
>     case 6: return ${item.get_prop(prop, 6)};<br>
>     case 5: return ${item.get_prop(prop, 5)};<br>
> +% if item.get_prop(prop, 4) == item.get_prop(prop, 4.5):<br>
> +   case 4: return ${item.get_prop(prop, 4)};<br>
> +% else:<br>
>     case 4:<br>
>        if (devinfo->is_g4x) {<br>
>           return ${item.get_prop(prop, 4.5)};<br>
>        } else {<br>
>           return ${item.get_prop(prop, 4)};<br>
>        }<br>
> +% endif<br>
>     default:<br>
>        unreachable("Invalid hardware generation");<br>
>     }<br>
> --<br>
> 2.13.3<br>
><br>
<br>
<br>
</blockquote></div></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature">Gwan-gyeong Mun</div>