diff --git a/src/freedreno/afuc/asm.h b/src/freedreno/afuc/asm.h index 0b5b8a01735..d7d1d9a3b30 100644 --- a/src/freedreno/afuc/asm.h +++ b/src/freedreno/afuc/asm.h @@ -94,15 +94,6 @@ parse_bit(const char *str) unsigned parse_control_reg(const char *name); unsigned parse_sqe_reg(const char *name); -/* string trailing ':' off label: */ -static inline const char * -parse_label_decl(const char *str) -{ - char *s = strdup(str); - s[strlen(s) - 1] = '\0'; - return s; -} - void yyset_in(FILE *_in_str); #endif /* _ASM_H_ */ diff --git a/src/freedreno/afuc/lexer.l b/src/freedreno/afuc/lexer.l index 9adf8741f5f..6856443aa0e 100644 --- a/src/freedreno/afuc/lexer.l +++ b/src/freedreno/afuc/lexer.l @@ -48,8 +48,7 @@ extern YYSTYPE yylval; "b"[0-9][0-9]* yylval.num = parse_bit(yytext); return T_BIT; "@"[a-zA-Z_][a-zA-Z0-9_]* yylval.num = parse_control_reg(yytext); return T_CONTROL_REG; "%"[a-zA-Z_][a-zA-Z0-9_]* yylval.num = parse_sqe_reg(yytext); return T_SQE_REG; -"#"[a-zA-Z_][a-zA-Z0-9_]* yylval.str = strdup(yytext+1); return T_LABEL_REF; /* label reference */ -[a-zA-Z_][a-zA-Z0-9_]*":" yylval.str = parse_label_decl(yytext); return T_LABEL_DECL; /* label declaration */ +"#"[a-zA-Z_][a-zA-Z0-9_]* yylval.str = strdup(yytext+1); return T_LABEL_REF; "["[0-9a-fA-F][0-9a-fA-F]*"]" yylval.num = parse_literal(yytext); return T_LITERAL; /* instructions: */ @@ -106,6 +105,9 @@ extern YYSTYPE yylval; "]" return ']'; "+" return '+'; "!" return '!'; +":" return ':'; + +[a-zA-Z_][a-zA-Z0-9_]* yylval.str = strdup(yytext); return T_IDENTIFIER; . fprintf(stderr, "error at line %d: Unknown token: %s\n", yyget_lineno(), yytext); yyterminate(); diff --git a/src/freedreno/afuc/parser.y b/src/freedreno/afuc/parser.y index fbba055319a..18c7b3a3e16 100644 --- a/src/freedreno/afuc/parser.y +++ b/src/freedreno/afuc/parser.y @@ -122,11 +122,11 @@ label(const char *str) %token T_HEX %token T_CONTROL_REG %token T_SQE_REG -%token T_LABEL_DECL %token T_LABEL_REF %token T_LITERAL %token T_BIT %token T_REGISTER +%token T_IDENTIFIER %token T_OP_NOP %token T_OP_ADD @@ -194,7 +194,7 @@ instr_or_label: instr_r | T_REP instr_r { instr->rep = true; } | branch_instr | other_instr -| T_LABEL_DECL { decl_label($1); } +| T_IDENTIFIER ':' { decl_label($1); } | T_ALIGN immediate { align_instr($2); } | T_JUMPTBL { decl_jumptbl(); }