aboutsummaryrefslogtreecommitdiffstats
path: root/src/intel
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2017-08-02 23:20:00 -0700
committerMatt Turner <[email protected]>2017-08-21 14:05:23 -0700
commita98b1a8922fa6990d0ab677770fc8ab6c9286a4b (patch)
tree235289c40b54f75356a25c6e5b5d335d06f77b8b /src/intel
parent91ef9490549567968a51bd8c68ebb60e47ebcdcb (diff)
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 <[email protected]>
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/compiler/brw_inst.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/intel/compiler/brw_inst.h b/src/intel/compiler/brw_inst.h
index eacc0a024a7..e9dad38f699 100644
--- a/src/intel/compiler/brw_inst.h
+++ b/src/intel/compiler/brw_inst.h
@@ -669,7 +669,9 @@ static inline enum brw_reg_type \
brw_inst_##reg##_type(const struct gen_device_info *devinfo, \
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); \
return brw_hw_type_to_reg_type(devinfo, (enum brw_reg_file)file, hw_type); \
}