mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-19 03:24:09 +00:00
Upgrade shr to ashr and lshr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32103 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -186,8 +186,9 @@ call { RET_TOK( CALL); }
|
|||||||
cast { RET_TOK( CAST); }
|
cast { RET_TOK( CAST); }
|
||||||
select { RET_TOK( SELECT); }
|
select { RET_TOK( SELECT); }
|
||||||
shl { RET_TOK( SHL); }
|
shl { RET_TOK( SHL); }
|
||||||
lshr { RET_TOK( LSHR); }
|
shr { RET_TOK( SHR); }
|
||||||
ashr { RET_TOK( ASHR); }
|
ashr { RET_TOK( ASHR); }
|
||||||
|
lshr { RET_TOK( LSHR); }
|
||||||
va_arg { RET_TOK( VAARG); }
|
va_arg { RET_TOK( VAARG); }
|
||||||
ret { RET_TOK( RET); }
|
ret { RET_TOK( RET); }
|
||||||
br { RET_TOK( BR); }
|
br { RET_TOK( BR); }
|
||||||
|
@ -186,8 +186,9 @@ call { RET_TOK( CALL); }
|
|||||||
cast { RET_TOK( CAST); }
|
cast { RET_TOK( CAST); }
|
||||||
select { RET_TOK( SELECT); }
|
select { RET_TOK( SELECT); }
|
||||||
shl { RET_TOK( SHL); }
|
shl { RET_TOK( SHL); }
|
||||||
lshr { RET_TOK( LSHR); }
|
shr { RET_TOK( SHR); }
|
||||||
ashr { RET_TOK( ASHR); }
|
ashr { RET_TOK( ASHR); }
|
||||||
|
lshr { RET_TOK( LSHR); }
|
||||||
va_arg { RET_TOK( VAARG); }
|
va_arg { RET_TOK( VAARG); }
|
||||||
ret { RET_TOK( RET); }
|
ret { RET_TOK( RET); }
|
||||||
br { RET_TOK( BR); }
|
br { RET_TOK( BR); }
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -131,13 +131,14 @@
|
|||||||
PHI_TOK = 357,
|
PHI_TOK = 357,
|
||||||
SELECT = 358,
|
SELECT = 358,
|
||||||
SHL = 359,
|
SHL = 359,
|
||||||
LSHR = 360,
|
SHR = 360,
|
||||||
ASHR = 361,
|
ASHR = 361,
|
||||||
VAARG = 362,
|
LSHR = 362,
|
||||||
EXTRACTELEMENT = 363,
|
VAARG = 363,
|
||||||
INSERTELEMENT = 364,
|
EXTRACTELEMENT = 364,
|
||||||
SHUFFLEVECTOR = 365,
|
INSERTELEMENT = 365,
|
||||||
CAST = 366
|
SHUFFLEVECTOR = 366,
|
||||||
|
CAST = 367
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
/* Tokens. */
|
/* Tokens. */
|
||||||
@ -243,13 +244,14 @@
|
|||||||
#define PHI_TOK 357
|
#define PHI_TOK 357
|
||||||
#define SELECT 358
|
#define SELECT 358
|
||||||
#define SHL 359
|
#define SHL 359
|
||||||
#define LSHR 360
|
#define SHR 360
|
||||||
#define ASHR 361
|
#define ASHR 361
|
||||||
#define VAARG 362
|
#define LSHR 362
|
||||||
#define EXTRACTELEMENT 363
|
#define VAARG 363
|
||||||
#define INSERTELEMENT 364
|
#define EXTRACTELEMENT 364
|
||||||
#define SHUFFLEVECTOR 365
|
#define INSERTELEMENT 365
|
||||||
#define CAST 366
|
#define SHUFFLEVECTOR 366
|
||||||
|
#define CAST 367
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -263,7 +265,7 @@ typedef union YYSTYPE {
|
|||||||
ConstInfo Const;
|
ConstInfo Const;
|
||||||
} YYSTYPE;
|
} YYSTYPE;
|
||||||
/* Line 1447 of yacc.c. */
|
/* Line 1447 of yacc.c. */
|
||||||
#line 267 "UpgradeParser.tab.h"
|
#line 269 "UpgradeParser.tab.h"
|
||||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||||
# define YYSTYPE_IS_DECLARED 1
|
# define YYSTYPE_IS_DECLARED 1
|
||||||
# define YYSTYPE_IS_TRIVIAL 1
|
# define YYSTYPE_IS_TRIVIAL 1
|
||||||
|
@ -131,13 +131,14 @@
|
|||||||
PHI_TOK = 357,
|
PHI_TOK = 357,
|
||||||
SELECT = 358,
|
SELECT = 358,
|
||||||
SHL = 359,
|
SHL = 359,
|
||||||
LSHR = 360,
|
SHR = 360,
|
||||||
ASHR = 361,
|
ASHR = 361,
|
||||||
VAARG = 362,
|
LSHR = 362,
|
||||||
EXTRACTELEMENT = 363,
|
VAARG = 363,
|
||||||
INSERTELEMENT = 364,
|
EXTRACTELEMENT = 364,
|
||||||
SHUFFLEVECTOR = 365,
|
INSERTELEMENT = 365,
|
||||||
CAST = 366
|
SHUFFLEVECTOR = 366,
|
||||||
|
CAST = 367
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
/* Tokens. */
|
/* Tokens. */
|
||||||
@ -243,13 +244,14 @@
|
|||||||
#define PHI_TOK 357
|
#define PHI_TOK 357
|
||||||
#define SELECT 358
|
#define SELECT 358
|
||||||
#define SHL 359
|
#define SHL 359
|
||||||
#define LSHR 360
|
#define SHR 360
|
||||||
#define ASHR 361
|
#define ASHR 361
|
||||||
#define VAARG 362
|
#define LSHR 362
|
||||||
#define EXTRACTELEMENT 363
|
#define VAARG 363
|
||||||
#define INSERTELEMENT 364
|
#define EXTRACTELEMENT 364
|
||||||
#define SHUFFLEVECTOR 365
|
#define INSERTELEMENT 365
|
||||||
#define CAST 366
|
#define SHUFFLEVECTOR 366
|
||||||
|
#define CAST 367
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -263,7 +265,7 @@ typedef union YYSTYPE {
|
|||||||
ConstInfo Const;
|
ConstInfo Const;
|
||||||
} YYSTYPE;
|
} YYSTYPE;
|
||||||
/* Line 1447 of yacc.c. */
|
/* Line 1447 of yacc.c. */
|
||||||
#line 267 "UpgradeParser.tab.h"
|
#line 269 "UpgradeParser.tab.h"
|
||||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||||
# define YYSTYPE_IS_DECLARED 1
|
# define YYSTYPE_IS_DECLARED 1
|
||||||
# define YYSTYPE_IS_TRIVIAL 1
|
# define YYSTYPE_IS_TRIVIAL 1
|
||||||
|
@ -153,7 +153,7 @@ const char* getCastOpcode(TypeInfo& SrcTy, TypeInfo&DstTy) {
|
|||||||
%token <String> ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR
|
%token <String> ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR
|
||||||
%token <String> SETLE SETGE SETLT SETGT SETEQ SETNE // Binary Comparators
|
%token <String> SETLE SETGE SETLT SETGT SETEQ SETNE // Binary Comparators
|
||||||
%token <String> MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR
|
%token <String> MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR
|
||||||
%token <String> PHI_TOK SELECT SHL LSHR ASHR VAARG
|
%token <String> PHI_TOK SELECT SHL SHR ASHR LSHR VAARG
|
||||||
%token <String> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
|
%token <String> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
|
||||||
%token <String> CAST
|
%token <String> CAST
|
||||||
|
|
||||||
@ -193,7 +193,7 @@ EInt64Val : ESINT64VAL | EUINT64VAL;
|
|||||||
ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
|
ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
|
||||||
LogicalOps : AND | OR | XOR;
|
LogicalOps : AND | OR | XOR;
|
||||||
SetCondOps : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE;
|
SetCondOps : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE;
|
||||||
ShiftOps : SHL | LSHR | ASHR;
|
ShiftOps : SHL | SHR | ASHR | LSHR;
|
||||||
|
|
||||||
// These are some types that allow classification if we only want a particular
|
// These are some types that allow classification if we only want a particular
|
||||||
// thing... for example, only a signed, unsigned, or integral type.
|
// thing... for example, only a signed, unsigned, or integral type.
|
||||||
@ -496,9 +496,12 @@ ConstExpr: CAST '(' ConstVal TO Types ')' {
|
|||||||
$$ = $1;
|
$$ = $1;
|
||||||
}
|
}
|
||||||
| ShiftOps '(' ConstVal ',' ConstVal ')' {
|
| ShiftOps '(' ConstVal ',' ConstVal ')' {
|
||||||
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
const char* shiftop = $1->c_str();
|
||||||
$3.destroy(); $5.destroy();
|
if (*$1 == "shr")
|
||||||
$$ = $1;
|
shiftop = ($3.type.isUnsigned()) ? "lshr" : "ashr";
|
||||||
|
$$ = new std::string(shiftop);
|
||||||
|
*$$ += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||||
|
delete $1; $3.destroy(); $5.destroy();
|
||||||
}
|
}
|
||||||
| EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
|
| EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
|
||||||
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||||
@ -966,9 +969,12 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
|
|||||||
$$ = $1;
|
$$ = $1;
|
||||||
}
|
}
|
||||||
| ShiftOps ResolvedVal ',' ResolvedVal {
|
| ShiftOps ResolvedVal ',' ResolvedVal {
|
||||||
*$1 += " " + *$2.val + ", " + *$4.val;
|
const char* shiftop = $1->c_str();
|
||||||
$2.destroy(); $4.destroy();
|
if (*$1 == "shr")
|
||||||
$$ = $1;
|
shiftop = ($2.type.isUnsigned()) ? "lshr" : "ashr";
|
||||||
|
$$ = new std::string(shiftop);
|
||||||
|
*$$ += " " + *$2.val + ", " + *$4.val;
|
||||||
|
delete $1; $2.destroy(); $4.destroy();
|
||||||
}
|
}
|
||||||
| CAST ResolvedVal TO Types {
|
| CAST ResolvedVal TO Types {
|
||||||
const char *opcode = getCastOpcode($2.type, $4);
|
const char *opcode = getCastOpcode($2.type, $4);
|
||||||
|
@ -153,7 +153,7 @@ const char* getCastOpcode(TypeInfo& SrcTy, TypeInfo&DstTy) {
|
|||||||
%token <String> ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR
|
%token <String> ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR
|
||||||
%token <String> SETLE SETGE SETLT SETGT SETEQ SETNE // Binary Comparators
|
%token <String> SETLE SETGE SETLT SETGT SETEQ SETNE // Binary Comparators
|
||||||
%token <String> MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR
|
%token <String> MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR
|
||||||
%token <String> PHI_TOK SELECT SHL LSHR ASHR VAARG
|
%token <String> PHI_TOK SELECT SHL SHR ASHR LSHR VAARG
|
||||||
%token <String> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
|
%token <String> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
|
||||||
%token <String> CAST
|
%token <String> CAST
|
||||||
|
|
||||||
@ -193,7 +193,7 @@ EInt64Val : ESINT64VAL | EUINT64VAL;
|
|||||||
ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
|
ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
|
||||||
LogicalOps : AND | OR | XOR;
|
LogicalOps : AND | OR | XOR;
|
||||||
SetCondOps : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE;
|
SetCondOps : SETLE | SETGE | SETLT | SETGT | SETEQ | SETNE;
|
||||||
ShiftOps : SHL | LSHR | ASHR;
|
ShiftOps : SHL | SHR | ASHR | LSHR;
|
||||||
|
|
||||||
// These are some types that allow classification if we only want a particular
|
// These are some types that allow classification if we only want a particular
|
||||||
// thing... for example, only a signed, unsigned, or integral type.
|
// thing... for example, only a signed, unsigned, or integral type.
|
||||||
@ -496,9 +496,12 @@ ConstExpr: CAST '(' ConstVal TO Types ')' {
|
|||||||
$$ = $1;
|
$$ = $1;
|
||||||
}
|
}
|
||||||
| ShiftOps '(' ConstVal ',' ConstVal ')' {
|
| ShiftOps '(' ConstVal ',' ConstVal ')' {
|
||||||
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
const char* shiftop = $1->c_str();
|
||||||
$3.destroy(); $5.destroy();
|
if (*$1 == "shr")
|
||||||
$$ = $1;
|
shiftop = ($3.type.isUnsigned()) ? "lshr" : "ashr";
|
||||||
|
$$ = new std::string(shiftop);
|
||||||
|
*$$ += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||||
|
delete $1; $3.destroy(); $5.destroy();
|
||||||
}
|
}
|
||||||
| EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
|
| EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
|
||||||
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||||
@ -966,9 +969,12 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
|
|||||||
$$ = $1;
|
$$ = $1;
|
||||||
}
|
}
|
||||||
| ShiftOps ResolvedVal ',' ResolvedVal {
|
| ShiftOps ResolvedVal ',' ResolvedVal {
|
||||||
*$1 += " " + *$2.val + ", " + *$4.val;
|
const char* shiftop = $1->c_str();
|
||||||
$2.destroy(); $4.destroy();
|
if (*$1 == "shr")
|
||||||
$$ = $1;
|
shiftop = ($2.type.isUnsigned()) ? "lshr" : "ashr";
|
||||||
|
$$ = new std::string(shiftop);
|
||||||
|
*$$ += " " + *$2.val + ", " + *$4.val;
|
||||||
|
delete $1; $2.destroy(); $4.destroy();
|
||||||
}
|
}
|
||||||
| CAST ResolvedVal TO Types {
|
| CAST ResolvedVal TO Types {
|
||||||
const char *opcode = getCastOpcode($2.type, $4);
|
const char *opcode = getCastOpcode($2.type, $4);
|
||||||
|
Reference in New Issue
Block a user