mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-11 18:06:13 +00:00
assembler: Replace struct direct_reg by struct brw_reg
More code simplification can be layered on top of that (by using some brw_* helpers to create registers), that'd be for another commit. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
This commit is contained in:
parent
cce4fc2c36
commit
b33b8810e0
@ -66,14 +66,6 @@ typedef struct { \
|
|||||||
/* ensure nobody changes the size of struct brw_instruction */
|
/* ensure nobody changes the size of struct brw_instruction */
|
||||||
STRUCT_SIZE_ASSERT(brw_instruction, 16);
|
STRUCT_SIZE_ASSERT(brw_instruction, 16);
|
||||||
|
|
||||||
/**
|
|
||||||
* This structure is the internal representation of directly-addressed
|
|
||||||
* registers in the parser.
|
|
||||||
*/
|
|
||||||
struct direct_reg {
|
|
||||||
int reg_file, reg_nr, subreg_nr;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct condition {
|
struct condition {
|
||||||
int cond;
|
int cond;
|
||||||
int flag_reg_nr;
|
int flag_reg_nr;
|
||||||
|
202
assembler/gram.y
202
assembler/gram.y
@ -92,9 +92,9 @@ void set_instruction_options(struct brw_instruction *instr,
|
|||||||
struct brw_instruction *options);
|
struct brw_instruction *options);
|
||||||
void set_instruction_predicate(struct brw_instruction *instr,
|
void set_instruction_predicate(struct brw_instruction *instr,
|
||||||
struct brw_instruction *predicate);
|
struct brw_instruction *predicate);
|
||||||
void set_direct_dst_operand(struct dst_operand *dst, struct direct_reg *reg,
|
void set_direct_dst_operand(struct dst_operand *dst, struct brw_reg *reg,
|
||||||
int type);
|
int type);
|
||||||
void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg,
|
void set_direct_src_operand(struct src_operand *src, struct brw_reg *reg,
|
||||||
int type);
|
int type);
|
||||||
|
|
||||||
static void brw_program_init(struct brw_program *p)
|
static void brw_program_init(struct brw_program *p)
|
||||||
@ -158,7 +158,7 @@ static void brw_program_add_label(struct brw_program *p, const char *label)
|
|||||||
struct brw_program program;
|
struct brw_program program;
|
||||||
struct region region;
|
struct region region;
|
||||||
struct regtype regtype;
|
struct regtype regtype;
|
||||||
struct direct_reg direct_reg;
|
struct brw_reg direct_reg;
|
||||||
struct indirect_reg indirect_reg;
|
struct indirect_reg indirect_reg;
|
||||||
struct condition condition;
|
struct condition condition;
|
||||||
struct declared_register symbol_reg;
|
struct declared_register symbol_reg;
|
||||||
@ -263,7 +263,7 @@ static void brw_program_add_label(struct brw_program *p, const char *label)
|
|||||||
%type <region> region region_wh indirectregion declare_srcregion;
|
%type <region> region region_wh indirectregion declare_srcregion;
|
||||||
%type <regtype> regtype
|
%type <regtype> regtype
|
||||||
%type <direct_reg> directgenreg directmsgreg addrreg accreg flagreg maskreg
|
%type <direct_reg> directgenreg directmsgreg addrreg accreg flagreg maskreg
|
||||||
%type <direct_reg> maskstackreg notifyreg
|
%type <direct_reg> maskstackreg notifyreg
|
||||||
/* %type <direct_reg> maskstackdepthreg */
|
/* %type <direct_reg> maskstackdepthreg */
|
||||||
%type <direct_reg> statereg controlreg ipreg nullreg
|
%type <direct_reg> statereg controlreg ipreg nullreg
|
||||||
%type <direct_reg> dstoperandex_typed srcarchoperandex_typed
|
%type <direct_reg> dstoperandex_typed srcarchoperandex_typed
|
||||||
@ -926,7 +926,7 @@ sendinstruction: predicate SEND execsize exp post_dst payload msgtarget
|
|||||||
memset(&$$, 0, sizeof($$));
|
memset(&$$, 0, sizeof($$));
|
||||||
$$.header.opcode = $2;
|
$$.header.opcode = $2;
|
||||||
$$.header.execution_size = $3;
|
$$.header.execution_size = $3;
|
||||||
$$.header.destreg__conditionalmod = $5.reg_nr; /* msg reg index */
|
$$.header.destreg__conditionalmod = $5.nr; /* msg reg index */
|
||||||
|
|
||||||
set_instruction_predicate(&$$, &$1);
|
set_instruction_predicate(&$$, &$1);
|
||||||
|
|
||||||
@ -949,7 +949,7 @@ sendinstruction: predicate SEND execsize exp post_dst payload msgtarget
|
|||||||
memset(&$$, 0, sizeof($$));
|
memset(&$$, 0, sizeof($$));
|
||||||
$$.header.opcode = $2;
|
$$.header.opcode = $2;
|
||||||
$$.header.execution_size = $3;
|
$$.header.execution_size = $3;
|
||||||
$$.header.destreg__conditionalmod = $5.reg_nr; /* msg reg index */
|
$$.header.destreg__conditionalmod = $5.nr; /* msg reg index */
|
||||||
|
|
||||||
set_instruction_predicate(&$$, &$1);
|
set_instruction_predicate(&$$, &$1);
|
||||||
if (set_instruction_dest(&$$, &$4) != 0)
|
if (set_instruction_dest(&$$, &$4) != 0)
|
||||||
@ -996,7 +996,7 @@ sendinstruction: predicate SEND execsize exp post_dst payload msgtarget
|
|||||||
src0.reg_type = BRW_REGISTER_TYPE_D;
|
src0.reg_type = BRW_REGISTER_TYPE_D;
|
||||||
}
|
}
|
||||||
|
|
||||||
src0.reg_nr = $5.reg_nr;
|
src0.reg_nr = $5.nr;
|
||||||
src0.subreg_nr = 0;
|
src0.subreg_nr = 0;
|
||||||
set_instruction_src0(&$$, &src0);
|
set_instruction_src0(&$$, &src0);
|
||||||
|
|
||||||
@ -1042,7 +1042,7 @@ sendinstruction: predicate SEND execsize exp post_dst payload msgtarget
|
|||||||
src0.reg_type = BRW_REGISTER_TYPE_D;
|
src0.reg_type = BRW_REGISTER_TYPE_D;
|
||||||
}
|
}
|
||||||
|
|
||||||
src0.reg_nr = $5.reg_nr;
|
src0.reg_nr = $5.nr;
|
||||||
src0.subreg_nr = 0;
|
src0.subreg_nr = 0;
|
||||||
set_instruction_src0(&$$, &src0);
|
set_instruction_src0(&$$, &src0);
|
||||||
|
|
||||||
@ -1060,7 +1060,7 @@ sendinstruction: predicate SEND execsize exp post_dst payload msgtarget
|
|||||||
memset(&$$, 0, sizeof($$));
|
memset(&$$, 0, sizeof($$));
|
||||||
$$.header.opcode = $2;
|
$$.header.opcode = $2;
|
||||||
$$.header.execution_size = $3;
|
$$.header.execution_size = $3;
|
||||||
$$.header.destreg__conditionalmod = $5.reg_nr; /* msg reg index */
|
$$.header.destreg__conditionalmod = $5.nr; /* msg reg index */
|
||||||
|
|
||||||
set_instruction_predicate(&$$, &$1);
|
set_instruction_predicate(&$$, &$1);
|
||||||
if (set_instruction_dest(&$$, &$4) != 0)
|
if (set_instruction_dest(&$$, &$4) != 0)
|
||||||
@ -1082,7 +1082,7 @@ sendinstruction: predicate SEND execsize exp post_dst payload msgtarget
|
|||||||
memset(&$$, 0, sizeof($$));
|
memset(&$$, 0, sizeof($$));
|
||||||
$$.header.opcode = $2;
|
$$.header.opcode = $2;
|
||||||
$$.header.execution_size = $3;
|
$$.header.execution_size = $3;
|
||||||
$$.header.destreg__conditionalmod = $5.reg_nr; /* msg reg index */
|
$$.header.destreg__conditionalmod = $5.nr; /* msg reg index */
|
||||||
|
|
||||||
set_instruction_predicate(&$$, &$1);
|
set_instruction_predicate(&$$, &$1);
|
||||||
|
|
||||||
@ -1582,45 +1582,45 @@ dstoperand: symbol_reg dstregion
|
|||||||
dstoperandex: dstoperandex_typed dstregion regtype
|
dstoperandex: dstoperandex_typed dstregion regtype
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = $1.reg_file;
|
$$.reg_file = $1.file;
|
||||||
$$.reg_nr = $1.reg_nr;
|
$$.reg_nr = $1.nr;
|
||||||
$$.subreg_nr = $1.subreg_nr;
|
$$.subreg_nr = $1.subnr;
|
||||||
$$.horiz_stride = $2;
|
$$.horiz_stride = $2;
|
||||||
$$.reg_type = $3.type;
|
$$.reg_type = $3.type;
|
||||||
}
|
}
|
||||||
| maskstackreg
|
| maskstackreg
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = $1.reg_file;
|
$$.reg_file = $1.file;
|
||||||
$$.reg_nr = $1.reg_nr;
|
$$.reg_nr = $1.nr;
|
||||||
$$.subreg_nr = $1.subreg_nr;
|
$$.subreg_nr = $1.subnr;
|
||||||
$$.horiz_stride = 1;
|
$$.horiz_stride = 1;
|
||||||
$$.reg_type = BRW_REGISTER_TYPE_UW;
|
$$.reg_type = BRW_REGISTER_TYPE_UW;
|
||||||
}
|
}
|
||||||
| controlreg
|
| controlreg
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = $1.reg_file;
|
$$.reg_file = $1.file;
|
||||||
$$.reg_nr = $1.reg_nr;
|
$$.reg_nr = $1.nr;
|
||||||
$$.subreg_nr = $1.subreg_nr;
|
$$.subreg_nr = $1.subnr;
|
||||||
$$.horiz_stride = 1;
|
$$.horiz_stride = 1;
|
||||||
$$.reg_type = BRW_REGISTER_TYPE_UD;
|
$$.reg_type = BRW_REGISTER_TYPE_UD;
|
||||||
}
|
}
|
||||||
| ipreg
|
| ipreg
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = $1.reg_file;
|
$$.reg_file = $1.file;
|
||||||
$$.reg_nr = $1.reg_nr;
|
$$.reg_nr = $1.nr;
|
||||||
$$.subreg_nr = $1.subreg_nr;
|
$$.subreg_nr = $1.subnr;
|
||||||
$$.horiz_stride = 1;
|
$$.horiz_stride = 1;
|
||||||
$$.reg_type = BRW_REGISTER_TYPE_UD;
|
$$.reg_type = BRW_REGISTER_TYPE_UD;
|
||||||
}
|
}
|
||||||
| nullreg dstregion regtype
|
| nullreg dstregion regtype
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = $1.reg_file;
|
$$.reg_file = $1.file;
|
||||||
$$.reg_nr = $1.reg_nr;
|
$$.reg_nr = $1.nr;
|
||||||
$$.subreg_nr = $1.subreg_nr;
|
$$.subreg_nr = $1.subnr;
|
||||||
$$.horiz_stride = $2;
|
$$.horiz_stride = $2;
|
||||||
$$.reg_type = $3.type;
|
$$.reg_type = $3.type;
|
||||||
}
|
}
|
||||||
@ -1689,17 +1689,17 @@ dstreg: directgenreg
|
|||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.address_mode = BRW_ADDRESS_DIRECT;
|
$$.address_mode = BRW_ADDRESS_DIRECT;
|
||||||
$$.reg_file = $1.reg_file;
|
$$.reg_file = $1.file;
|
||||||
$$.reg_nr = $1.reg_nr;
|
$$.reg_nr = $1.nr;
|
||||||
$$.subreg_nr = $1.subreg_nr;
|
$$.subreg_nr = $1.subnr;
|
||||||
}
|
}
|
||||||
| directmsgreg
|
| directmsgreg
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.address_mode = BRW_ADDRESS_DIRECT;
|
$$.address_mode = BRW_ADDRESS_DIRECT;
|
||||||
$$.reg_file = $1.reg_file;
|
$$.reg_file = $1.file;
|
||||||
$$.reg_nr = $1.reg_nr;
|
$$.reg_nr = $1.nr;
|
||||||
$$.subreg_nr = $1.subreg_nr;
|
$$.subreg_nr = $1.subnr;
|
||||||
}
|
}
|
||||||
| indirectgenreg
|
| indirectgenreg
|
||||||
{
|
{
|
||||||
@ -1809,10 +1809,10 @@ directsrcaccoperand: directsrcoperand
|
|||||||
srcarchoperandex: srcarchoperandex_typed region regtype
|
srcarchoperandex: srcarchoperandex_typed region regtype
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = $1.reg_file;
|
$$.reg_file = $1.file;
|
||||||
$$.reg_type = $3.type;
|
$$.reg_type = $3.type;
|
||||||
$$.subreg_nr = $1.subreg_nr;
|
$$.subreg_nr = $1.subnr;
|
||||||
$$.reg_nr = $1.reg_nr;
|
$$.reg_nr = $1.nr;
|
||||||
$$.vert_stride = $2.vert_stride;
|
$$.vert_stride = $2.vert_stride;
|
||||||
$$.width = $2.width;
|
$$.width = $2.width;
|
||||||
$$.horiz_stride = $2.horiz_stride;
|
$$.horiz_stride = $2.horiz_stride;
|
||||||
@ -1857,9 +1857,9 @@ srcarchoperandex_typed: flagreg | addrreg | maskreg
|
|||||||
sendleadreg: symbol_reg
|
sendleadreg: symbol_reg
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = $1.reg.file;
|
$$.file = $1.reg.file;
|
||||||
$$.reg_nr = $1.reg.nr;
|
$$.nr = $1.reg.nr;
|
||||||
$$.subreg_nr = $1.reg.subnr;
|
$$.subnr = $1.reg.subnr;
|
||||||
}
|
}
|
||||||
| directgenreg | directmsgreg
|
| directgenreg | directmsgreg
|
||||||
;
|
;
|
||||||
@ -1900,9 +1900,9 @@ directsrcoperand: negate abs symbol_reg region regtype
|
|||||||
else{
|
else{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.address_mode = BRW_ADDRESS_DIRECT;
|
$$.address_mode = BRW_ADDRESS_DIRECT;
|
||||||
$$.reg_file = $1.reg_file;
|
$$.reg_file = $1.file;
|
||||||
$$.reg_nr = $1.reg_nr;
|
$$.reg_nr = $1.nr;
|
||||||
$$.subreg_nr = $1.subreg_nr;
|
$$.subreg_nr = $1.subnr;
|
||||||
$$.vert_stride = $2.vert_stride;
|
$$.vert_stride = $2.vert_stride;
|
||||||
$$.width = $2.width;
|
$$.width = $2.width;
|
||||||
$$.horiz_stride = $2.horiz_stride;
|
$$.horiz_stride = $2.horiz_stride;
|
||||||
@ -1913,9 +1913,9 @@ directsrcoperand: negate abs symbol_reg region regtype
|
|||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.address_mode = BRW_ADDRESS_DIRECT;
|
$$.address_mode = BRW_ADDRESS_DIRECT;
|
||||||
$$.reg_file = $3.reg_file;
|
$$.reg_file = $3.file;
|
||||||
$$.reg_nr = $3.reg_nr;
|
$$.reg_nr = $3.nr;
|
||||||
$$.subreg_nr = $3.subreg_nr;
|
$$.subreg_nr = $3.subnr;
|
||||||
$$.reg_type = $5.type;
|
$$.reg_type = $5.type;
|
||||||
$$.vert_stride = $4.vert_stride;
|
$$.vert_stride = $4.vert_stride;
|
||||||
$$.width = $4.width;
|
$$.width = $4.width;
|
||||||
@ -1966,13 +1966,13 @@ addrparam: addrreg COMMA immaddroffset
|
|||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.address_subreg_nr = $1.subreg_nr;
|
$$.address_subreg_nr = $1.subnr;
|
||||||
$$.indirect_offset = $3;
|
$$.indirect_offset = $3;
|
||||||
}
|
}
|
||||||
| addrreg
|
| addrreg
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.address_subreg_nr = $1.subreg_nr;
|
$$.address_subreg_nr = $1.subnr;
|
||||||
$$.indirect_offset = 0;
|
$$.indirect_offset = 0;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@ -2000,9 +2000,9 @@ subregnum: DOT exp
|
|||||||
directgenreg: GENREG subregnum
|
directgenreg: GENREG subregnum
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_GENERAL_REGISTER_FILE;
|
$$.file = BRW_GENERAL_REGISTER_FILE;
|
||||||
$$.reg_nr = $1;
|
$$.nr = $1;
|
||||||
$$.subreg_nr = $2;
|
$$.subnr = $2;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2018,9 +2018,9 @@ indirectgenreg: GENREGFILE LSQUARE addrparam RSQUARE
|
|||||||
directmsgreg: MSGREG subregnum
|
directmsgreg: MSGREG subregnum
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_MESSAGE_REGISTER_FILE;
|
$$.file = BRW_MESSAGE_REGISTER_FILE;
|
||||||
$$.reg_nr = $1;
|
$$.nr = $1;
|
||||||
$$.subreg_nr = $2;
|
$$.subnr = $2;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2041,9 +2041,9 @@ addrreg: ADDRESSREG subregnum
|
|||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_ADDRESS | $1;
|
$$.nr = BRW_ARF_ADDRESS | $1;
|
||||||
$$.subreg_nr = $2;
|
$$.subnr = $2;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2055,9 +2055,9 @@ accreg: ACCREG subregnum
|
|||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_ACCUMULATOR | $1;
|
$$.nr = BRW_ARF_ACCUMULATOR | $1;
|
||||||
$$.subreg_nr = $2;
|
$$.subnr = $2;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2077,9 +2077,9 @@ flagreg: FLAGREG subregnum
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_FLAG | $1;
|
$$.nr = BRW_ARF_FLAG | $1;
|
||||||
$$.subreg_nr = $2;
|
$$.subnr = $2;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2091,16 +2091,16 @@ maskreg: MASKREG subregnum
|
|||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_MASK;
|
$$.nr = BRW_ARF_MASK;
|
||||||
$$.subreg_nr = $2;
|
$$.subnr = $2;
|
||||||
}
|
}
|
||||||
| mask_subreg
|
| mask_subreg
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_MASK;
|
$$.nr = BRW_ARF_MASK;
|
||||||
$$.subreg_nr = $1;
|
$$.subnr = $1;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2115,16 +2115,16 @@ maskstackreg: MASKSTACKREG subregnum
|
|||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_MASK_STACK;
|
$$.nr = BRW_ARF_MASK_STACK;
|
||||||
$$.subreg_nr = $2;
|
$$.subnr = $2;
|
||||||
}
|
}
|
||||||
| maskstack_subreg
|
| maskstack_subreg
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_MASK_STACK;
|
$$.nr = BRW_ARF_MASK_STACK;
|
||||||
$$.subreg_nr = $1;
|
$$.subnr = $1;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2168,14 +2168,14 @@ notifyreg: NOTIFYREG regtype
|
|||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
|
|
||||||
if (IS_GENp(6)) {
|
if (IS_GENp(6)) {
|
||||||
$$.reg_nr = BRW_ARF_NOTIFICATION_COUNT;
|
$$.nr = BRW_ARF_NOTIFICATION_COUNT;
|
||||||
$$.subreg_nr = $1;
|
$$.subnr = $1;
|
||||||
} else {
|
} else {
|
||||||
$$.reg_nr = BRW_ARF_NOTIFICATION_COUNT | $1;
|
$$.nr = BRW_ARF_NOTIFICATION_COUNT | $1;
|
||||||
$$.subreg_nr = 0;
|
$$.subnr = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -2208,9 +2208,9 @@ statereg: STATEREG subregnum
|
|||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_STATE | $1;
|
$$.nr = BRW_ARF_STATE | $1;
|
||||||
$$.subreg_nr = $2;
|
$$.subnr = $2;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2227,27 +2227,27 @@ controlreg: CONTROLREG subregnum
|
|||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_CONTROL | $1;
|
$$.nr = BRW_ARF_CONTROL | $1;
|
||||||
$$.subreg_nr = $2;
|
$$.subnr = $2;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
ipreg: IPREG regtype
|
ipreg: IPREG regtype
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_IP;
|
$$.nr = BRW_ARF_IP;
|
||||||
$$.subreg_nr = 0;
|
$$.subnr = 0;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
nullreg: NULL_TOKEN
|
nullreg: NULL_TOKEN
|
||||||
{
|
{
|
||||||
memset (&$$, '\0', sizeof ($$));
|
memset (&$$, '\0', sizeof ($$));
|
||||||
$$.reg_file = BRW_ARCHITECTURE_REGISTER_FILE;
|
$$.file = BRW_ARCHITECTURE_REGISTER_FILE;
|
||||||
$$.reg_nr = BRW_ARF_NULL;
|
$$.nr = BRW_ARF_NULL;
|
||||||
$$.subreg_nr = 0;
|
$$.subnr = 0;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2504,8 +2504,8 @@ predicate: /* empty */
|
|||||||
* set a predicate for one flag register and conditional
|
* set a predicate for one flag register and conditional
|
||||||
* modification on the other flag register.
|
* modification on the other flag register.
|
||||||
*/
|
*/
|
||||||
$$.bits2.da1.flag_reg_nr = ($3.reg_nr & 0xF);
|
$$.bits2.da1.flag_reg_nr = ($3.nr & 0xF);
|
||||||
$$.bits2.da1.flag_subreg_nr = $3.subreg_nr;
|
$$.bits2.da1.flag_subreg_nr = $3.subnr;
|
||||||
$$.header.predicate_inverse = $2;
|
$$.header.predicate_inverse = $2;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@ -2570,8 +2570,8 @@ conditionalmodifier: condition
|
|||||||
| condition DOT flagreg
|
| condition DOT flagreg
|
||||||
{
|
{
|
||||||
$$.cond = $1;
|
$$.cond = $1;
|
||||||
$$.flag_reg_nr = ($3.reg_nr & 0xF);
|
$$.flag_reg_nr = ($3.nr & 0xF);
|
||||||
$$.flag_subreg_nr = $3.subreg_nr;
|
$$.flag_subreg_nr = $3.subnr;
|
||||||
}
|
}
|
||||||
|
|
||||||
condition: /* empty */ { $$ = BRW_CONDITIONAL_NONE; }
|
condition: /* empty */ { $$ = BRW_CONDITIONAL_NONE; }
|
||||||
@ -3146,28 +3146,28 @@ void set_instruction_predicate(struct brw_instruction *instr,
|
|||||||
instr->bits2.da1.flag_subreg_nr = predicate->bits2.da1.flag_subreg_nr;
|
instr->bits2.da1.flag_subreg_nr = predicate->bits2.da1.flag_subreg_nr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_direct_dst_operand(struct dst_operand *dst, struct direct_reg *reg,
|
void set_direct_dst_operand(struct dst_operand *dst, struct brw_reg *reg,
|
||||||
int type)
|
int type)
|
||||||
{
|
{
|
||||||
memset(dst, 0, sizeof(*dst));
|
memset(dst, 0, sizeof(*dst));
|
||||||
dst->address_mode = BRW_ADDRESS_DIRECT;
|
dst->address_mode = BRW_ADDRESS_DIRECT;
|
||||||
dst->reg_file = reg->reg_file;
|
dst->reg_file = reg->file;
|
||||||
dst->reg_nr = reg->reg_nr;
|
dst->reg_nr = reg->nr;
|
||||||
dst->subreg_nr = reg->subreg_nr;
|
dst->subreg_nr = reg->subnr;
|
||||||
dst->reg_type = type;
|
dst->reg_type = type;
|
||||||
dst->horiz_stride = 1;
|
dst->horiz_stride = 1;
|
||||||
dst->writemask = BRW_WRITEMASK_XYZW;
|
dst->writemask = BRW_WRITEMASK_XYZW;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg,
|
void set_direct_src_operand(struct src_operand *src, struct brw_reg *reg,
|
||||||
int type)
|
int type)
|
||||||
{
|
{
|
||||||
memset(src, 0, sizeof(*src));
|
memset(src, 0, sizeof(*src));
|
||||||
src->address_mode = BRW_ADDRESS_DIRECT;
|
src->address_mode = BRW_ADDRESS_DIRECT;
|
||||||
src->reg_file = reg->reg_file;
|
src->reg_file = reg->file;
|
||||||
src->reg_type = type;
|
src->reg_type = type;
|
||||||
src->subreg_nr = reg->subreg_nr;
|
src->subreg_nr = reg->subnr;
|
||||||
src->reg_nr = reg->reg_nr;
|
src->reg_nr = reg->nr;
|
||||||
src->vert_stride = 0;
|
src->vert_stride = 0;
|
||||||
src->width = 0;
|
src->width = 0;
|
||||||
src->horiz_stride = 0;
|
src->horiz_stride = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user