[Mesa-dev] [PATCH 23/47] (0023) i965/ir: Expose multiple flag registers to the IR.

Shaofeng Tang shaofeng.tang at intel.com
Mon May 21 03:29:57 UTC 2018


From: Kevin Rogovin <kevin.rogovin at intel.com>

Change-Id: I90414e75eabd3c4dbdd85547543e0ab12338107d
Signed-off-by: valtteri rantala <valtteri.rantala at intel.com>
---
 src/intel/compiler/brw_fs_generator.cpp | 2 ++
 src/intel/compiler/brw_reg.h            | 5 ++---
 src/intel/compiler/brw_shader.h         | 4 ++--
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/intel/compiler/brw_fs_generator.cpp b/src/intel/compiler/brw_fs_generator.cpp
index b78fd44..044eba4 100644
--- a/src/intel/compiler/brw_fs_generator.cpp
+++ b/src/intel/compiler/brw_fs_generator.cpp
@@ -1813,6 +1813,8 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
       brw_set_default_access_mode(p, BRW_ALIGN_1);
       brw_set_default_predicate_control(p, inst->predicate);
       brw_set_default_predicate_inverse(p, inst->predicate_inverse);
+      const unsigned flag_subreg = inst->flag_subreg +
+         (devinfo->gen >= 7 ? 0 : inst->group / 16);      
       brw_set_default_flag_reg(p, inst->flag_subreg / 2, inst->flag_subreg % 2);
       brw_set_default_saturate(p, inst->saturate);
       brw_set_default_mask_control(p, inst->force_writemask_all);
diff --git a/src/intel/compiler/brw_reg.h b/src/intel/compiler/brw_reg.h
index dff9b97..1908315 100644
--- a/src/intel/compiler/brw_reg.h
+++ b/src/intel/compiler/brw_reg.h
@@ -901,10 +901,9 @@ brw_flag_reg(int reg, int subreg)
 }
 
 static inline struct brw_reg
-brw_flag_subreg(unsigned subreg)
+brw_flag_subreg(int subreg)
 {
-   return brw_uw1_reg(BRW_ARCHITECTURE_REGISTER_FILE,
-                      BRW_ARF_FLAG + subreg / 2, subreg % 2);
+   return brw_flag_reg(subreg / 2, subreg % 2);
 }
 
 /**
diff --git a/src/intel/compiler/brw_shader.h b/src/intel/compiler/brw_shader.h
index 7d97ddb..15966f6 100644
--- a/src/intel/compiler/brw_shader.h
+++ b/src/intel/compiler/brw_shader.h
@@ -170,8 +170,8 @@ struct backend_instruction {
    bool shadow_compare:1;
    bool eot:1;
 
-   /* Chooses which flag subregister (f0.0 to f1.1) is used for conditional
-    * mod and predication.
+   /* Chooses which flag subregister (f0.0-f1.1) is used for conditional mod
+    * and predication, in 16 bit units.
     */
    unsigned flag_subreg:2;
 
-- 
2.7.4



More information about the mesa-dev mailing list