i965: Optimize reading the destination type
brw_hw_type_to_reg_type() needs to know only whether the file is BRW_IMMEDIATE_VALUE or not, which is not a valid file for the destination. gcc and clang will evaluate __builtin_strcmp() at compile time, so we can use it to pass a constant file for the destination. text data bss dec hex filename 7816214 346248 420496 8582958 82f72e i965_dri.so before 7816070 346248 420496 8582814 82f69e i965_dri.so after Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
This commit is contained in:
@@ -669,7 +669,9 @@ static inline enum brw_reg_type \
|
|||||||
brw_inst_##reg##_type(const struct gen_device_info *devinfo, \
|
brw_inst_##reg##_type(const struct gen_device_info *devinfo, \
|
||||||
const brw_inst *inst) \
|
const brw_inst *inst) \
|
||||||
{ \
|
{ \
|
||||||
unsigned file = brw_inst_##reg##_reg_file(devinfo, inst); \
|
unsigned file = __builtin_strcmp("dst", #reg) == 0 ? \
|
||||||
|
BRW_GENERAL_REGISTER_FILE : \
|
||||||
|
brw_inst_##reg##_reg_file(devinfo, inst); \
|
||||||
unsigned hw_type = brw_inst_##reg##_reg_hw_type(devinfo, inst); \
|
unsigned hw_type = brw_inst_##reg##_reg_hw_type(devinfo, inst); \
|
||||||
return brw_hw_type_to_reg_type(devinfo, (enum brw_reg_file)file, hw_type); \
|
return brw_hw_type_to_reg_type(devinfo, (enum brw_reg_file)file, hw_type); \
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user