gallivm: fix no-op n:n lp_build_resize()
[mesa.git] / src / glsl / glsl_lexer.ll
index 93752307da484b4f7cb8e7b8f215b3190bab22b2..760235127b89c77bc2158e4d0577adcd0d687e55 100644 (file)
@@ -38,8 +38,9 @@ static int classify_identifier(struct _mesa_glsl_parse_state *, const char *);
    do {                                                                \
       yylloc->source = 0;                                      \
       yylloc->first_column = yycolumn + 1;                     \
-      yylloc->first_line = yylineno + 1;                       \
+      yylloc->first_line = yylloc->last_line = yylineno + 1;   \
       yycolumn += yyleng;                                      \
+      yylloc->last_column = yycolumn + 1;                      \
    } while(0);
 
 #define YY_USER_INIT yylineno = 0; yycolumn = 0;
@@ -149,7 +150,7 @@ literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state,
 %option bison-bridge bison-locations reentrant noyywrap
 %option nounput noyy_top_state
 %option never-interactive
-%option prefix="_mesa_glsl_"
+%option prefix="_mesa_glsl_lexer_"
 %option extra-type="struct _mesa_glsl_parse_state *"
 
 %x PP PRAGMA
@@ -337,6 +338,52 @@ samplerExternalOES         {
                             return IDENTIFIER;
                }
 
+   /* keywords available with ARB_shader_image_load_store */
+image1D         KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1D);
+image2D         KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2D);
+image3D         KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE3D);
+image2DRect     KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DRECT);
+imageCube       KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBE);
+imageBuffer     KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGEBUFFER);
+image1DArray    KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY);
+image2DArray    KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY);
+imageCubeArray  KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY);
+image2DMS       KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS);
+image2DMSArray  KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY);
+iimage1D        KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1D);
+iimage2D        KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2D);
+iimage3D        KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE3D);
+iimage2DRect    KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DRECT);
+iimageCube      KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBE);
+iimageBuffer    KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGEBUFFER);
+iimage1DArray   KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY);
+iimage2DArray   KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY);
+iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY);
+iimage2DMS      KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS);
+iimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY);
+uimage1D        KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1D);
+uimage2D        KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2D);
+uimage3D        KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE3D);
+uimage2DRect    KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DRECT);
+uimageCube      KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBE);
+uimageBuffer    KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGEBUFFER);
+uimage1DArray   KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY);
+uimage2DArray   KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY);
+uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY);
+uimage2DMS      KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS);
+uimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY);
+image1DShadow           KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW);
+image2DShadow           KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW);
+image1DArrayShadow      KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW);
+image2DArrayShadow      KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW);
+
+coherent       KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, COHERENT);
+volatile       KEYWORD_WITH_ALT(110, 100, 420, 0, yyextra->ARB_shader_image_load_store_enable, VOLATILE);
+restrict       KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, RESTRICT);
+readonly       KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, READONLY);
+writeonly      KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, WRITEONLY);
+
+atomic_uint     KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT);
 
 struct         return STRUCT;
 void           return VOID_TOK;
@@ -346,9 +393,11 @@ layout             {
                      || yyextra->AMD_conservative_depth_enable
                      || yyextra->ARB_conservative_depth_enable
                      || yyextra->ARB_explicit_attrib_location_enable
+                      || yyextra->has_separate_shader_objects()
                      || yyextra->ARB_uniform_buffer_object_enable
                      || yyextra->ARB_fragment_coord_conventions_enable
-                      || yyextra->ARB_shading_language_420pack_enable) {
+                      || yyextra->ARB_shading_language_420pack_enable
+                      || yyextra->ARB_compute_shader_enable) {
                      return LAYOUT_TOK;
                   } else {
                      yylval->identifier = strdup(yytext);
@@ -434,7 +483,6 @@ switch              KEYWORD(110, 100, 130, 300, SWITCH);
 default                KEYWORD(110, 100, 130, 300, DEFAULT);
 inline         KEYWORD(110, 100, 0, 0, INLINE_TOK);
 noinline       KEYWORD(110, 100, 0, 0, NOINLINE);
-volatile       KEYWORD(110, 100, 0, 0, VOLATILE);
 public         KEYWORD(110, 100, 0, 0, PUBLIC_TOK);
 static         KEYWORD(110, 100, 0, 0, STATIC);
 extern         KEYWORD(110, 100, 0, 0, EXTERN);
@@ -479,31 +527,6 @@ active             KEYWORD(130, 300, 0, 0, ACTIVE);
 superp         KEYWORD(130, 100, 0, 0, SUPERP);
 samplerBuffer  KEYWORD(130, 300, 140, 0, SAMPLERBUFFER);
 filter         KEYWORD(130, 300, 0, 0, FILTER);
-image1D                KEYWORD(130, 300, 0, 0, IMAGE1D);
-image2D                KEYWORD(130, 300, 0, 0, IMAGE2D);
-image3D                KEYWORD(130, 300, 0, 0, IMAGE3D);
-imageCube      KEYWORD(130, 300, 0, 0, IMAGECUBE);
-iimage1D       KEYWORD(130, 300, 0, 0, IIMAGE1D);
-iimage2D       KEYWORD(130, 300, 0, 0, IIMAGE2D);
-iimage3D       KEYWORD(130, 300, 0, 0, IIMAGE3D);
-iimageCube     KEYWORD(130, 300, 0, 0, IIMAGECUBE);
-uimage1D       KEYWORD(130, 300, 0, 0, UIMAGE1D);
-uimage2D       KEYWORD(130, 300, 0, 0, UIMAGE2D);
-uimage3D       KEYWORD(130, 300, 0, 0, UIMAGE3D);
-uimageCube     KEYWORD(130, 300, 0, 0, UIMAGECUBE);
-image1DArray   KEYWORD(130, 300, 0, 0, IMAGE1DARRAY);
-image2DArray   KEYWORD(130, 300, 0, 0, IMAGE2DARRAY);
-iimage1DArray  KEYWORD(130, 300, 0, 0, IIMAGE1DARRAY);
-iimage2DArray  KEYWORD(130, 300, 0, 0, IIMAGE2DARRAY);
-uimage1DArray  KEYWORD(130, 300, 0, 0, UIMAGE1DARRAY);
-uimage2DArray  KEYWORD(130, 300, 0, 0, UIMAGE2DARRAY);
-image1DShadow  KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW);
-image2DShadow  KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW);
-image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW);
-image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW);
-imageBuffer    KEYWORD(130, 300, 0, 0, IMAGEBUFFER);
-iimageBuffer   KEYWORD(130, 300, 0, 0, IIMAGEBUFFER);
-uimageBuffer   KEYWORD(130, 300, 0, 0, UIMAGEBUFFER);
 row_major      KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR);
 
     /* Additional reserved words in GLSL 1.40 */
@@ -513,14 +536,9 @@ isamplerBuffer     KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER);
 usamplerBuffer KEYWORD(140, 300, 140, 0, USAMPLERBUFFER);
 
     /* Additional reserved words in GLSL ES 3.00 */
-coherent       KEYWORD(0, 300, 0, 0, COHERENT);
-restrict       KEYWORD(0, 300, 0, 0, RESTRICT);
-readonly       KEYWORD(0, 300, 0, 0, READONLY);
-writeonly      KEYWORD(0, 300, 0, 0, WRITEONLY);
 resource       KEYWORD(0, 300, 0, 0, RESOURCE);
-atomic_uint    KEYWORD(0, 300, 0, 0, ATOMIC_UINT);
 patch          KEYWORD(0, 300, 0, 0, PATCH);
-sample         KEYWORD(0, 300, 0, 0, SAMPLE);
+sample         KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE);
 subroutine     KEYWORD(0, 300, 0, 0, SUBROUTINE);