i965: Add mask_control_ex field and handle it in compaction.
authorMatt Turner <mattst88@gmail.com>
Mon, 19 Oct 2015 22:08:28 +0000 (15:08 -0700)
committerMatt Turner <mattst88@gmail.com>
Wed, 21 Oct 2015 17:17:38 +0000 (10:17 -0700)
Documentation is sparse, but it appears to have existed on G45 and ILK
as a second bit extension of the mask_control field. Setting the pair of
bits to 0b11 enables "NoCMask".

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/mesa/drivers/dri/i965/brw_eu_compact.c
src/mesa/drivers/dri/i965/brw_inst.h

index b122deca7275ddf2288967465d0b28f57f608e90..f787ea3d4f887bc9f3bc6969773b0ed9c07596b1 100644 (file)
@@ -1018,6 +1018,8 @@ brw_try_compact_instruction(const struct brw_device_info *devinfo,
 
    if (devinfo->gen >= 6) {
       compact(acc_wr_control);
+   } else {
+      compact(mask_control_ex);
    }
 
    compact(cond_modifier);
@@ -1229,6 +1231,8 @@ brw_uncompact_instruction(const struct brw_device_info *devinfo, brw_inst *dst,
 
    if (devinfo->gen >= 6) {
       uncompact(acc_wr_control);
+   } else {
+      uncompact(mask_control_ex);
    }
 
    uncompact(cond_modifier);
index cb3d7e69a9aae58dda0b560393677df84d51bb71..819ce5965470b8d845cd1043f4c5e3be946aa460 100644 (file)
@@ -182,6 +182,7 @@ F(debug_control,        30,  30)
 F(cmpt_control,         29,  29)
 FC(branch_control,      28,  28, devinfo->gen >= 8)
 FC(acc_wr_control,      28,  28, devinfo->gen >= 6)
+FC(mask_control_ex,     28,  28, devinfo->is_g4x || devinfo->gen == 5)
 F(cond_modifier,        27,  24)
 FC(math_function,       27,  24, devinfo->gen >= 6)
 F(exec_size,            23,  21)
@@ -792,6 +793,7 @@ F(cmpt_control,     29, 29) /* Same location as brw_inst */
 FC(flag_subreg_nr,  28, 28, devinfo->gen <= 6)
 F(cond_modifier,    27, 24) /* Same location as brw_inst */
 FC(acc_wr_control,  23, 23, devinfo->gen >= 6)
+FC(mask_control_ex, 23, 23, devinfo->is_g4x || devinfo->gen == 5)
 F(subreg_index,     22, 18)
 F(datatype_index,   17, 13)
 F(control_index,    12,  8)