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:
Reid Spencer 2006-12-01 22:26:37 +00:00
parent 947c7689fc
commit f7bde225f3
10 changed files with 2628 additions and 2568 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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); }

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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);