summaryrefslogtreecommitdiff
path: root/assembler
diff options
context:
space:
mode:
authorDamien Lespiau <damien.lespiau@intel.com>2013-01-20 21:52:05 +0000
committerDamien Lespiau <damien.lespiau@intel.com>2013-03-04 15:54:37 +0000
commit02019d4d554623f151f8c800a0812a8fee237ee6 (patch)
treec6723bcacb143e89fd513e91640bff5733f74df0 /assembler
parentdb6f5e08ba358d9d7af8ca43ae61f19486e7dfa5 (diff)
assembler: Remove the writemask_set field of struct dest_operand
writemask_set gets in the way of switching to using struct brw_reg and it's possible to derive it from the writemask value. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Diffstat (limited to 'assembler')
-rw-r--r--assembler/gen4asm.h1
-rw-r--r--assembler/gram.y10
2 files changed, 4 insertions, 7 deletions
diff --git a/assembler/gen4asm.h b/assembler/gen4asm.h
index 71b8a4de..e57a6991 100644
--- a/assembler/gen4asm.h
+++ b/assembler/gen4asm.h
@@ -91,7 +91,6 @@ struct indirect_reg {
struct dst_operand {
int reg_file, reg_nr, subreg_nr, reg_type;
- int writemask_set;
int writemask;
int horiz_stride;
diff --git a/assembler/gram.y b/assembler/gram.y
index a27375b1..62dad6db 100644
--- a/assembler/gram.y
+++ b/assembler/gram.y
@@ -1541,7 +1541,6 @@ dstoperand: symbol_reg dstregion
$$.address_subreg_nr = $1.address_subreg_nr;
$$.indirect_offset = $1.indirect_offset;
$$.horiz_stride = $2;
- $$.writemask_set = $3.writemask_set;
$$.writemask = $3.writemask;
$$.reg_type = $4.type;
}
@@ -2431,12 +2430,10 @@ chansel: X | Y | Z | W
*/
writemask: /* empty */
{
- $$.writemask_set = 0;
$$.writemask = BRW_WRITEMASK_XYZW;
}
| DOT writemask_x writemask_y writemask_z writemask_w
{
- $$.writemask_set = 1;
$$.writemask = $2 | $3 | $4 | $5;
}
;
@@ -2843,7 +2840,8 @@ int set_instruction_dest(struct brw_instruction *instr,
instr->bits1.da1.dest_reg_nr = dest->reg_nr;
instr->bits1.da1.dest_horiz_stride = dest->horiz_stride;
instr->bits1.da1.dest_address_mode = dest->address_mode;
- if (dest->writemask_set) {
+ if (dest->writemask != 0 &&
+ dest->writemask != BRW_WRITEMASK_XYZW) {
fprintf(stderr, "error: write mask set in align1 "
"instruction\n");
return 1;
@@ -2863,7 +2861,8 @@ int set_instruction_dest(struct brw_instruction *instr,
instr->bits1.ia1.dest_horiz_stride = dest->horiz_stride;
instr->bits1.ia1.dest_indirect_offset = dest->indirect_offset;
instr->bits1.ia1.dest_address_mode = dest->address_mode;
- if (dest->writemask_set) {
+ if (dest->writemask != 0 &&
+ dest->writemask != BRW_WRITEMASK_XYZW) {
fprintf(stderr, "error: write mask set in align1 "
"instruction\n");
return 1;
@@ -3134,7 +3133,6 @@ void set_direct_dst_operand(struct dst_operand *dst, struct direct_reg *reg,
dst->subreg_nr = reg->subreg_nr;
dst->reg_type = type;
dst->horiz_stride = 1;
- dst->writemask_set = 0;
dst->writemask = BRW_WRITEMASK_XYZW;
}