[llvm-commits] CVS: llvm/lib/AsmParser/Lexer.l llvmAsmParser.y
Reid Spencer
reid at x10sys.com
Sat Dec 2 22:58:21 PST 2006
Changes in directory llvm/lib/AsmParser:
Lexer.l updated: 1.86 -> 1.87
llvmAsmParser.y updated: 1.281 -> 1.282
---
Log message:
Shorten the FCmp and ICmp mnemonics to 3 letters. Make the parser
disambiguate them.
---
Diffs of the changes: (+41 -34)
Lexer.l | 48 ++++++++++++++++++++----------------------------
llvmAsmParser.y | 27 +++++++++++++++++++++------
2 files changed, 41 insertions(+), 34 deletions(-)
Index: llvm/lib/AsmParser/Lexer.l
diff -u llvm/lib/AsmParser/Lexer.l:1.86 llvm/lib/AsmParser/Lexer.l:1.87
--- llvm/lib/AsmParser/Lexer.l:1.86 Sat Dec 2 23:45:44 2006
+++ llvm/lib/AsmParser/Lexer.l Sun Dec 3 00:58:07 2006
@@ -44,10 +44,6 @@
llvmAsmlval.type = Instruction::Enum; \
return sym
-#define RET_ENUM(type, Enum, sym) \
- llvmAsmlval.type = Enum; \
- return sym
-
// Construct a token value for an obsolete token
#define RET_TY(CTYPE, SYM) \
llvmAsmlval.PrimType = CTYPE;\
@@ -272,30 +268,26 @@
setge { RET_TOK(BinaryOpVal, SetGE, SETGE); }
icmp { RET_TOK(OtherOpVal, ICmp, ICMP); }
fcmp { RET_TOK(OtherOpVal, FCmp, FCMP); }
-eq { RET_ENUM(IPredicate, ICmpInst::ICMP_EQ, EQ); }
-ne { RET_ENUM(IPredicate, ICmpInst::ICMP_NE, NE); }
-slt { RET_ENUM(IPredicate, ICmpInst::ICMP_SLT, SLT); }
-sgt { RET_ENUM(IPredicate, ICmpInst::ICMP_SGT, SGT); }
-sle { RET_ENUM(IPredicate, ICmpInst::ICMP_SLE, SLE); }
-sge { RET_ENUM(IPredicate, ICmpInst::ICMP_SGE, SGE); }
-ult { RET_ENUM(IPredicate, ICmpInst::ICMP_ULT, ULT); }
-ugt { RET_ENUM(IPredicate, ICmpInst::ICMP_UGT, UGT); }
-ule { RET_ENUM(IPredicate, ICmpInst::ICMP_ULE, ULE); }
-uge { RET_ENUM(IPredicate, ICmpInst::ICMP_UGE, UGE); }
-ordeq { RET_ENUM(FPredicate, FCmpInst::FCMP_OEQ, ORDEQ); }
-ordne { RET_ENUM(FPredicate, FCmpInst::FCMP_ONE, ORDNE); }
-ordlt { RET_ENUM(FPredicate, FCmpInst::FCMP_OLT, ORDLT); }
-ordgt { RET_ENUM(FPredicate, FCmpInst::FCMP_OGT, ORDGT); }
-ordle { RET_ENUM(FPredicate, FCmpInst::FCMP_OLE, ORDLE); }
-ordge { RET_ENUM(FPredicate, FCmpInst::FCMP_OGE, ORDGE); }
-ord { RET_ENUM(FPredicate, FCmpInst::FCMP_ORD, ORD); }
-uno { RET_ENUM(FPredicate, FCmpInst::FCMP_UNO, UNO); }
-unoeq { RET_ENUM(FPredicate, FCmpInst::FCMP_UEQ, UNOEQ); }
-unone { RET_ENUM(FPredicate, FCmpInst::FCMP_UNE, UNONE); }
-unolt { RET_ENUM(FPredicate, FCmpInst::FCMP_ULT, UNOLT); }
-unogt { RET_ENUM(FPredicate, FCmpInst::FCMP_UGT, UNOGT); }
-unole { RET_ENUM(FPredicate, FCmpInst::FCMP_ULE, UNOLE); }
-unoge { RET_ENUM(FPredicate, FCmpInst::FCMP_UGE, UNOGE); }
+eq { return EQ; }
+ne { return NE; }
+slt { return SLT; }
+sgt { return SGT; }
+sle { return SLE; }
+sge { return SGE; }
+ult { return ULT; }
+ugt { return UGT; }
+ule { return ULE; }
+uge { return UGE; }
+oeq { return OEQ; }
+one { return ONE; }
+olt { return OLT; }
+ogt { return OGT; }
+ole { return OLE; }
+oge { return OGE; }
+ord { return ORD; }
+uno { return UNO; }
+ueq { return UEQ; }
+une { return UNE; }
phi { RET_TOK(OtherOpVal, PHI, PHI_TOK); }
call { RET_TOK(OtherOpVal, Call, CALL); }
Index: llvm/lib/AsmParser/llvmAsmParser.y
diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.281 llvm/lib/AsmParser/llvmAsmParser.y:1.282
--- llvm/lib/AsmParser/llvmAsmParser.y:1.281 Sat Dec 2 23:45:44 2006
+++ llvm/lib/AsmParser/llvmAsmParser.y Sun Dec 3 00:58:07 2006
@@ -1076,11 +1076,10 @@
%token <BinaryOpVal> ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR
%token <BinaryOpVal> SETLE SETGE SETLT SETGT SETEQ SETNE // Binary Comparators
%token <OtherOpVal> ICMP FCMP
-%token <IPredicate> EQ NE SLT SGT SLE SGE ULT UGT ULE UGE
%type <IPredicate> IPredicates
-%token <FPredicate> ORDEQ ORDNE ORDLT ORDGT ORDLE ORDGE ORD UNO UNOEQ UNONE
-%token <FPredicate> UNOLT UNOGT UNOLE UNOGE
%type <FPredicate> FPredicates
+%token EQ NE SLT SGT SLE SGE ULT UGT ULE UGE
+%token OEQ ONE OLT OGT OLE OGE ORD UNO UEQ UNE
// Memory Instructions
%token <MemOpVal> MALLOC ALLOCA FREE LOAD STORE GETELEMENTPTR
@@ -1128,9 +1127,25 @@
CastOps : TRUNC | ZEXT | SEXT | FPTRUNC | FPEXT | BITCAST |
UITOFP | SITOFP | FPTOUI | FPTOSI | INTTOPTR | PTRTOINT;
ShiftOps : SHL | LSHR | ASHR;
-IPredicates : EQ | NE | SLT | SGT | SLE | SGE | ULT | UGT | ULE | UGE ;
-FPredicates : ORDEQ | ORDNE | ORDLT | ORDGT | ORDLE | ORDGE | ORD | UNO
- | UNOEQ | UNONE | UNOLT | UNOGT | UNOLE | UNOGE ;
+IPredicates
+ : EQ { $$ = ICmpInst::ICMP_EQ; } | NE { $$ = ICmpInst::ICMP_NE; }
+ | SLT { $$ = ICmpInst::ICMP_SLT; } | SGT { $$ = ICmpInst::ICMP_SGT; }
+ | SLE { $$ = ICmpInst::ICMP_SLE; } | SGE { $$ = ICmpInst::ICMP_SGE; }
+ | ULT { $$ = ICmpInst::ICMP_ULT; } | UGT { $$ = ICmpInst::ICMP_UGT; }
+ | ULE { $$ = ICmpInst::ICMP_ULE; } | UGE { $$ = ICmpInst::ICMP_UGE; }
+ ;
+
+FPredicates
+ : OEQ { $$ = FCmpInst::FCMP_OEQ; } | ONE { $$ = FCmpInst::FCMP_ONE; }
+ | OLT { $$ = FCmpInst::FCMP_OLT; } | OGT { $$ = FCmpInst::FCMP_OGT; }
+ | OLE { $$ = FCmpInst::FCMP_OLE; } | OGE { $$ = FCmpInst::FCMP_OGE; }
+ | ORD { $$ = FCmpInst::FCMP_ORD; } | UNO { $$ = FCmpInst::FCMP_UNO; }
+ | UEQ { $$ = FCmpInst::FCMP_UEQ; } | UNE { $$ = FCmpInst::FCMP_UNE; }
+ | ULT { $$ = FCmpInst::FCMP_ULT; } | UGT { $$ = FCmpInst::FCMP_UGT; }
+ | ULE { $$ = FCmpInst::FCMP_ULE; } | UGE { $$ = FCmpInst::FCMP_UGE; }
+ | TRUETOK { $$ = FCmpInst::FCMP_TRUE; }
+ | FALSETOK { $$ = FCmpInst::FCMP_FALSE; }
+ ;
// These are some types that allow classification if we only want a particular
// thing... for example, only a signed, unsigned, or integral type.
More information about the llvm-commits
mailing list