mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-27 09:46:28 +00:00
add support for math instruction on Sandybridge
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
This commit is contained in:
parent
f1f5208e1e
commit
5405532ffc
@ -584,6 +584,7 @@
|
||||
#define BRW_OPCODE_POP 47
|
||||
#define BRW_OPCODE_WAIT 48
|
||||
#define BRW_OPCODE_SEND 49
|
||||
#define BRW_OPCODE_MATH 56
|
||||
#define BRW_OPCODE_ADD 64
|
||||
#define BRW_OPCODE_MUL 65
|
||||
#define BRW_OPCODE_AVG 66
|
||||
|
@ -104,6 +104,7 @@ void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg,
|
||||
%token <integer> AVG ADD SEL AND OR XOR SHR SHL ASR CMP CMPN PLN
|
||||
%token <integer> SEND NOP JMPI IF IFF WHILE ELSE BREAK CONT HALT MSAVE
|
||||
%token <integer> PUSH MREST POP WAIT DO ENDIF ILLEGAL
|
||||
%token <integer> MATH_INST
|
||||
|
||||
%token NULL_TOKEN MATH SAMPLER GATEWAY READ WRITE URB THREAD_SPAWNER
|
||||
|
||||
@ -128,6 +129,7 @@ void set_direct_src_operand(struct src_operand *src, struct direct_reg *reg,
|
||||
%type <instruction> breakinstruction syncinstruction specialinstruction
|
||||
%type <instruction> msgtarget
|
||||
%type <instruction> instoptions instoption_list predicate
|
||||
%type <instruction> mathinstruction
|
||||
%type <string> label
|
||||
%type <program> instrseq
|
||||
%type <integer> instoption
|
||||
@ -235,6 +237,7 @@ instruction: unaryinstruction
|
||||
| breakinstruction
|
||||
| syncinstruction
|
||||
| specialinstruction
|
||||
| mathinstruction
|
||||
;
|
||||
|
||||
unaryinstruction:
|
||||
@ -483,6 +486,23 @@ elseinstruction: ELSE relativelocation
|
||||
}
|
||||
;
|
||||
|
||||
mathinstruction: predicate MATH_INST execsize dst src srcimm math_function instoptions
|
||||
{
|
||||
bzero(&$$, sizeof($$));
|
||||
$$.header.opcode = $2;
|
||||
$$.header.sfid_destreg__conditionalmod = $7;
|
||||
$$.header.execution_size = $3;
|
||||
set_instruction_options(&$$, &$8);
|
||||
set_instruction_predicate(&$$, &$1);
|
||||
if (set_instruction_dest(&$$, &$4) != 0)
|
||||
YYERROR;
|
||||
if (set_instruction_src0(&$$, &$5) != 0)
|
||||
YYERROR;
|
||||
if (set_instruction_src1(&$$, &$6) != 0)
|
||||
YYERROR;
|
||||
}
|
||||
;
|
||||
|
||||
breakinstruction: breakop locationstackcontrol
|
||||
{
|
||||
struct direct_reg dst;
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include "string.h"
|
||||
int saved_state = 0;
|
||||
extern char *input_filename;
|
||||
|
||||
extern long int gen_level;
|
||||
%}
|
||||
%x BLOCK_COMMENT
|
||||
%x LINENUMBER
|
||||
@ -101,7 +101,7 @@ extern char *input_filename;
|
||||
/* send argument tokens */
|
||||
"mlen" { return MSGLEN; }
|
||||
"rlen" { return RETURNLEN; }
|
||||
"math" { return MATH; }
|
||||
"math" { if (gen_level >= 6) { yylval.integer = BRW_OPCODE_MATH; return MATH_INST; } else return MATH; }
|
||||
"sampler" { return SAMPLER; }
|
||||
"gateway" { return GATEWAY; }
|
||||
"read" { return READ; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user