mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +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:
parent
947c7689fc
commit
f7bde225f3
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); }
|
||||
select { RET_TOK( SELECT); }
|
||||
shl { RET_TOK( SHL); }
|
||||
lshr { RET_TOK( LSHR); }
|
||||
shr { RET_TOK( SHR); }
|
||||
ashr { RET_TOK( ASHR); }
|
||||
lshr { RET_TOK( LSHR); }
|
||||
va_arg { RET_TOK( VAARG); }
|
||||
ret { RET_TOK( RET); }
|
||||
br { RET_TOK( BR); }
|
||||
|
@ -186,8 +186,9 @@ call { RET_TOK( CALL); }
|
||||
cast { RET_TOK( CAST); }
|
||||
select { RET_TOK( SELECT); }
|
||||
shl { RET_TOK( SHL); }
|
||||
lshr { RET_TOK( LSHR); }
|
||||
shr { RET_TOK( SHR); }
|
||||
ashr { RET_TOK( ASHR); }
|
||||
lshr { RET_TOK( LSHR); }
|
||||
va_arg { RET_TOK( VAARG); }
|
||||
ret { RET_TOK( RET); }
|
||||
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,
|
||||
SELECT = 358,
|
||||
SHL = 359,
|
||||
LSHR = 360,
|
||||
SHR = 360,
|
||||
ASHR = 361,
|
||||
VAARG = 362,
|
||||
EXTRACTELEMENT = 363,
|
||||
INSERTELEMENT = 364,
|
||||
SHUFFLEVECTOR = 365,
|
||||
CAST = 366
|
||||
LSHR = 362,
|
||||
VAARG = 363,
|
||||
EXTRACTELEMENT = 364,
|
||||
INSERTELEMENT = 365,
|
||||
SHUFFLEVECTOR = 366,
|
||||
CAST = 367
|
||||
};
|
||||
#endif
|
||||
/* Tokens. */
|
||||
@ -243,13 +244,14 @@
|
||||
#define PHI_TOK 357
|
||||
#define SELECT 358
|
||||
#define SHL 359
|
||||
#define LSHR 360
|
||||
#define SHR 360
|
||||
#define ASHR 361
|
||||
#define VAARG 362
|
||||
#define EXTRACTELEMENT 363
|
||||
#define INSERTELEMENT 364
|
||||
#define SHUFFLEVECTOR 365
|
||||
#define CAST 366
|
||||
#define LSHR 362
|
||||
#define VAARG 363
|
||||
#define EXTRACTELEMENT 364
|
||||
#define INSERTELEMENT 365
|
||||
#define SHUFFLEVECTOR 366
|
||||
#define CAST 367
|
||||
|
||||
|
||||
|
||||
@ -263,7 +265,7 @@ typedef union YYSTYPE {
|
||||
ConstInfo Const;
|
||||
} YYSTYPE;
|
||||
/* Line 1447 of yacc.c. */
|
||||
#line 267 "UpgradeParser.tab.h"
|
||||
#line 269 "UpgradeParser.tab.h"
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
|
@ -131,13 +131,14 @@
|
||||
PHI_TOK = 357,
|
||||
SELECT = 358,
|
||||
SHL = 359,
|
||||
LSHR = 360,
|
||||
SHR = 360,
|
||||
ASHR = 361,
|
||||
VAARG = 362,
|
||||
EXTRACTELEMENT = 363,
|
||||
INSERTELEMENT = 364,
|
||||
SHUFFLEVECTOR = 365,
|
||||
CAST = 366
|
||||
LSHR = 362,
|
||||
VAARG = 363,
|
||||
EXTRACTELEMENT = 364,
|
||||
INSERTELEMENT = 365,
|
||||
SHUFFLEVECTOR = 366,
|
||||
CAST = 367
|
||||
};
|
||||
#endif
|
||||
/* Tokens. */
|
||||
@ -243,13 +244,14 @@
|
||||
#define PHI_TOK 357
|
||||
#define SELECT 358
|
||||
#define SHL 359
|
||||
#define LSHR 360
|
||||
#define SHR 360
|
||||
#define ASHR 361
|
||||
#define VAARG 362
|
||||
#define EXTRACTELEMENT 363
|
||||
#define INSERTELEMENT 364
|
||||
#define SHUFFLEVECTOR 365
|
||||
#define CAST 366
|
||||
#define LSHR 362
|
||||
#define VAARG 363
|
||||
#define EXTRACTELEMENT 364
|
||||
#define INSERTELEMENT 365
|
||||
#define SHUFFLEVECTOR 366
|
||||
#define CAST 367
|
||||
|
||||
|
||||
|
||||
@ -263,7 +265,7 @@ typedef union YYSTYPE {
|
||||
ConstInfo Const;
|
||||
} YYSTYPE;
|
||||
/* Line 1447 of yacc.c. */
|
||||
#line 267 "UpgradeParser.tab.h"
|
||||
#line 269 "UpgradeParser.tab.h"
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
# define YYSTYPE_IS_DECLARED 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> SETLE SETGE SETLT SETGT SETEQ SETNE // Binary Comparators
|
||||
%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> CAST
|
||||
|
||||
@ -193,7 +193,7 @@ EInt64Val : ESINT64VAL | EUINT64VAL;
|
||||
ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
|
||||
LogicalOps : AND | OR | XOR;
|
||||
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
|
||||
// thing... for example, only a signed, unsigned, or integral type.
|
||||
@ -496,9 +496,12 @@ ConstExpr: CAST '(' ConstVal TO Types ')' {
|
||||
$$ = $1;
|
||||
}
|
||||
| ShiftOps '(' ConstVal ',' ConstVal ')' {
|
||||
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||
$3.destroy(); $5.destroy();
|
||||
$$ = $1;
|
||||
const char* shiftop = $1->c_str();
|
||||
if (*$1 == "shr")
|
||||
shiftop = ($3.type.isUnsigned()) ? "lshr" : "ashr";
|
||||
$$ = new std::string(shiftop);
|
||||
*$$ += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||
delete $1; $3.destroy(); $5.destroy();
|
||||
}
|
||||
| EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
|
||||
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||
@ -966,9 +969,12 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
|
||||
$$ = $1;
|
||||
}
|
||||
| ShiftOps ResolvedVal ',' ResolvedVal {
|
||||
*$1 += " " + *$2.val + ", " + *$4.val;
|
||||
$2.destroy(); $4.destroy();
|
||||
$$ = $1;
|
||||
const char* shiftop = $1->c_str();
|
||||
if (*$1 == "shr")
|
||||
shiftop = ($2.type.isUnsigned()) ? "lshr" : "ashr";
|
||||
$$ = new std::string(shiftop);
|
||||
*$$ += " " + *$2.val + ", " + *$4.val;
|
||||
delete $1; $2.destroy(); $4.destroy();
|
||||
}
|
||||
| CAST ResolvedVal TO Types {
|
||||
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> SETLE SETGE SETLT SETGT SETEQ SETNE // Binary Comparators
|
||||
%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> CAST
|
||||
|
||||
@ -193,7 +193,7 @@ EInt64Val : ESINT64VAL | EUINT64VAL;
|
||||
ArithmeticOps: ADD | SUB | MUL | UDIV | SDIV | FDIV | UREM | SREM | FREM;
|
||||
LogicalOps : AND | OR | XOR;
|
||||
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
|
||||
// thing... for example, only a signed, unsigned, or integral type.
|
||||
@ -496,9 +496,12 @@ ConstExpr: CAST '(' ConstVal TO Types ')' {
|
||||
$$ = $1;
|
||||
}
|
||||
| ShiftOps '(' ConstVal ',' ConstVal ')' {
|
||||
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||
$3.destroy(); $5.destroy();
|
||||
$$ = $1;
|
||||
const char* shiftop = $1->c_str();
|
||||
if (*$1 == "shr")
|
||||
shiftop = ($3.type.isUnsigned()) ? "lshr" : "ashr";
|
||||
$$ = new std::string(shiftop);
|
||||
*$$ += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||
delete $1; $3.destroy(); $5.destroy();
|
||||
}
|
||||
| EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' {
|
||||
*$1 += "(" + *$3.cnst + "," + *$5.cnst + ")";
|
||||
@ -966,9 +969,12 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
|
||||
$$ = $1;
|
||||
}
|
||||
| ShiftOps ResolvedVal ',' ResolvedVal {
|
||||
*$1 += " " + *$2.val + ", " + *$4.val;
|
||||
$2.destroy(); $4.destroy();
|
||||
$$ = $1;
|
||||
const char* shiftop = $1->c_str();
|
||||
if (*$1 == "shr")
|
||||
shiftop = ($2.type.isUnsigned()) ? "lshr" : "ashr";
|
||||
$$ = new std::string(shiftop);
|
||||
*$$ += " " + *$2.val + ", " + *$4.val;
|
||||
delete $1; $2.destroy(); $4.destroy();
|
||||
}
|
||||
| CAST ResolvedVal TO Types {
|
||||
const char *opcode = getCastOpcode($2.type, $4);
|
||||
|
Loading…
x
Reference in New Issue
Block a user