Skip to content

Commit ee6413f

Browse files
trbauersys_zuul
authored andcommitted
- vISA syntax enables more identifier (VAR), which
used to be lexical keywords such as "byte", "word",... (align tokens) "M1", "M1_NM" ... We do this by parsing such things as VAR and then checking the result We need this since we plumb LLVM names down to vISA - Adds better error checking and ability of parser to return to caller without asserting; e.g. MUST_HOLD macro now calls parser error and then calls YYABORT; caller driver reports error and exit(3)'s cleanly. - Some reformatting of enormously long lines and added consistency - Added const to a bunch of char *'s that are never modified Change-Id: Ie089a4af89d7ae9cdf14b13e5b3771932dc37650
1 parent d27c900 commit ee6413f

File tree

7 files changed

+1321
-1058
lines changed

7 files changed

+1321
-1058
lines changed

visa/BuildCISAIR.h

Lines changed: 545 additions & 463 deletions
Large diffs are not rendered by default.

visa/BuildCISAIRImpl.cpp

Lines changed: 615 additions & 454 deletions
Large diffs are not rendered by default.

visa/CISA.l

Lines changed: 19 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ static OutputFormatControl avs_control(const char* str);
6060
static AVSExecMode avsExecMode(const char* str);
6161
static unsigned char FENCEOptions(const char *str);
6262
static COMMON_ISA_VME_OP_MODE VMEType(const char *str);
63-
static VISA_EMask_Ctrl Get_CISA_Emask(const char* str);
6463
static CHANNEL_OUTPUT_FORMAT Get_Channel_Output(const char* str);
6564
static void appendStringLiteralChar(char c, char *buf, size_t *len);
6665

@@ -698,37 +697,37 @@ alias[ ]*=[ ]* {TRACE("\n** ALIAS "); return ALIAS;}
698697

699698

700699
v_type[ ]*=[ ]*F {
701-
TRACE("\n** General variable type");
700+
TRACE("\n** General variable type ");
702701
CISAlval.string = strdup(yytext);
703702
return F_CLASS;
704703
}
705704

706705
v_type[ ]*=[ ]*G {
707-
TRACE("\n** General variable type");
706+
TRACE("\n** General variable type ");
708707
CISAlval.string = strdup(yytext);
709708
return G_CLASS;
710709
}
711710

712711
v_type[ ]*=[ ]*A {
713-
TRACE("\n** Address variable type");
712+
TRACE("\n** Address variable type ");
714713
CISAlval.string = strdup(yytext);
715714
return A_CLASS;
716715
}
717716

718717
v_type[ ]*=[ ]*P {
719-
TRACE("\n** Predicate variable type");
718+
TRACE("\n** Predicate variable type ");
720719
CISAlval.string = strdup(yytext);
721720
return P_CLASS;
722721
}
723722

724723
v_type[ ]*=[ ]*S {
725-
TRACE("\n** Sampler variable type");
724+
TRACE("\n** Sampler variable type ");
726725
CISAlval.string = strdup(yytext);
727726
return S_CLASS;
728727
}
729728

730729
v_type[ ]*=[ ]*T {
731-
TRACE("\n** Surface variable type");
730+
TRACE("\n** Surface variable type ");
732731
CISAlval.string = strdup(yytext);
733732
return T_CLASS;
734733
}
@@ -739,37 +738,18 @@ type[ ]*=[ ]*(ud|d|uw|w|ub|b|df|f|bool|uq|q|UD|D|UW|W|UB|B|DF|F|Bool|BOOL|UQ|Q|h
739738
return DECL_DATA_TYPE;
740739
}
741740

741+
2GRF {
742+
/* other cases are handled as VAR */
743+
TRACE("\n** AlignType - 2GRF ");
744+
CISAlval.align = ALIGN_2_GRF;
745+
// fprintf(stderr, "%s", "2GRF symbol is deprecated; please use GRFx2");
746+
return ALIGNTYPE_2GRF;
747+
}
742748

743-
byte|word|dword|qword|oword|GRF|2GRF {
744-
//------- Align Support in Declaration -------------
745-
TRACE("\n** AlignType ");
746-
if (strcmp(yytext, "byte") == 0)
747-
CISAlval.align = ALIGN_BYTE;
748-
if (strcmp(yytext, "word") == 0)
749-
CISAlval.align = ALIGN_WORD;
750-
else if (strcmp(yytext, "dword") == 0)
751-
CISAlval.align = ALIGN_DWORD;
752-
else if (strcmp(yytext, "qword") == 0)
753-
CISAlval.align = ALIGN_QWORD;
754-
else if (strcmp(yytext, "oword") == 0)
755-
CISAlval.align = ALIGN_OWORD;
756-
else if (strcmp(yytext, "GRF") == 0)
757-
CISAlval.align = ALIGN_GRF;
758-
else if (strcmp(yytext, "2GRF") == 0)
759-
CISAlval.align = ALIGN_2_GRF;
760-
else
761-
CISAlval.align = ALIGN_UNDEF;
762-
763-
return ALIGNTYPE;
764-
}
765-
766-
M1|M2|M3|M4|M5|M6|M7|M8|M1_NM|M2_NM|M3_NM|M4_NM|M5_NM|M6_NM|M7_NM|M8_NM|NoMask {
767-
TRACE("\n** EMASK control ");
768-
CISAlval.emask = Get_CISA_Emask(yytext);
769-
return EMASK;
770-
}
771-
772-
"abs" {TRACE("\n** ABS "); return ABS;}
749+
"(-)" {TRACE("\n** SRCMOD_NEG "); return SRCMOD_NEG;}
750+
"(abs)" {TRACE("\n** SRCMOD_ABS "); return SRCMOD_ABS;}
751+
"(-abs)" {TRACE("\n** SRCMOD_NEGABS "); return SRCMOD_NEGABS;}
752+
"(~)" {TRACE("\n** SRCMOD_NOT "); return SRCMOD_NOT;}
773753

774754
".sat" {TRACE("\n** SAT "); return SAT;}
775755

@@ -818,11 +798,6 @@ M1|M2|M3|M4|M5|M6|M7|M8|M1_NM|M2_NM|M3_NM|M4_NM|M5_NM|M6_NM|M7_NM|M8_NM|NoMask {
818798
CISAlval.type = str2type(yytext, yyleng);
819799
return ITYPE;
820800
}
821-
(ud|d|uw|w|ub|b|bool|UD|D|UW|W|UB|B|BOOL|Bool|f|F|q|uq|Q|UQ|hf|HF) {
822-
TRACE("\n** RETURN TYPE ");
823-
CISAlval.type = str2type(yytext, yyleng);
824-
return RETURN_TYPE;
825-
}
826801

827802
:(v|vf|V|VF|uv) {
828803
TRACE("\n** VTYPE ");
@@ -877,7 +852,7 @@ V0 {
877852
}
878853

879854
%[[:alpha:]_][[:alnum:]_]* {
880-
TRACE("\n** Predefined Var");
855+
TRACE("\n** Predefined Var ");
881856
CISAlval.string = strdup(yytext);
882857
return VAR;
883858
}
@@ -1106,28 +1081,11 @@ static COMMON_ISA_VME_OP_MODE VMEType(const char* str)
11061081
if (!strcmp(vme_op_mode_str[i], str))
11071082
return (COMMON_ISA_VME_OP_MODE)i;
11081083

1109-
YY_FATAL_ERROR("Invalid Medial Mode");
1084+
YY_FATAL_ERROR("Invalid Media Mode");
11101085

11111086
return VME_OP_MODE_NUM;
11121087
}
11131088

1114-
static VISA_EMask_Ctrl Get_CISA_Emask(const char* str)
1115-
{
1116-
if(strcmp(str, "NoMask") == 0)
1117-
return vISA_EMASK_M1_NM;
1118-
for (int i = 0; i < vISA_NUM_EMASK +1; i++)
1119-
{
1120-
if (!strcmp(emask_str[i], str))
1121-
{
1122-
return (VISA_EMask_Ctrl)i;
1123-
}
1124-
}
1125-
1126-
YY_FATAL_ERROR("Invalid emask ");
1127-
YY_FATAL_ERROR(str);
1128-
return vISA_EMASK_M1;
1129-
}
1130-
11311089
static CHANNEL_OUTPUT_FORMAT Get_Channel_Output(const char* str)
11321090
{
11331091
for (int i = 0; i < CHANNEL_OUTPUT_NUM; i++)

0 commit comments

Comments
 (0)