target/hexagon/idef-parser: Remove unused code paths

Removes code paths used by COF instructions, which are no longer
processed by idef-parser.

Tested-by: Taylor Simpson <tsimpson@quicinc.com>
Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
Signed-off-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20230131223133.8592-1-anjo@rev.ng>
This commit is contained in:
Anton Johansson 2023-03-06 19:25:56 -08:00 committed by Taylor Simpson
parent 877a3d20cd
commit bbb71568de
5 changed files with 4 additions and 80 deletions

View File

@ -82,7 +82,6 @@ enum ImmUnionTag {
VALUE, VALUE,
QEMU_TMP, QEMU_TMP,
IMM_PC, IMM_PC,
IMM_NPC,
IMM_CONSTEXT, IMM_CONSTEXT,
}; };

View File

@ -140,8 +140,6 @@ STRING_LIT \"(\\.|[^"\\])*\"
yylval->rvalue.is_dotnew = true; yylval->rvalue.is_dotnew = true;
yylval->rvalue.signedness = SIGNED; yylval->rvalue.signedness = SIGNED;
return PRED; } return PRED; }
"IV1DEAD()" |
"fPAUSE(uiV);" { return ';'; }
"+=" { return INC; } "+=" { return INC; }
"-=" { return DEC; } "-=" { return DEC; }
"++" { return PLUSPLUS; } "++" { return PLUSPLUS; }
@ -159,9 +157,8 @@ STRING_LIT \"(\\.|[^"\\])*\"
"else" { return ELSE; } "else" { return ELSE; }
"for" { return FOR; } "for" { return FOR; }
"fREAD_IREG" { return ICIRC; } "fREAD_IREG" { return ICIRC; }
"fPART1" { return PART1; }
"if" { return IF; } "if" { return IF; }
"fFRAME_SCRAMBLE" { return FSCR; } "fFRAME_SCRAMBLE" |
"fFRAME_UNSCRAMBLE" { return FSCR; } "fFRAME_UNSCRAMBLE" { return FSCR; }
"fFRAMECHECK" { return FCHK; } "fFRAMECHECK" { return FCHK; }
"Constant_extended" { return CONSTEXT; } "Constant_extended" { return CONSTEXT; }
@ -312,11 +309,7 @@ STRING_LIT \"(\\.|[^"\\])*\"
"(unsigned int)" { yylval->cast.bit_width = 32; "(unsigned int)" { yylval->cast.bit_width = 32;
yylval->cast.signedness = UNSIGNED; yylval->cast.signedness = UNSIGNED;
return CAST; } return CAST; }
"fREAD_PC()" | "fREAD_PC()" { return PC; }
"PC" { return PC; }
"fREAD_NPC()" |
"NPC" { return NPC; }
"fGET_LPCFG" |
"USR.LPCFG" { return LPCFG; } "USR.LPCFG" { return LPCFG; }
"LOAD_CANCEL(EA)" { return LOAD_CANCEL; } "LOAD_CANCEL(EA)" { return LOAD_CANCEL; }
"STORE_CANCEL(EA)" | "STORE_CANCEL(EA)" |
@ -360,14 +353,6 @@ STRING_LIT \"(\\.|[^"\\])*\"
yylval->rvalue.bit_width = 32; yylval->rvalue.bit_width = 32;
yylval->rvalue.signedness = UNSIGNED; yylval->rvalue.signedness = UNSIGNED;
return REG; } return REG; }
"fREAD_LC"[01] { yylval->rvalue.type = REGISTER;
yylval->rvalue.reg.type = CONTROL;
yylval->rvalue.reg.id = HEX_REG_LC0
+ (yytext[8] - '0') * 2;
yylval->rvalue.reg.bit_width = 32;
yylval->rvalue.bit_width = 32;
yylval->rvalue.signedness = UNSIGNED;
return REG; }
"LC"[01] { yylval->rvalue.type = REGISTER; "LC"[01] { yylval->rvalue.type = REGISTER;
yylval->rvalue.reg.type = CONTROL; yylval->rvalue.reg.type = CONTROL;
yylval->rvalue.reg.id = HEX_REG_LC0 yylval->rvalue.reg.id = HEX_REG_LC0
@ -376,14 +361,6 @@ STRING_LIT \"(\\.|[^"\\])*\"
yylval->rvalue.bit_width = 32; yylval->rvalue.bit_width = 32;
yylval->rvalue.signedness = UNSIGNED; yylval->rvalue.signedness = UNSIGNED;
return REG; } return REG; }
"fREAD_SA"[01] { yylval->rvalue.type = REGISTER;
yylval->rvalue.reg.type = CONTROL;
yylval->rvalue.reg.id = HEX_REG_SA0
+ (yytext[8] - '0') * 2;
yylval->rvalue.reg.bit_width = 32;
yylval->rvalue.bit_width = 32;
yylval->rvalue.signedness = UNSIGNED;
return REG; }
"SA"[01] { yylval->rvalue.type = REGISTER; "SA"[01] { yylval->rvalue.type = REGISTER;
yylval->rvalue.reg.type = CONTROL; yylval->rvalue.reg.type = CONTROL;
yylval->rvalue.reg.id = HEX_REG_SA0 yylval->rvalue.reg.id = HEX_REG_SA0

View File

@ -52,8 +52,8 @@
%token IN INAME VAR %token IN INAME VAR
%token ABS CROUND ROUND CIRCADD COUNTONES INC DEC ANDA ORA XORA PLUSPLUS ASL %token ABS CROUND ROUND CIRCADD COUNTONES INC DEC ANDA ORA XORA PLUSPLUS ASL
%token ASR LSR EQ NEQ LTE GTE MIN MAX ANDL FOR ICIRC IF MUN FSCR FCHK SXT %token ASR LSR EQ NEQ LTE GTE MIN MAX ANDL FOR ICIRC IF MUN FSCR FCHK SXT
%token ZXT CONSTEXT LOCNT BREV SIGN LOAD STORE PC NPC LPCFG %token ZXT CONSTEXT LOCNT BREV SIGN LOAD STORE PC LPCFG
%token LOAD_CANCEL CANCEL IDENTITY PART1 ROTL INSBITS SETBITS EXTRANGE %token LOAD_CANCEL CANCEL IDENTITY ROTL INSBITS SETBITS EXTRANGE
%token CAST4_8U FAIL CARRY_FROM_ADD ADDSAT64 LSBNEW %token CAST4_8U FAIL CARRY_FROM_ADD ADDSAT64 LSBNEW
%token TYPE_SIZE_T TYPE_INT TYPE_SIGNED TYPE_UNSIGNED TYPE_LONG %token TYPE_SIZE_T TYPE_INT TYPE_SIGNED TYPE_UNSIGNED TYPE_LONG
@ -336,15 +336,6 @@ assign_statement : lvalue '=' rvalue
OUT(c, &@1, &$1, " = ", &$3, ";\n"); OUT(c, &@1, &$1, " = ", &$3, ";\n");
$$ = $1; $$ = $1;
} }
| PC '=' rvalue
{
@1.last_column = @3.last_column;
yyassert(c, &@1, !is_inside_ternary(c),
"Assignment side-effect not modeled!");
$3 = gen_rvalue_truncate(c, &@1, &$3);
$3 = rvalue_materialize(c, &@1, &$3);
OUT(c, &@1, "gen_write_new_pc(", &$3, ");\n");
}
| LOAD '(' IMM ',' IMM ',' SIGN ',' var ',' lvalue ')' | LOAD '(' IMM ',' IMM ',' SIGN ',' var ',' lvalue ')'
{ {
@1.last_column = @12.last_column; @1.last_column = @12.last_column;
@ -412,7 +403,6 @@ control_statement : frame_check
| cancel_statement | cancel_statement
| if_statement | if_statement
| for_statement | for_statement
| fpart1_statement
; ;
frame_check : FCHK '(' rvalue ',' rvalue ')' ';' frame_check : FCHK '(' rvalue ',' rvalue ')' ';'
@ -462,17 +452,6 @@ for_statement : FOR '(' IMM '=' IMM ';' IMM '<' IMM ';' IMM PLUSPLUS ')'
} }
; ;
fpart1_statement : PART1
{
OUT(c, &@1, "if (insn->part1) {\n");
}
'(' statements ')'
{
@1.last_column = @3.last_column;
OUT(c, &@1, "return; }\n");
}
;
if_stmt : IF '(' rvalue ')' if_stmt : IF '(' rvalue ')'
{ {
@1.last_column = @3.last_column; @1.last_column = @3.last_column;
@ -512,20 +491,6 @@ rvalue : FAIL
rvalue.signedness = UNSIGNED; rvalue.signedness = UNSIGNED;
$$ = rvalue; $$ = rvalue;
} }
| NPC
{
/*
* NPC is only read from CALLs, so we can hardcode it
* at translation time
*/
HexValue rvalue;
memset(&rvalue, 0, sizeof(HexValue));
rvalue.type = IMMEDIATE;
rvalue.imm.type = IMM_NPC;
rvalue.bit_width = 32;
rvalue.signedness = UNSIGNED;
$$ = rvalue;
}
| CONSTEXT | CONSTEXT
{ {
HexValue rvalue; HexValue rvalue;
@ -781,11 +746,6 @@ rvalue : FAIL
/* Ones count */ /* Ones count */
$$ = gen_ctpop_op(c, &@1, &$3); $$ = gen_ctpop_op(c, &@1, &$3);
} }
| LPCFG
{
$$ = gen_tmp(c, &@1, 32, UNSIGNED);
OUT(c, &@1, "GET_USR_FIELD(USR_LPCFG, ", &$$, ");\n");
}
| EXTRACT '(' rvalue ',' rvalue ')' | EXTRACT '(' rvalue ',' rvalue ')'
{ {
@1.last_column = @6.last_column; @1.last_column = @6.last_column;

View File

@ -97,16 +97,8 @@
#define fWRITE_LR(A) (LR = A) #define fWRITE_LR(A) (LR = A)
#define fWRITE_FP(A) (FP = A) #define fWRITE_FP(A) (FP = A)
#define fWRITE_SP(A) (SP = A) #define fWRITE_SP(A) (SP = A)
/*
* Note: There is a rule in the parser that matches `PC = ...` and emits
* a call to `gen_write_new_pc`. We need to call `gen_write_new_pc` to
* get the correct semantics when there are multiple stores in a packet.
*/
#define fBRANCH(LOC, TYPE) (PC = LOC)
#define fJUMPR(REGNO, TARGET, TYPE) (PC = TARGET)
#define fWRITE_LOOP_REGS0(START, COUNT) SA0 = START; (LC0 = COUNT) #define fWRITE_LOOP_REGS0(START, COUNT) SA0 = START; (LC0 = COUNT)
#define fWRITE_LOOP_REGS1(START, COUNT) SA1 = START; (LC1 = COUNT) #define fWRITE_LOOP_REGS1(START, COUNT) SA1 = START; (LC1 = COUNT)
#define fWRITE_LC0(VAL) (LC0 = VAL)
#define fWRITE_LC1(VAL) (LC1 = VAL) #define fWRITE_LC1(VAL) (LC1 = VAL)
#define fSET_LPCFG(VAL) (USR.LPCFG = VAL) #define fSET_LPCFG(VAL) (USR.LPCFG = VAL)
#define fWRITE_P0(VAL) P0 = VAL; #define fWRITE_P0(VAL) P0 = VAL;
@ -121,7 +113,6 @@
#define fEA_GPI(IMM) (EA = fREAD_GP() + IMM) #define fEA_GPI(IMM) (EA = fREAD_GP() + IMM)
#define fPM_I(REG, IMM) (REG = REG + IMM) #define fPM_I(REG, IMM) (REG = REG + IMM)
#define fPM_M(REG, MVAL) (REG = REG + MVAL) #define fPM_M(REG, MVAL) (REG = REG + MVAL)
#define fWRITE_NPC(VAL) (PC = VAL)
/* Unary operators */ /* Unary operators */
#define fROUND(A) (A + 0x8000) #define fROUND(A) (A + 0x8000)

View File

@ -185,9 +185,6 @@ void imm_print(Context *c, YYLTYPE *locp, HexImm *imm)
case IMM_PC: case IMM_PC:
EMIT(c, "ctx->base.pc_next"); EMIT(c, "ctx->base.pc_next");
break; break;
case IMM_NPC:
EMIT(c, "ctx->npc");
break;
case IMM_CONSTEXT: case IMM_CONSTEXT:
EMIT(c, "insn->extension_valid"); EMIT(c, "insn->extension_valid");
break; break;