summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2006-12-01 22:26:37 +0000
committerReid Spencer <rspencer@reidspencer.com>2006-12-01 22:26:37 +0000
commitc3f57a2f8b5e6043a060578eef9d991cc6c9fa87 (patch)
tree122519a079f3217e65c75d4dc9ee9ae6b6350c7b /llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
parent23d540538d190c84a8657081b4f6a6a386eff240 (diff)
downloadbcm5719-llvm-c3f57a2f8b5e6043a060578eef9d991cc6c9fa87.tar.gz
bcm5719-llvm-c3f57a2f8b5e6043a060578eef9d991cc6c9fa87.zip
Upgrade shr to ashr and lshr
llvm-svn: 32103
Diffstat (limited to 'llvm/tools/llvm-upgrade/UpgradeParser.y.cvs')
-rw-r--r--llvm/tools/llvm-upgrade/UpgradeParser.y.cvs22
1 files changed, 14 insertions, 8 deletions
diff --git a/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs b/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
index 77cdb41322a..45749777c63 100644
--- a/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
+++ b/llvm/tools/llvm-upgrade/UpgradeParser.y.cvs
@@ -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);
OpenPOWER on IntegriCloud