mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 03:29:40 +00:00
Implement the arbitrary bit-width integer feature. The feature allows integers of any bitwidth (up to 64) to be defined instead of just 1, 8, 16, 32, and 64 bit integers. This change does several things: 1. Introduces a new Derived Type, IntegerType, to represent the number of bits in an integer. The Type classes SubclassData field is used to store the number of bits. This allows 2^23 bits in an integer type. 2. Removes the five integer Type::TypeID values for the 1, 8, 16, 32 and 64-bit integers. These are replaced with just IntegerType which is not a primitive any more. 3. Adjust the rest of LLVM to account for this change. Note that while this incremental change lays the foundation for arbitrary bit-width integers, LLVM has not yet been converted to actually deal with them in any significant way. Most optimization passes, for example, will still only deal with the byte-width integer types. Future increments will rectify this situation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33113 91177308-0d34-0410-b5e6-96231b3b80d8
357 lines
8.5 KiB
Plaintext
357 lines
8.5 KiB
Plaintext
/* A Bison parser, made by GNU Bison 2.1. */
|
|
|
|
/* Skeleton parser for Yacc-like parsing with Bison,
|
|
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA. */
|
|
|
|
/* As a special exception, when this file is copied by Bison into a
|
|
Bison output file, you may use that output file without restriction.
|
|
This special exception was added by the Free Software Foundation
|
|
in version 1.24 of Bison. */
|
|
|
|
/* Tokens. */
|
|
#ifndef YYTOKENTYPE
|
|
# define YYTOKENTYPE
|
|
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
|
know about them. */
|
|
enum yytokentype {
|
|
ESINT64VAL = 258,
|
|
EUINT64VAL = 259,
|
|
SINTVAL = 260,
|
|
UINTVAL = 261,
|
|
FPVAL = 262,
|
|
VOID = 263,
|
|
BOOL = 264,
|
|
INTTYPE = 265,
|
|
FLOAT = 266,
|
|
DOUBLE = 267,
|
|
LABEL = 268,
|
|
TYPE = 269,
|
|
VAR_ID = 270,
|
|
LABELSTR = 271,
|
|
STRINGCONSTANT = 272,
|
|
IMPLEMENTATION = 273,
|
|
ZEROINITIALIZER = 274,
|
|
TRUETOK = 275,
|
|
FALSETOK = 276,
|
|
BEGINTOK = 277,
|
|
ENDTOK = 278,
|
|
DECLARE = 279,
|
|
DEFINE = 280,
|
|
GLOBAL = 281,
|
|
CONSTANT = 282,
|
|
SECTION = 283,
|
|
VOLATILE = 284,
|
|
TO = 285,
|
|
DOTDOTDOT = 286,
|
|
NULL_TOK = 287,
|
|
UNDEF = 288,
|
|
INTERNAL = 289,
|
|
LINKONCE = 290,
|
|
WEAK = 291,
|
|
APPENDING = 292,
|
|
DLLIMPORT = 293,
|
|
DLLEXPORT = 294,
|
|
EXTERN_WEAK = 295,
|
|
OPAQUE = 296,
|
|
NOT = 297,
|
|
EXTERNAL = 298,
|
|
TARGET = 299,
|
|
TRIPLE = 300,
|
|
ENDIAN = 301,
|
|
POINTERSIZE = 302,
|
|
LITTLE = 303,
|
|
BIG = 304,
|
|
ALIGN = 305,
|
|
DEPLIBS = 306,
|
|
CALL = 307,
|
|
TAIL = 308,
|
|
ASM_TOK = 309,
|
|
MODULE = 310,
|
|
SIDEEFFECT = 311,
|
|
CC_TOK = 312,
|
|
CCC_TOK = 313,
|
|
CSRETCC_TOK = 314,
|
|
FASTCC_TOK = 315,
|
|
COLDCC_TOK = 316,
|
|
X86_STDCALLCC_TOK = 317,
|
|
X86_FASTCALLCC_TOK = 318,
|
|
DATALAYOUT = 319,
|
|
RET = 320,
|
|
BR = 321,
|
|
SWITCH = 322,
|
|
INVOKE = 323,
|
|
UNWIND = 324,
|
|
UNREACHABLE = 325,
|
|
ADD = 326,
|
|
SUB = 327,
|
|
MUL = 328,
|
|
UDIV = 329,
|
|
SDIV = 330,
|
|
FDIV = 331,
|
|
UREM = 332,
|
|
SREM = 333,
|
|
FREM = 334,
|
|
AND = 335,
|
|
OR = 336,
|
|
XOR = 337,
|
|
ICMP = 338,
|
|
FCMP = 339,
|
|
EQ = 340,
|
|
NE = 341,
|
|
SLT = 342,
|
|
SGT = 343,
|
|
SLE = 344,
|
|
SGE = 345,
|
|
ULT = 346,
|
|
UGT = 347,
|
|
ULE = 348,
|
|
UGE = 349,
|
|
OEQ = 350,
|
|
ONE = 351,
|
|
OLT = 352,
|
|
OGT = 353,
|
|
OLE = 354,
|
|
OGE = 355,
|
|
ORD = 356,
|
|
UNO = 357,
|
|
UEQ = 358,
|
|
UNE = 359,
|
|
MALLOC = 360,
|
|
ALLOCA = 361,
|
|
FREE = 362,
|
|
LOAD = 363,
|
|
STORE = 364,
|
|
GETELEMENTPTR = 365,
|
|
TRUNC = 366,
|
|
ZEXT = 367,
|
|
SEXT = 368,
|
|
FPTRUNC = 369,
|
|
FPEXT = 370,
|
|
BITCAST = 371,
|
|
UITOFP = 372,
|
|
SITOFP = 373,
|
|
FPTOUI = 374,
|
|
FPTOSI = 375,
|
|
INTTOPTR = 376,
|
|
PTRTOINT = 377,
|
|
PHI_TOK = 378,
|
|
SELECT = 379,
|
|
SHL = 380,
|
|
LSHR = 381,
|
|
ASHR = 382,
|
|
VAARG = 383,
|
|
EXTRACTELEMENT = 384,
|
|
INSERTELEMENT = 385,
|
|
SHUFFLEVECTOR = 386,
|
|
NORETURN = 387
|
|
};
|
|
#endif
|
|
/* Tokens. */
|
|
#define ESINT64VAL 258
|
|
#define EUINT64VAL 259
|
|
#define SINTVAL 260
|
|
#define UINTVAL 261
|
|
#define FPVAL 262
|
|
#define VOID 263
|
|
#define BOOL 264
|
|
#define INTTYPE 265
|
|
#define FLOAT 266
|
|
#define DOUBLE 267
|
|
#define LABEL 268
|
|
#define TYPE 269
|
|
#define VAR_ID 270
|
|
#define LABELSTR 271
|
|
#define STRINGCONSTANT 272
|
|
#define IMPLEMENTATION 273
|
|
#define ZEROINITIALIZER 274
|
|
#define TRUETOK 275
|
|
#define FALSETOK 276
|
|
#define BEGINTOK 277
|
|
#define ENDTOK 278
|
|
#define DECLARE 279
|
|
#define DEFINE 280
|
|
#define GLOBAL 281
|
|
#define CONSTANT 282
|
|
#define SECTION 283
|
|
#define VOLATILE 284
|
|
#define TO 285
|
|
#define DOTDOTDOT 286
|
|
#define NULL_TOK 287
|
|
#define UNDEF 288
|
|
#define INTERNAL 289
|
|
#define LINKONCE 290
|
|
#define WEAK 291
|
|
#define APPENDING 292
|
|
#define DLLIMPORT 293
|
|
#define DLLEXPORT 294
|
|
#define EXTERN_WEAK 295
|
|
#define OPAQUE 296
|
|
#define NOT 297
|
|
#define EXTERNAL 298
|
|
#define TARGET 299
|
|
#define TRIPLE 300
|
|
#define ENDIAN 301
|
|
#define POINTERSIZE 302
|
|
#define LITTLE 303
|
|
#define BIG 304
|
|
#define ALIGN 305
|
|
#define DEPLIBS 306
|
|
#define CALL 307
|
|
#define TAIL 308
|
|
#define ASM_TOK 309
|
|
#define MODULE 310
|
|
#define SIDEEFFECT 311
|
|
#define CC_TOK 312
|
|
#define CCC_TOK 313
|
|
#define CSRETCC_TOK 314
|
|
#define FASTCC_TOK 315
|
|
#define COLDCC_TOK 316
|
|
#define X86_STDCALLCC_TOK 317
|
|
#define X86_FASTCALLCC_TOK 318
|
|
#define DATALAYOUT 319
|
|
#define RET 320
|
|
#define BR 321
|
|
#define SWITCH 322
|
|
#define INVOKE 323
|
|
#define UNWIND 324
|
|
#define UNREACHABLE 325
|
|
#define ADD 326
|
|
#define SUB 327
|
|
#define MUL 328
|
|
#define UDIV 329
|
|
#define SDIV 330
|
|
#define FDIV 331
|
|
#define UREM 332
|
|
#define SREM 333
|
|
#define FREM 334
|
|
#define AND 335
|
|
#define OR 336
|
|
#define XOR 337
|
|
#define ICMP 338
|
|
#define FCMP 339
|
|
#define EQ 340
|
|
#define NE 341
|
|
#define SLT 342
|
|
#define SGT 343
|
|
#define SLE 344
|
|
#define SGE 345
|
|
#define ULT 346
|
|
#define UGT 347
|
|
#define ULE 348
|
|
#define UGE 349
|
|
#define OEQ 350
|
|
#define ONE 351
|
|
#define OLT 352
|
|
#define OGT 353
|
|
#define OLE 354
|
|
#define OGE 355
|
|
#define ORD 356
|
|
#define UNO 357
|
|
#define UEQ 358
|
|
#define UNE 359
|
|
#define MALLOC 360
|
|
#define ALLOCA 361
|
|
#define FREE 362
|
|
#define LOAD 363
|
|
#define STORE 364
|
|
#define GETELEMENTPTR 365
|
|
#define TRUNC 366
|
|
#define ZEXT 367
|
|
#define SEXT 368
|
|
#define FPTRUNC 369
|
|
#define FPEXT 370
|
|
#define BITCAST 371
|
|
#define UITOFP 372
|
|
#define SITOFP 373
|
|
#define FPTOUI 374
|
|
#define FPTOSI 375
|
|
#define INTTOPTR 376
|
|
#define PTRTOINT 377
|
|
#define PHI_TOK 378
|
|
#define SELECT 379
|
|
#define SHL 380
|
|
#define LSHR 381
|
|
#define ASHR 382
|
|
#define VAARG 383
|
|
#define EXTRACTELEMENT 384
|
|
#define INSERTELEMENT 385
|
|
#define SHUFFLEVECTOR 386
|
|
#define NORETURN 387
|
|
|
|
|
|
|
|
|
|
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
|
|
#line 876 "/proj/llvm/llvm-1/lib/AsmParser/llvmAsmParser.y"
|
|
typedef union YYSTYPE {
|
|
llvm::Module *ModuleVal;
|
|
llvm::Function *FunctionVal;
|
|
llvm::BasicBlock *BasicBlockVal;
|
|
llvm::TerminatorInst *TermInstVal;
|
|
llvm::Instruction *InstVal;
|
|
llvm::Constant *ConstVal;
|
|
|
|
const llvm::Type *PrimType;
|
|
std::list<llvm::PATypeHolder> *TypeList;
|
|
llvm::PATypeHolder *TypeVal;
|
|
llvm::Value *ValueVal;
|
|
std::vector<llvm::Value*> *ValueList;
|
|
llvm::ArgListType *ArgList;
|
|
llvm::TypeWithAttrs TypeWithAttrs;
|
|
llvm::TypeWithAttrsList *TypeWithAttrsList;
|
|
llvm::ValueRefList *ValueRefList;
|
|
|
|
// Represent the RHS of PHI node
|
|
std::list<std::pair<llvm::Value*,
|
|
llvm::BasicBlock*> > *PHIList;
|
|
std::vector<std::pair<llvm::Constant*, llvm::BasicBlock*> > *JumpTable;
|
|
std::vector<llvm::Constant*> *ConstVector;
|
|
|
|
llvm::GlobalValue::LinkageTypes Linkage;
|
|
llvm::FunctionType::ParameterAttributes ParamAttrs;
|
|
int64_t SInt64Val;
|
|
uint64_t UInt64Val;
|
|
int SIntVal;
|
|
unsigned UIntVal;
|
|
double FPVal;
|
|
bool BoolVal;
|
|
|
|
char *StrVal; // This memory is strdup'd!
|
|
llvm::ValID ValIDVal; // strdup'd memory maybe!
|
|
|
|
llvm::Instruction::BinaryOps BinaryOpVal;
|
|
llvm::Instruction::TermOps TermOpVal;
|
|
llvm::Instruction::MemoryOps MemOpVal;
|
|
llvm::Instruction::CastOps CastOpVal;
|
|
llvm::Instruction::OtherOps OtherOpVal;
|
|
llvm::Module::Endianness Endianness;
|
|
llvm::ICmpInst::Predicate IPredicate;
|
|
llvm::FCmpInst::Predicate FPredicate;
|
|
} YYSTYPE;
|
|
/* Line 1447 of yacc.c. */
|
|
#line 348 "llvmAsmParser.tab.h"
|
|
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
|
# define YYSTYPE_IS_DECLARED 1
|
|
# define YYSTYPE_IS_TRIVIAL 1
|
|
#endif
|
|
|
|
extern YYSTYPE llvmAsmlval;
|
|
|
|
|
|
|