Merge branch 'mesa_7_6_branch' of git+ssh://agd5f@git.freedesktop.org/git/mesa/mesa
authorAlex Deucher <alexdeucher@gmail.com>
Mon, 19 Oct 2009 16:10:59 +0000 (12:10 -0400)
committerAlex Deucher <alexdeucher@gmail.com>
Mon, 19 Oct 2009 16:10:59 +0000 (12:10 -0400)
regenerated lex.yy.c

1  2 
src/mesa/drivers/dri/r300/r300_vertprog.c
src/mesa/drivers/dri/r600/r600_texstate.c
src/mesa/drivers/dri/r600/r700_assembler.c
src/mesa/drivers/dri/radeon/radeon_fbo.c
src/mesa/shader/lex.yy.c
src/mesa/shader/program_lexer.l

index 3c86913fdfccc5ff32f36ecba7c00c86a7ba3b46,fefef573ee563c743088e699151afae92598e647..17843c2121bcc7d6dbe2ff320a6d35ddee6149f3
@@@ -1160,7 -1004,7 +1153,7 @@@ handle_ident(struct asm_parser_state *s
     } while(0);
  
  #define YY_EXTRA_TYPE struct asm_parser_state *
- #line 1164 "lex.yy.c"
 -#line 1008 "lex.yy.c"
++#line 1157 "lex.yy.c"
  
  #define INITIAL 0
  
@@@ -1406,10 -1245,10 +1394,10 @@@ YY_DEC
        register int yy_act;
      struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
  
- #line 156 "program_lexer.l"
 -#line 137 "program_lexer.l"
++#line 157 "program_lexer.l"
  
  
- #line 1413 "lex.yy.c"
 -#line 1252 "lex.yy.c"
++#line 1401 "lex.yy.c"
  
      yylval = yylval_param;
  
@@@ -1498,17 -1337,17 +1486,17 @@@ do_action:   /* This label is used only t
  
  case 1:
  YY_RULE_SETUP
- #line 158 "program_lexer.l"
 -#line 139 "program_lexer.l"
++#line 159 "program_lexer.l"
  { return ARBvp_10; }
        YY_BREAK
  case 2:
  YY_RULE_SETUP
- #line 159 "program_lexer.l"
 -#line 140 "program_lexer.l"
++#line 160 "program_lexer.l"
  { return ARBfp_10; }
        YY_BREAK
  case 3:
  YY_RULE_SETUP
- #line 160 "program_lexer.l"
 -#line 141 "program_lexer.l"
++#line 161 "program_lexer.l"
  {
     yylval->integer = at_address;
     return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS);
        YY_BREAK
  case 4:
  YY_RULE_SETUP
- #line 164 "program_lexer.l"
 -#line 145 "program_lexer.l"
++#line 165 "program_lexer.l"
  { return ALIAS; }
        YY_BREAK
  case 5:
  YY_RULE_SETUP
- #line 165 "program_lexer.l"
 -#line 146 "program_lexer.l"
++#line 166 "program_lexer.l"
  { return ATTRIB; }
        YY_BREAK
  case 6:
  YY_RULE_SETUP
- #line 166 "program_lexer.l"
 -#line 147 "program_lexer.l"
++#line 167 "program_lexer.l"
  { return END; }
        YY_BREAK
  case 7:
  YY_RULE_SETUP
- #line 167 "program_lexer.l"
 -#line 148 "program_lexer.l"
++#line 168 "program_lexer.l"
  { return OPTION; }
        YY_BREAK
  case 8:
  YY_RULE_SETUP
- #line 168 "program_lexer.l"
 -#line 149 "program_lexer.l"
++#line 169 "program_lexer.l"
  { return OUTPUT; }
        YY_BREAK
  case 9:
  YY_RULE_SETUP
- #line 169 "program_lexer.l"
 -#line 150 "program_lexer.l"
++#line 170 "program_lexer.l"
  { return PARAM; }
        YY_BREAK
  case 10:
  YY_RULE_SETUP
- #line 170 "program_lexer.l"
 -#line 151 "program_lexer.l"
++#line 171 "program_lexer.l"
  { yylval->integer = at_temp; return TEMP; }
        YY_BREAK
  case 11:
  YY_RULE_SETUP
- #line 172 "program_lexer.l"
 -#line 153 "program_lexer.l"
 -{ return_opcode(             1, VECTOR_OP, ABS, OFF); }
++#line 173 "program_lexer.l"
 +{ return_opcode(             1, VECTOR_OP, ABS, 3); }
        YY_BREAK
  case 12:
  YY_RULE_SETUP
- #line 173 "program_lexer.l"
 -#line 154 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, VECTOR_OP, ABS, ZERO_ONE); }
++#line 174 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, ADD, 3); }
        YY_BREAK
  case 13:
  YY_RULE_SETUP
- #line 174 "program_lexer.l"
 -#line 155 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, ADD, OFF); }
++#line 175 "program_lexer.l"
 +{ return_opcode(require_ARB_vp, ARL, ARL, 3); }
        YY_BREAK
  case 14:
  YY_RULE_SETUP
- #line 176 "program_lexer.l"
 -#line 156 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, ADD, ZERO_ONE); }
++#line 177 "program_lexer.l"
 +{ return_opcode(require_ARB_fp, TRI_OP, CMP, 3); }
        YY_BREAK
  case 15:
  YY_RULE_SETUP
- #line 177 "program_lexer.l"
 -#line 157 "program_lexer.l"
 -{ return_opcode(require_ARB_vp, ARL, ARL, OFF); }
++#line 178 "program_lexer.l"
 +{ return_opcode(require_ARB_fp, SCALAR_OP, COS, 3); }
        YY_BREAK
  case 16:
  YY_RULE_SETUP
- #line 179 "program_lexer.l"
 -#line 159 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, TRI_OP, CMP, OFF); }
++#line 180 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  VECTOR_OP, DDX, 3); }
        YY_BREAK
  case 17:
  YY_RULE_SETUP
- #line 180 "program_lexer.l"
 -#line 160 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, TRI_OP, CMP, ZERO_ONE); }
++#line 181 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  VECTOR_OP, DDY, 3); }
        YY_BREAK
  case 18:
  YY_RULE_SETUP
- #line 181 "program_lexer.l"
 -#line 161 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, COS, OFF); }
++#line 182 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, DP3, 3); }
        YY_BREAK
  case 19:
  YY_RULE_SETUP
- #line 182 "program_lexer.l"
 -#line 162 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, COS, ZERO_ONE); }
++#line 183 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, DP4, 3); }
        YY_BREAK
  case 20:
  YY_RULE_SETUP
- #line 183 "program_lexer.l"
 -#line 164 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, DP3, OFF); }
++#line 184 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, DPH, 3); }
        YY_BREAK
  case 21:
  YY_RULE_SETUP
- #line 184 "program_lexer.l"
 -#line 165 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); }
++#line 185 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, DST, 3); }
        YY_BREAK
  case 22:
  YY_RULE_SETUP
- #line 186 "program_lexer.l"
 -#line 166 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, DP4, OFF); }
++#line 187 "program_lexer.l"
 +{ return_opcode(             1, SCALAR_OP, EX2, 3); }
        YY_BREAK
  case 23:
  YY_RULE_SETUP
- #line 187 "program_lexer.l"
 -#line 167 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, DP4, ZERO_ONE); }
++#line 188 "program_lexer.l"
 +{ return_opcode(require_ARB_vp, SCALAR_OP, EXP, 3); }
        YY_BREAK
  case 24:
  YY_RULE_SETUP
- #line 189 "program_lexer.l"
 -#line 168 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, DPH, OFF); }
++#line 190 "program_lexer.l"
 +{ return_opcode(             1, VECTOR_OP, FLR, 3); }
        YY_BREAK
  case 25:
  YY_RULE_SETUP
- #line 190 "program_lexer.l"
 -#line 169 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, DPH, ZERO_ONE); }
++#line 191 "program_lexer.l"
 +{ return_opcode(             1, VECTOR_OP, FRC, 3); }
        YY_BREAK
  case 26:
  YY_RULE_SETUP
- #line 192 "program_lexer.l"
 -#line 170 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, DST, OFF); }
++#line 193 "program_lexer.l"
 +{ return_opcode(require_ARB_fp, KIL, KIL, 3); }
        YY_BREAK
  case 27:
  YY_RULE_SETUP
- #line 194 "program_lexer.l"
 -#line 171 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, DST, ZERO_ONE); }
++#line 195 "program_lexer.l"
 +{ return_opcode(             1, VECTOR_OP, LIT, 3); }
        YY_BREAK
  case 28:
  YY_RULE_SETUP
- #line 195 "program_lexer.l"
 -#line 173 "program_lexer.l"
 -{ return_opcode(             1, SCALAR_OP, EX2, OFF); }
++#line 196 "program_lexer.l"
 +{ return_opcode(             1, SCALAR_OP, LG2, 3); }
        YY_BREAK
  case 29:
  YY_RULE_SETUP
- #line 196 "program_lexer.l"
 -#line 174 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, EX2, ZERO_ONE); }
++#line 197 "program_lexer.l"
 +{ return_opcode(require_ARB_vp, SCALAR_OP, LOG, 3); }
        YY_BREAK
  case 30:
  YY_RULE_SETUP
- #line 197 "program_lexer.l"
 -#line 175 "program_lexer.l"
 -{ return_opcode(require_ARB_vp, SCALAR_OP, EXP, OFF); }
++#line 198 "program_lexer.l"
 +{ return_opcode(require_ARB_fp, TRI_OP, LRP, 3); }
        YY_BREAK
  case 31:
  YY_RULE_SETUP
- #line 199 "program_lexer.l"
 -#line 177 "program_lexer.l"
 -{ return_opcode(             1, VECTOR_OP, FLR, OFF); }
++#line 200 "program_lexer.l"
 +{ return_opcode(             1, TRI_OP, MAD, 3); }
        YY_BREAK
  case 32:
  YY_RULE_SETUP
- #line 200 "program_lexer.l"
 -#line 178 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, VECTOR_OP, FLR, ZERO_ONE); }
++#line 201 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, MAX, 3); }
        YY_BREAK
  case 33:
  YY_RULE_SETUP
- #line 201 "program_lexer.l"
 -#line 179 "program_lexer.l"
 -{ return_opcode(             1, VECTOR_OP, FRC, OFF); }
++#line 202 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, MIN, 3); }
        YY_BREAK
  case 34:
  YY_RULE_SETUP
- #line 202 "program_lexer.l"
 -#line 180 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, VECTOR_OP, FRC, ZERO_ONE); }
++#line 203 "program_lexer.l"
 +{ return_opcode(             1, VECTOR_OP, MOV, 3); }
        YY_BREAK
  case 35:
  YY_RULE_SETUP
- #line 203 "program_lexer.l"
 -#line 182 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, KIL, KIL, OFF); }
++#line 204 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, MUL, 3); }
        YY_BREAK
  case 36:
  YY_RULE_SETUP
- #line 205 "program_lexer.l"
 -#line 184 "program_lexer.l"
 -{ return_opcode(             1, VECTOR_OP, LIT, OFF); }
++#line 206 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  VECTOR_OP, PK2H, 4); }
        YY_BREAK
  case 37:
  YY_RULE_SETUP
- #line 206 "program_lexer.l"
 -#line 185 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, VECTOR_OP, LIT, ZERO_ONE); }
++#line 207 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  VECTOR_OP, PK2US, 5); }
        YY_BREAK
  case 38:
  YY_RULE_SETUP
- #line 207 "program_lexer.l"
 -#line 186 "program_lexer.l"
 -{ return_opcode(             1, SCALAR_OP, LG2, OFF); }
++#line 208 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  VECTOR_OP, PK4B, 4); }
        YY_BREAK
  case 39:
  YY_RULE_SETUP
- #line 208 "program_lexer.l"
 -#line 187 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, LG2, ZERO_ONE); }
++#line 209 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  VECTOR_OP, PK4UB, 5); }
        YY_BREAK
  case 40:
  YY_RULE_SETUP
- #line 209 "program_lexer.l"
 -#line 188 "program_lexer.l"
 -{ return_opcode(require_ARB_vp, SCALAR_OP, LOG, OFF); }
++#line 210 "program_lexer.l"
 +{ return_opcode(             1, BINSC_OP, POW, 3); }
        YY_BREAK
  case 41:
  YY_RULE_SETUP
- #line 211 "program_lexer.l"
 -#line 189 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, TRI_OP, LRP, OFF); }
++#line 212 "program_lexer.l"
 +{ return_opcode(             1, SCALAR_OP, RCP, 3); }
        YY_BREAK
  case 42:
  YY_RULE_SETUP
- #line 212 "program_lexer.l"
 -#line 190 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, TRI_OP, LRP, ZERO_ONE); }
++#line 213 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  BIN_OP,    RFL, 3); }
        YY_BREAK
  case 43:
  YY_RULE_SETUP
- #line 213 "program_lexer.l"
 -#line 192 "program_lexer.l"
 -{ return_opcode(             1, TRI_OP, MAD, OFF); }
++#line 214 "program_lexer.l"
 +{ return_opcode(             1, SCALAR_OP, RSQ, 3); }
        YY_BREAK
  case 44:
  YY_RULE_SETUP
- #line 215 "program_lexer.l"
 -#line 193 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, TRI_OP, MAD, ZERO_ONE); }
++#line 216 "program_lexer.l"
 +{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, 3); }
        YY_BREAK
  case 45:
  YY_RULE_SETUP
- #line 216 "program_lexer.l"
 -#line 194 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, MAX, OFF); }
++#line 217 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  BIN_OP, SEQ, 3); }
        YY_BREAK
  case 46:
  YY_RULE_SETUP
- #line 217 "program_lexer.l"
 -#line 195 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, MAX, ZERO_ONE); }
++#line 218 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  BIN_OP, SFL, 3); }
        YY_BREAK
  case 47:
  YY_RULE_SETUP
- #line 218 "program_lexer.l"
 -#line 196 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, MIN, OFF); }
++#line 219 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, SGE, 3); }
        YY_BREAK
  case 48:
  YY_RULE_SETUP
- #line 219 "program_lexer.l"
 -#line 197 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, MIN, ZERO_ONE); }
++#line 220 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  BIN_OP, SGT, 3); }
        YY_BREAK
  case 49:
  YY_RULE_SETUP
- #line 220 "program_lexer.l"
 -#line 198 "program_lexer.l"
 -{ return_opcode(             1, VECTOR_OP, MOV, OFF); }
++#line 221 "program_lexer.l"
 +{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, 3); }
        YY_BREAK
  case 50:
  YY_RULE_SETUP
- #line 221 "program_lexer.l"
 -#line 199 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); }
++#line 222 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  BIN_OP, SLE, 3); }
        YY_BREAK
  case 51:
  YY_RULE_SETUP
- #line 222 "program_lexer.l"
 -#line 200 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, MUL, OFF); }
++#line 223 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, SLT, 3); }
        YY_BREAK
  case 52:
  YY_RULE_SETUP
- #line 223 "program_lexer.l"
 -#line 201 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); }
++#line 224 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  BIN_OP, SNE, 3); }
        YY_BREAK
  case 53:
  YY_RULE_SETUP
- #line 224 "program_lexer.l"
 -#line 203 "program_lexer.l"
 -{ return_opcode(             1, BINSC_OP, POW, OFF); }
++#line 225 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  BIN_OP, STR, 3); }
        YY_BREAK
  case 54:
  YY_RULE_SETUP
- #line 225 "program_lexer.l"
 -#line 204 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); }
++#line 226 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, SUB, 3); }
        YY_BREAK
  case 55:
  YY_RULE_SETUP
- #line 226 "program_lexer.l"
 -#line 206 "program_lexer.l"
 -{ return_opcode(             1, SCALAR_OP, RCP, OFF); }
++#line 227 "program_lexer.l"
 +{ return_opcode(             1, SWZ, SWZ, 3); }
        YY_BREAK
  case 56:
  YY_RULE_SETUP
- #line 228 "program_lexer.l"
 -#line 207 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); }
++#line 229 "program_lexer.l"
 +{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, 3); }
        YY_BREAK
  case 57:
  YY_RULE_SETUP
- #line 229 "program_lexer.l"
 -#line 208 "program_lexer.l"
 -{ return_opcode(             1, SCALAR_OP, RSQ, OFF); }
++#line 230 "program_lexer.l"
 +{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, 3); }
        YY_BREAK
  case 58:
  YY_RULE_SETUP
- #line 230 "program_lexer.l"
 -#line 209 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); }
++#line 231 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  TXD_OP, TXD, 3); }
        YY_BREAK
  case 59:
  YY_RULE_SETUP
- #line 231 "program_lexer.l"
 -#line 211 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); }
++#line 232 "program_lexer.l"
 +{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, 3); }
        YY_BREAK
  case 60:
  YY_RULE_SETUP
- #line 233 "program_lexer.l"
 -#line 212 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); }
++#line 234 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  SCALAR_OP, UP2H, 4); }
        YY_BREAK
  case 61:
  YY_RULE_SETUP
- #line 234 "program_lexer.l"
 -#line 213 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, SGE, OFF); }
++#line 235 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  SCALAR_OP, UP2US, 5); }
        YY_BREAK
  case 62:
  YY_RULE_SETUP
- #line 235 "program_lexer.l"
 -#line 214 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); }
++#line 236 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  SCALAR_OP, UP4B, 4); }
        YY_BREAK
  case 63:
  YY_RULE_SETUP
- #line 236 "program_lexer.l"
 -#line 215 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); }
++#line 237 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  SCALAR_OP, UP4UB, 5); }
        YY_BREAK
  case 64:
  YY_RULE_SETUP
- #line 238 "program_lexer.l"
 -#line 216 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); }
++#line 239 "program_lexer.l"
 +{ return_opcode(require_NV_fp,  TRI_OP, X2D, 3); }
        YY_BREAK
  case 65:
  YY_RULE_SETUP
- #line 239 "program_lexer.l"
 -#line 217 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, SLT, OFF); }
++#line 240 "program_lexer.l"
 +{ return_opcode(             1, BIN_OP, XPD, 3); }
        YY_BREAK
  case 66:
  YY_RULE_SETUP
- #line 241 "program_lexer.l"
 -#line 218 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); }
++#line 242 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); }
        YY_BREAK
  case 67:
  YY_RULE_SETUP
- #line 242 "program_lexer.l"
 -#line 219 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, SUB, OFF); }
++#line 243 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); }
        YY_BREAK
  case 68:
  YY_RULE_SETUP
- #line 243 "program_lexer.l"
 -#line 220 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); }
++#line 244 "program_lexer.l"
 +{ return PROGRAM; }
        YY_BREAK
  case 69:
  YY_RULE_SETUP
- #line 244 "program_lexer.l"
 -#line 221 "program_lexer.l"
 -{ return_opcode(             1, SWZ, SWZ, OFF); }
++#line 245 "program_lexer.l"
 +{ return STATE; }
        YY_BREAK
  case 70:
  YY_RULE_SETUP
- #line 245 "program_lexer.l"
 -#line 222 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SWZ, SWZ, ZERO_ONE); }
++#line 246 "program_lexer.l"
 +{ return RESULT; }
        YY_BREAK
  case 71:
  YY_RULE_SETUP
- #line 247 "program_lexer.l"
 -#line 224 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); }
++#line 248 "program_lexer.l"
 +{ return AMBIENT; }
        YY_BREAK
  case 72:
  YY_RULE_SETUP
- #line 248 "program_lexer.l"
 -#line 225 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); }
++#line 249 "program_lexer.l"
 +{ return ATTENUATION; }
        YY_BREAK
  case 73:
  YY_RULE_SETUP
- #line 249 "program_lexer.l"
 -#line 226 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); }
++#line 250 "program_lexer.l"
 +{ return BACK; }
        YY_BREAK
  case 74:
  YY_RULE_SETUP
- #line 250 "program_lexer.l"
 -#line 227 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); }
++#line 251 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, CLIP); }
        YY_BREAK
  case 75:
  YY_RULE_SETUP
- #line 251 "program_lexer.l"
 -#line 228 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); }
++#line 252 "program_lexer.l"
 +{ return COLOR; }
        YY_BREAK
  case 76:
  YY_RULE_SETUP
- #line 252 "program_lexer.l"
 -#line 229 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); }
++#line 253 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_fp, DEPTH); }
        YY_BREAK
  case 77:
  YY_RULE_SETUP
- #line 253 "program_lexer.l"
 -#line 231 "program_lexer.l"
 -{ return_opcode(             1, BIN_OP, XPD, OFF); }
++#line 254 "program_lexer.l"
 +{ return DIFFUSE; }
        YY_BREAK
  case 78:
  YY_RULE_SETUP
- #line 254 "program_lexer.l"
 -#line 232 "program_lexer.l"
 -{ return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); }
++#line 255 "program_lexer.l"
 +{ return DIRECTION; }
        YY_BREAK
  case 79:
  YY_RULE_SETUP
- #line 255 "program_lexer.l"
 -#line 234 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); }
++#line 256 "program_lexer.l"
 +{ return EMISSION; }
        YY_BREAK
  case 80:
  YY_RULE_SETUP
- #line 256 "program_lexer.l"
 -#line 235 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); }
++#line 257 "program_lexer.l"
 +{ return ENV; }
        YY_BREAK
  case 81:
  YY_RULE_SETUP
- #line 257 "program_lexer.l"
 -#line 236 "program_lexer.l"
 -{ return PROGRAM; }
++#line 258 "program_lexer.l"
 +{ return EYE; }
        YY_BREAK
  case 82:
  YY_RULE_SETUP
- #line 258 "program_lexer.l"
 -#line 237 "program_lexer.l"
 -{ return STATE; }
++#line 259 "program_lexer.l"
 +{ return FOGCOORD; }
        YY_BREAK
  case 83:
  YY_RULE_SETUP
- #line 259 "program_lexer.l"
 -#line 238 "program_lexer.l"
 -{ return RESULT; }
++#line 260 "program_lexer.l"
 +{ return FOG; }
        YY_BREAK
  case 84:
  YY_RULE_SETUP
- #line 260 "program_lexer.l"
 -#line 240 "program_lexer.l"
 -{ return AMBIENT; }
++#line 261 "program_lexer.l"
 +{ return FRONT; }
        YY_BREAK
  case 85:
  YY_RULE_SETUP
- #line 261 "program_lexer.l"
 -#line 241 "program_lexer.l"
 -{ return ATTENUATION; }
++#line 262 "program_lexer.l"
 +{ return HALF; }
        YY_BREAK
  case 86:
  YY_RULE_SETUP
- #line 262 "program_lexer.l"
 -#line 242 "program_lexer.l"
 -{ return BACK; }
++#line 263 "program_lexer.l"
 +{ return INVERSE; }
        YY_BREAK
  case 87:
  YY_RULE_SETUP
- #line 263 "program_lexer.l"
 -#line 243 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, CLIP); }
++#line 264 "program_lexer.l"
 +{ return INVTRANS; }
        YY_BREAK
  case 88:
  YY_RULE_SETUP
- #line 264 "program_lexer.l"
 -#line 244 "program_lexer.l"
 -{ return COLOR; }
++#line 265 "program_lexer.l"
 +{ return LIGHT; }
        YY_BREAK
  case 89:
  YY_RULE_SETUP
- #line 265 "program_lexer.l"
 -#line 245 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_fp, DEPTH); }
++#line 266 "program_lexer.l"
 +{ return LIGHTMODEL; }
        YY_BREAK
  case 90:
  YY_RULE_SETUP
- #line 266 "program_lexer.l"
 -#line 246 "program_lexer.l"
 -{ return DIFFUSE; }
++#line 267 "program_lexer.l"
 +{ return LIGHTPROD; }
        YY_BREAK
  case 91:
  YY_RULE_SETUP
- #line 267 "program_lexer.l"
 -#line 247 "program_lexer.l"
 -{ return DIRECTION; }
++#line 268 "program_lexer.l"
 +{ return LOCAL; }
        YY_BREAK
  case 92:
  YY_RULE_SETUP
- #line 268 "program_lexer.l"
 -#line 248 "program_lexer.l"
 -{ return EMISSION; }
++#line 269 "program_lexer.l"
 +{ return MATERIAL; }
        YY_BREAK
  case 93:
  YY_RULE_SETUP
- #line 269 "program_lexer.l"
 -#line 249 "program_lexer.l"
 -{ return ENV; }
++#line 270 "program_lexer.l"
 +{ return MAT_PROGRAM; }
        YY_BREAK
  case 94:
  YY_RULE_SETUP
- #line 270 "program_lexer.l"
 -#line 250 "program_lexer.l"
 -{ return EYE; }
++#line 271 "program_lexer.l"
 +{ return MATRIX; }
        YY_BREAK
  case 95:
  YY_RULE_SETUP
- #line 271 "program_lexer.l"
 -#line 251 "program_lexer.l"
 -{ return FOGCOORD; }
++#line 272 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, MATRIXINDEX); }
        YY_BREAK
  case 96:
  YY_RULE_SETUP
- #line 272 "program_lexer.l"
 -#line 252 "program_lexer.l"
 -{ return FOG; }
++#line 273 "program_lexer.l"
 +{ return MODELVIEW; }
        YY_BREAK
  case 97:
  YY_RULE_SETUP
- #line 273 "program_lexer.l"
 -#line 253 "program_lexer.l"
 -{ return FRONT; }
++#line 274 "program_lexer.l"
 +{ return MVP; }
        YY_BREAK
  case 98:
  YY_RULE_SETUP
- #line 274 "program_lexer.l"
 -#line 254 "program_lexer.l"
 -{ return HALF; }
++#line 275 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, NORMAL); }
        YY_BREAK
  case 99:
  YY_RULE_SETUP
- #line 275 "program_lexer.l"
 -#line 255 "program_lexer.l"
 -{ return INVERSE; }
++#line 276 "program_lexer.l"
 +{ return OBJECT; }
        YY_BREAK
  case 100:
  YY_RULE_SETUP
- #line 276 "program_lexer.l"
 -#line 256 "program_lexer.l"
 -{ return INVTRANS; }
++#line 277 "program_lexer.l"
 +{ return PALETTE; }
        YY_BREAK
  case 101:
  YY_RULE_SETUP
- #line 277 "program_lexer.l"
 -#line 257 "program_lexer.l"
 -{ return LIGHT; }
++#line 278 "program_lexer.l"
 +{ return PARAMS; }
        YY_BREAK
  case 102:
  YY_RULE_SETUP
- #line 278 "program_lexer.l"
 -#line 258 "program_lexer.l"
 -{ return LIGHTMODEL; }
++#line 279 "program_lexer.l"
 +{ return PLANE; }
        YY_BREAK
  case 103:
  YY_RULE_SETUP
- #line 279 "program_lexer.l"
 -#line 259 "program_lexer.l"
 -{ return LIGHTPROD; }
++#line 280 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, POINT_TOK); }
        YY_BREAK
  case 104:
  YY_RULE_SETUP
- #line 280 "program_lexer.l"
 -#line 260 "program_lexer.l"
 -{ return LOCAL; }
++#line 281 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, POINTSIZE); }
        YY_BREAK
  case 105:
  YY_RULE_SETUP
- #line 281 "program_lexer.l"
 -#line 261 "program_lexer.l"
 -{ return MATERIAL; }
++#line 282 "program_lexer.l"
 +{ return POSITION; }
        YY_BREAK
  case 106:
  YY_RULE_SETUP
- #line 282 "program_lexer.l"
 -#line 262 "program_lexer.l"
 -{ return MAT_PROGRAM; }
++#line 283 "program_lexer.l"
 +{ return PRIMARY; }
        YY_BREAK
  case 107:
  YY_RULE_SETUP
- #line 283 "program_lexer.l"
 -#line 263 "program_lexer.l"
 -{ return MATRIX; }
++#line 284 "program_lexer.l"
 +{ return PROJECTION; }
        YY_BREAK
  case 108:
  YY_RULE_SETUP
- #line 284 "program_lexer.l"
 -#line 264 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, MATRIXINDEX); }
++#line 285 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_fp, RANGE); }
        YY_BREAK
  case 109:
  YY_RULE_SETUP
- #line 285 "program_lexer.l"
 -#line 265 "program_lexer.l"
 -{ return MODELVIEW; }
++#line 286 "program_lexer.l"
 +{ return ROW; }
        YY_BREAK
  case 110:
  YY_RULE_SETUP
- #line 286 "program_lexer.l"
 -#line 266 "program_lexer.l"
 -{ return MVP; }
++#line 287 "program_lexer.l"
 +{ return SCENECOLOR; }
        YY_BREAK
  case 111:
  YY_RULE_SETUP
- #line 287 "program_lexer.l"
 -#line 267 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, NORMAL); }
++#line 288 "program_lexer.l"
 +{ return SECONDARY; }
        YY_BREAK
  case 112:
  YY_RULE_SETUP
- #line 288 "program_lexer.l"
 -#line 268 "program_lexer.l"
 -{ return OBJECT; }
++#line 289 "program_lexer.l"
 +{ return SHININESS; }
        YY_BREAK
  case 113:
  YY_RULE_SETUP
- #line 289 "program_lexer.l"
 -#line 269 "program_lexer.l"
 -{ return PALETTE; }
++#line 290 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, SIZE_TOK); }
        YY_BREAK
  case 114:
  YY_RULE_SETUP
- #line 290 "program_lexer.l"
 -#line 270 "program_lexer.l"
 -{ return PARAMS; }
++#line 291 "program_lexer.l"
 +{ return SPECULAR; }
        YY_BREAK
  case 115:
  YY_RULE_SETUP
- #line 291 "program_lexer.l"
 -#line 271 "program_lexer.l"
 -{ return PLANE; }
++#line 292 "program_lexer.l"
 +{ return SPOT; }
        YY_BREAK
  case 116:
  YY_RULE_SETUP
- #line 292 "program_lexer.l"
 -#line 272 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, POINT_TOK); }
++#line 293 "program_lexer.l"
 +{ return TEXCOORD; }
        YY_BREAK
  case 117:
  YY_RULE_SETUP
- #line 293 "program_lexer.l"
 -#line 273 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, POINTSIZE); }
++#line 294 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_fp, TEXENV); }
        YY_BREAK
  case 118:
  YY_RULE_SETUP
- #line 294 "program_lexer.l"
 -#line 274 "program_lexer.l"
 -{ return POSITION; }
++#line 295 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, TEXGEN); }
        YY_BREAK
  case 119:
  YY_RULE_SETUP
- #line 295 "program_lexer.l"
 -#line 275 "program_lexer.l"
 -{ return PRIMARY; }
++#line 296 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, TEXGEN_Q); }
        YY_BREAK
  case 120:
  YY_RULE_SETUP
- #line 296 "program_lexer.l"
 -#line 276 "program_lexer.l"
 -{ return PROJECTION; }
++#line 297 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, TEXGEN_S); }
        YY_BREAK
  case 121:
  YY_RULE_SETUP
- #line 297 "program_lexer.l"
 -#line 277 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_fp, RANGE); }
++#line 298 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, TEXGEN_T); }
        YY_BREAK
  case 122:
  YY_RULE_SETUP
- #line 298 "program_lexer.l"
 -#line 278 "program_lexer.l"
 -{ return ROW; }
++#line 299 "program_lexer.l"
 +{ return TEXTURE; }
        YY_BREAK
  case 123:
  YY_RULE_SETUP
- #line 299 "program_lexer.l"
 -#line 279 "program_lexer.l"
 -{ return SCENECOLOR; }
++#line 300 "program_lexer.l"
 +{ return TRANSPOSE; }
        YY_BREAK
  case 124:
  YY_RULE_SETUP
- #line 300 "program_lexer.l"
 -#line 280 "program_lexer.l"
 -{ return SECONDARY; }
++#line 301 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, VTXATTRIB); }
        YY_BREAK
  case 125:
  YY_RULE_SETUP
- #line 301 "program_lexer.l"
 -#line 281 "program_lexer.l"
 -{ return SHININESS; }
++#line 302 "program_lexer.l"
 +{ return_token_or_DOT(require_ARB_vp, WEIGHT); }
        YY_BREAK
  case 126:
  YY_RULE_SETUP
- #line 303 "program_lexer.l"
 -#line 282 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, SIZE_TOK); }
++#line 304 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); }
        YY_BREAK
  case 127:
  YY_RULE_SETUP
- #line 304 "program_lexer.l"
 -#line 283 "program_lexer.l"
 -{ return SPECULAR; }
++#line 305 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); }
        YY_BREAK
  case 128:
  YY_RULE_SETUP
- #line 305 "program_lexer.l"
 -#line 284 "program_lexer.l"
 -{ return SPOT; }
++#line 306 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); }
        YY_BREAK
  case 129:
  YY_RULE_SETUP
- #line 306 "program_lexer.l"
 -#line 285 "program_lexer.l"
 -{ return TEXCOORD; }
++#line 307 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); }
        YY_BREAK
  case 130:
  YY_RULE_SETUP
- #line 307 "program_lexer.l"
 -#line 286 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_fp, TEXENV); }
++#line 308 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); }
        YY_BREAK
  case 131:
  YY_RULE_SETUP
- #line 308 "program_lexer.l"
 -#line 287 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, TEXGEN); }
++#line 309 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); }
        YY_BREAK
  case 132:
  YY_RULE_SETUP
- #line 309 "program_lexer.l"
 -#line 288 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, TEXGEN_Q); }
++#line 310 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); }
        YY_BREAK
  case 133:
  YY_RULE_SETUP
- #line 310 "program_lexer.l"
 -#line 289 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, TEXGEN_S); }
++#line 311 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); }
        YY_BREAK
  case 134:
  YY_RULE_SETUP
- #line 311 "program_lexer.l"
 -#line 290 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, TEXGEN_T); }
++#line 312 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); }
        YY_BREAK
  case 135:
  YY_RULE_SETUP
- #line 312 "program_lexer.l"
 -#line 291 "program_lexer.l"
 -{ return TEXTURE; }
++#line 313 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); }
        YY_BREAK
  case 136:
  YY_RULE_SETUP
- #line 313 "program_lexer.l"
 -#line 292 "program_lexer.l"
 -{ return TRANSPOSE; }
++#line 314 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); }
        YY_BREAK
  case 137:
  YY_RULE_SETUP
- #line 314 "program_lexer.l"
 -#line 293 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, VTXATTRIB); }
++#line 315 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }
        YY_BREAK
  case 138:
  YY_RULE_SETUP
- #line 315 "program_lexer.l"
 -#line 294 "program_lexer.l"
 -{ return_token_or_DOT(require_ARB_vp, WEIGHT); }
++#line 316 "program_lexer.l"
 +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); }
        YY_BREAK
  case 139:
  YY_RULE_SETUP
- #line 317 "program_lexer.l"
 -#line 296 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); }
++#line 318 "program_lexer.l"
 +{ return handle_ident(yyextra, yytext, yylval); }
        YY_BREAK
  case 140:
  YY_RULE_SETUP
- #line 319 "program_lexer.l"
 -#line 297 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); }
 -      YY_BREAK
 -case 141:
 -YY_RULE_SETUP
 -#line 298 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); }
 -      YY_BREAK
 -case 142:
 -YY_RULE_SETUP
 -#line 299 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); }
 -      YY_BREAK
 -case 143:
 -YY_RULE_SETUP
 -#line 300 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); }
 -      YY_BREAK
 -case 144:
 -YY_RULE_SETUP
 -#line 301 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); }
 -      YY_BREAK
 -case 145:
 -YY_RULE_SETUP
 -#line 302 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); }
 -      YY_BREAK
 -case 146:
 -YY_RULE_SETUP
 -#line 303 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); }
 -      YY_BREAK
 -case 147:
 -YY_RULE_SETUP
 -#line 304 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); }
 -      YY_BREAK
 -case 148:
 -YY_RULE_SETUP
 -#line 305 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); }
 -      YY_BREAK
 -case 149:
 -YY_RULE_SETUP
 -#line 306 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); }
 -      YY_BREAK
 -case 150:
 -YY_RULE_SETUP
 -#line 307 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }
 -      YY_BREAK
 -case 151:
 -YY_RULE_SETUP
 -#line 308 "program_lexer.l"
 -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); }
 -      YY_BREAK
 -case 152:
 -YY_RULE_SETUP
 -#line 310 "program_lexer.l"
 -{
 -   yylval->string = strdup(yytext);
 -   return IDENTIFIER;
 -}
 -      YY_BREAK
 -case 153:
 -YY_RULE_SETUP
 -#line 315 "program_lexer.l"
++#line 320 "program_lexer.l"
  { return DOT_DOT; }
        YY_BREAK
 -case 154:
 +case 141:
  YY_RULE_SETUP
- #line 321 "program_lexer.l"
 -#line 317 "program_lexer.l"
++#line 322 "program_lexer.l"
  {
     yylval->integer = strtol(yytext, NULL, 10);
     return INTEGER;
  }
        YY_BREAK
 -case 155:
 +case 142:
  YY_RULE_SETUP
- #line 325 "program_lexer.l"
 -#line 321 "program_lexer.l"
++#line 326 "program_lexer.l"
  {
-    yylval->real = strtod(yytext, NULL);
+    yylval->real = _mesa_strtod(yytext, NULL);
     return REAL;
  }
        YY_BREAK
@@@ -2221,40 -2128,40 +2209,40 @@@ case 143
  yyg->yy_c_buf_p = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
- #line 329 "program_lexer.l"
 -#line 325 "program_lexer.l"
++#line 330 "program_lexer.l"
  {
-    yylval->real = strtod(yytext, NULL);
+    yylval->real = _mesa_strtod(yytext, NULL);
     return REAL;
  }
        YY_BREAK
 -case 157:
 +case 144:
  YY_RULE_SETUP
- #line 333 "program_lexer.l"
 -#line 329 "program_lexer.l"
++#line 334 "program_lexer.l"
  {
-    yylval->real = strtod(yytext, NULL);
+    yylval->real = _mesa_strtod(yytext, NULL);
     return REAL;
  }
        YY_BREAK
 -case 158:
 +case 145:
  YY_RULE_SETUP
- #line 337 "program_lexer.l"
 -#line 333 "program_lexer.l"
++#line 338 "program_lexer.l"
  {
-    yylval->real = strtod(yytext, NULL);
+    yylval->real = _mesa_strtod(yytext, NULL);
     return REAL;
  }
        YY_BREAK
 -case 159:
 +case 146:
  YY_RULE_SETUP
- #line 342 "program_lexer.l"
 -#line 338 "program_lexer.l"
++#line 343 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_NOOP;
     yylval->swiz_mask.mask = WRITEMASK_XYZW;
     return MASK4;
  }
        YY_BREAK
 -case 160:
 +case 147:
  YY_RULE_SETUP
- #line 348 "program_lexer.l"
 -#line 344 "program_lexer.l"
++#line 349 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_XY
     return MASK3;
  }
        YY_BREAK
 -case 161:
 +case 148:
  YY_RULE_SETUP
- #line 354 "program_lexer.l"
 -#line 350 "program_lexer.l"
++#line 355 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_XZW;
     return MASK3;
  }
        YY_BREAK
 -case 162:
 +case 149:
  YY_RULE_SETUP
- #line 359 "program_lexer.l"
 -#line 355 "program_lexer.l"
++#line 360 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_YZW;
     return MASK3;
  }
        YY_BREAK
 -case 163:
 +case 150:
  YY_RULE_SETUP
- #line 365 "program_lexer.l"
 -#line 361 "program_lexer.l"
++#line 366 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_X
     return MASK2;
  }
        YY_BREAK
 -case 164:
 +case 151:
  YY_RULE_SETUP
- #line 371 "program_lexer.l"
 -#line 367 "program_lexer.l"
++#line 372 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_Y
     return MASK2;
  }
        YY_BREAK
 -case 165:
 +case 152:
  YY_RULE_SETUP
- #line 377 "program_lexer.l"
 -#line 373 "program_lexer.l"
++#line 378 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_ZW;
     return MASK2;
  }
        YY_BREAK
 -case 166:
 +case 153:
  YY_RULE_SETUP
- #line 383 "program_lexer.l"
 -#line 379 "program_lexer.l"
++#line 384 "program_lexer.l"
  {
     const unsigned s = swiz_from_char(yytext[1]);
     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s);
     return MASK1; 
  }
        YY_BREAK
 -case 167:
 +case 154:
  YY_RULE_SETUP
- #line 390 "program_lexer.l"
 -#line 386 "program_lexer.l"
++#line 391 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),
                                            swiz_from_char(yytext[2]),
     return SWIZZLE;
  }
        YY_BREAK
 -case 168:
 +case 155:
  YY_RULE_SETUP
- #line 399 "program_lexer.l"
 -#line 395 "program_lexer.l"
++#line 400 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_NOOP;
     yylval->swiz_mask.mask = WRITEMASK_XYZW;
     return_token_or_DOT(require_ARB_fp, MASK4);
  }
        YY_BREAK
 -case 169:
 +case 156:
  YY_RULE_SETUP
- #line 405 "program_lexer.l"
 -#line 401 "program_lexer.l"
++#line 406 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_XY
     return_token_or_DOT(require_ARB_fp, MASK3);
  }
        YY_BREAK
 -case 170:
 +case 157:
  YY_RULE_SETUP
- #line 411 "program_lexer.l"
 -#line 407 "program_lexer.l"
++#line 412 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_XZW;
     return_token_or_DOT(require_ARB_fp, MASK3);
  }
        YY_BREAK
 -case 171:
 +case 158:
  YY_RULE_SETUP
- #line 416 "program_lexer.l"
 -#line 412 "program_lexer.l"
++#line 417 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_YZW;
     return_token_or_DOT(require_ARB_fp, MASK3);
  }
        YY_BREAK
 -case 172:
 +case 159:
  YY_RULE_SETUP
- #line 422 "program_lexer.l"
 -#line 418 "program_lexer.l"
++#line 423 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_X
     return_token_or_DOT(require_ARB_fp, MASK2);
  }
        YY_BREAK
 -case 173:
 +case 160:
  YY_RULE_SETUP
- #line 428 "program_lexer.l"
 -#line 424 "program_lexer.l"
++#line 429 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_Y
     return_token_or_DOT(require_ARB_fp, MASK2);
  }
        YY_BREAK
 -case 174:
 +case 161:
  YY_RULE_SETUP
- #line 434 "program_lexer.l"
 -#line 430 "program_lexer.l"
++#line 435 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
     yylval->swiz_mask.mask = WRITEMASK_ZW;
     return_token_or_DOT(require_ARB_fp, MASK2);
  }
        YY_BREAK
 -case 175:
 +case 162:
  YY_RULE_SETUP
- #line 440 "program_lexer.l"
 -#line 436 "program_lexer.l"
++#line 441 "program_lexer.l"
  {
     const unsigned s = swiz_from_char(yytext[1]);
     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s);
     return_token_or_DOT(require_ARB_fp, MASK1);
  }
        YY_BREAK
 -case 176:
 +case 163:
  YY_RULE_SETUP
- #line 448 "program_lexer.l"
 -#line 444 "program_lexer.l"
++#line 449 "program_lexer.l"
  {
     if (require_ARB_vp) {
        return TEXGEN_R;
     }
  }
        YY_BREAK
 -case 177:
 +case 164:
  YY_RULE_SETUP
- #line 459 "program_lexer.l"
 -#line 455 "program_lexer.l"
++#line 460 "program_lexer.l"
  {
     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),
                                            swiz_from_char(yytext[2]),
     return_token_or_DOT(require_ARB_fp, SWIZZLE);
  }
        YY_BREAK
 -case 178:
 +case 165:
  YY_RULE_SETUP
- #line 468 "program_lexer.l"
 -#line 464 "program_lexer.l"
++#line 469 "program_lexer.l"
  { return DOT; }
        YY_BREAK
 -case 179:
 -/* rule 179 can match eol */
 +case 166:
 +/* rule 166 can match eol */
  YY_RULE_SETUP
- #line 470 "program_lexer.l"
 -#line 466 "program_lexer.l"
++#line 471 "program_lexer.l"
  {
     yylloc->first_line++;
     yylloc->first_column = 1;
     yylloc->position++;
  }
        YY_BREAK
 -case 180:
 +case 167:
  YY_RULE_SETUP
- #line 477 "program_lexer.l"
 -#line 473 "program_lexer.l"
++#line 478 "program_lexer.l"
  /* eat whitespace */ ;
        YY_BREAK
 -case 181:
 +case 168:
  *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
  yyg->yy_c_buf_p = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
- #line 478 "program_lexer.l"
 -#line 474 "program_lexer.l"
++#line 479 "program_lexer.l"
  /* eat comments */ ;
        YY_BREAK
 -case 182:
 +case 169:
  YY_RULE_SETUP
- #line 479 "program_lexer.l"
 -#line 475 "program_lexer.l"
++#line 480 "program_lexer.l"
  { return yytext[0]; }
        YY_BREAK
 -case 183:
 +case 170:
  YY_RULE_SETUP
- #line 480 "program_lexer.l"
 -#line 476 "program_lexer.l"
++#line 481 "program_lexer.l"
  ECHO;
        YY_BREAK
- #line 2477 "lex.yy.c"
 -#line 2384 "lex.yy.c"
++#line 2465 "lex.yy.c"
  case YY_STATE_EOF(INITIAL):
        yyterminate();
  
@@@ -3648,7 -3555,7 +3636,7 @@@ void yyfree (void * ptr , yyscan_t yysc
  
  #define YYTABLES_NAME "yytables"
  
- #line 480 "program_lexer.l"
 -#line 476 "program_lexer.l"
++#line 481 "program_lexer.l"
  
  
  
Simple merge