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