diff options
-rw-r--r-- | docs/LangRef.html | 114 | ||||
-rw-r--r-- | include/llvm/Constants.h | 2 | ||||
-rw-r--r-- | include/llvm/DerivedTypes.h | 10 | ||||
-rw-r--r-- | include/llvm/InstrTypes.h | 54 | ||||
-rw-r--r-- | include/llvm/Instruction.def | 5 | ||||
-rw-r--r-- | include/llvm/Instructions.h | 195 | ||||
-rw-r--r-- | include/llvm/Support/InstVisitor.h | 2 | ||||
-rw-r--r-- | lib/AsmParser/LLLexer.cpp | 2 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.cpp.cvs | 2607 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.h.cvs | 248 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.y | 40 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.y.cvs | 40 | ||||
-rw-r--r-- | lib/Bitcode/Reader/BitcodeReader.cpp | 14 | ||||
-rw-r--r-- | lib/Bitcode/Writer/BitcodeWriter.cpp | 4 | ||||
-rw-r--r-- | lib/VMCore/AsmWriter.cpp | 7 | ||||
-rw-r--r-- | lib/VMCore/Constants.cpp | 94 | ||||
-rw-r--r-- | lib/VMCore/Instruction.cpp | 2 | ||||
-rw-r--r-- | lib/VMCore/Instructions.cpp | 100 |
18 files changed, 2017 insertions, 1523 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html index 6591b27..71f9c11 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -140,6 +140,8 @@ <ol> <li><a href="#i_icmp">'<tt>icmp</tt>' Instruction</a></li> <li><a href="#i_fcmp">'<tt>fcmp</tt>' Instruction</a></li> + <li><a href="#i_vicmp">'<tt>vicmp</tt>' Instruction</a></li> + <li><a href="#i_vfcmp">'<tt>vfcmp</tt>' Instruction</a></li> <li><a href="#i_phi">'<tt>phi</tt>' Instruction</a></li> <li><a href="#i_select">'<tt>select</tt>' Instruction</a></li> <li><a href="#i_call">'<tt>call</tt>' Instruction</a></li> @@ -1680,6 +1682,12 @@ following is the syntax for constant expressions:</p> <dt><b><tt>fcmp COND ( VAL1, VAL2 )</tt></b></dt> <dd>Performs the <a href="#i_fcmp">fcmp operation</a> on constants.</dd> + <dt><b><tt>vicmp COND ( VAL1, VAL2 )</tt></b></dt> + <dd>Performs the <a href="#i_vicmp">vicmp operation</a> on constants.</dd> + + <dt><b><tt>vfcmp COND ( VAL1, VAL2 )</tt></b></dt> + <dd>Performs the <a href="#i_vfcmp">vfcmp operation</a> on constants.</dd> + <dt><b><tt>extractelement ( VAL, IDX )</tt></b></dt> <dd>Perform the <a href="#i_extractelement">extractelement @@ -3672,9 +3680,9 @@ a value, just a keyword. The possible condition code are: <a href="#t_floating">floating point</a> typed. They must have identical types.</p> <h5>Semantics:</h5> -<p>The '<tt>fcmp</tt>' compares <tt>var1</tt> and <tt>var2</tt> according to -the condition code given as <tt>cond</tt>. The comparison performed always -yields a <a href="#t_primitive">i1</a> result, as follows: +<p>The '<tt>fcmp</tt>' instruction compares <tt>var1</tt> and <tt>var2</tt> +according to the condition code given as <tt>cond</tt>. The comparison performed +always yields a <a href="#t_primitive">i1</a> result, as follows: <ol> <li><tt>false</tt>: always yields <tt>false</tt>, regardless of operands.</li> <li><tt>oeq</tt>: yields <tt>true</tt> if both operands are not a QNAN and @@ -3715,6 +3723,106 @@ yields a <a href="#t_primitive">i1</a> result, as follows: </div> <!-- _______________________________________________________________________ --> +<div class="doc_subsubsection"> + <a name="i_vicmp">'<tt>vicmp</tt>' Instruction</a> +</div> +<div class="doc_text"> +<h5>Syntax:</h5> +<pre> <result> = vicmp <cond> <ty> <var1>, <var2> <i>; yields {ty}:result</i> +</pre> +<h5>Overview:</h5> +<p>The '<tt>vicmp</tt>' instruction returns an integer vector value based on +element-wise comparison of its two integer vector operands.</p> +<h5>Arguments:</h5> +<p>The '<tt>vicmp</tt>' instruction takes three operands. The first operand is +the condition code indicating the kind of comparison to perform. It is not +a value, just a keyword. The possible condition code are: +<ol> + <li><tt>eq</tt>: equal</li> + <li><tt>ne</tt>: not equal </li> + <li><tt>ugt</tt>: unsigned greater than</li> + <li><tt>uge</tt>: unsigned greater or equal</li> + <li><tt>ult</tt>: unsigned less than</li> + <li><tt>ule</tt>: unsigned less or equal</li> + <li><tt>sgt</tt>: signed greater than</li> + <li><tt>sge</tt>: signed greater or equal</li> + <li><tt>slt</tt>: signed less than</li> + <li><tt>sle</tt>: signed less or equal</li> +</ol> +<p>The remaining two arguments must be <a href="#t_vector">vector</a> of +<a href="#t_integer">integer</a> typed. They must also be identical types.</p> +<h5>Semantics:</h5> +<p>The '<tt>vicmp</tt>' instruction compares <tt>var1</tt> and <tt>var2</tt> +according to the condition code given as <tt>cond</tt>. The comparison yields a +<a href="#t_vector">vector</a> of <a href="#t_integer">integer</a> result, of +identical type as the values being compared. The most significant bit in each +element is 1 if the element-wise comparison evaluates to true, and is 0 +otherwise. All other bits of the result are undefined. The condition codes +are evaluated identically to the <a href="#i_icmp">'<tt>icmp</tt>' +instruction</a>. + +<h5>Example:</h5> +<pre> + <result> = vicmp eq <2 x i32> < i32 4, i32 0 >, < i32 5, i32 0 > <i>; yields: result=<2 x i32> < i32 0, i32 -1 ></i> + <result> = vicmp ult <2 x i8> < i8 1, i8 2 >, < i8 2, i8 2> <i>; yields: result=<2 x i8> < i8 -1, i8 0 ></i> +</pre> +</div> + +<!-- _______________________________________________________________________ --> +<div class="doc_subsubsection"> + <a name="i_vfcmp">'<tt>vfcmp</tt>' Instruction</a> +</div> +<div class="doc_text"> +<h5>Syntax:</h5> +<pre> <result> = vfcmp <cond> <ty> <var1>, <var2></pre> +<h5>Overview:</h5> +<p>The '<tt>vfcmp</tt>' instruction returns an integer vector value based on +element-wise comparison of its two floating point vector operands. The output +elements have the same width as the input elements.</p> +<h5>Arguments:</h5> +<p>The '<tt>vfcmp</tt>' instruction takes three operands. The first operand is +the condition code indicating the kind of comparison to perform. It is not +a value, just a keyword. The possible condition code are: +<ol> + <li><tt>false</tt>: no comparison, always returns false</li> + <li><tt>oeq</tt>: ordered and equal</li> + <li><tt>ogt</tt>: ordered and greater than </li> + <li><tt>oge</tt>: ordered and greater than or equal</li> + <li><tt>olt</tt>: ordered and less than </li> + <li><tt>ole</tt>: ordered and less than or equal</li> + <li><tt>one</tt>: ordered and not equal</li> + <li><tt>ord</tt>: ordered (no nans)</li> + <li><tt>ueq</tt>: unordered or equal</li> + <li><tt>ugt</tt>: unordered or greater than </li> + <li><tt>uge</tt>: unordered or greater than or equal</li> + <li><tt>ult</tt>: unordered or less than </li> + <li><tt>ule</tt>: unordered or less than or equal</li> + <li><tt>une</tt>: unordered or not equal</li> + <li><tt>uno</tt>: unordered (either nans)</li> + <li><tt>true</tt>: no comparison, always returns true</li> +</ol> +<p>The remaining two arguments must be <a href="#t_vector">vector</a> of +<a href="#t_floating">floating point</a> typed. They must also be identical +types.</p> +<h5>Semantics:</h5> +<p>The '<tt>vfcmp</tt>' instruction compares <tt>var1</tt> and <tt>var2</tt> +according to the condition code given as <tt>cond</tt>. The comparison yields a +<a href="#t_vector">vector</a> of <a href="#t_integer">integer</a> result, with +an identical number of elements as the values being compared, and each element +having identical with to the width of the floating point elements. The most +significant bit in each element is 1 if the element-wise comparison evaluates to +true, and is 0 otherwise. All other bits of the result are undefined. The +condition codes are evaluated identically to the +<a href="#i_fcmp">'<tt>fcmp</tt>' instruction</a>. + +<h5>Example:</h5> +<pre> + <result> = vfcmp oeq <2 x float> < float 4, float 0 >, < float 5, float 0 > <i>; yields: result=<2 x i32> < i32 0, i32 -1 ></i> + <result> = vfcmp ult <2 x double> < double 1, double 2 >, < double 2, double 2> <i>; yields: result=<2 x i64> < i64 -1, i64 0 ></i> +</pre> +</div> + +<!-- _______________________________________________________________________ --> <div class="doc_subsubsection"> <a name="i_phi">'<tt>phi</tt>' Instruction</a> </div> <div class="doc_text"> diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h index 18cda19..87a2939 100644 --- a/include/llvm/Constants.h +++ b/include/llvm/Constants.h @@ -689,6 +689,8 @@ public: static Constant *getXor(Constant *C1, Constant *C2); static Constant *getICmp(unsigned short pred, Constant *LHS, Constant *RHS); static Constant *getFCmp(unsigned short pred, Constant *LHS, Constant *RHS); + static Constant *getVICmp(unsigned short pred, Constant *LHS, Constant *RHS); + static Constant *getVFCmp(unsigned short pred, Constant *LHS, Constant *RHS); static Constant *getShl(Constant *C1, Constant *C2); static Constant *getLShr(Constant *C1, Constant *C2); static Constant *getAShr(Constant *C1, Constant *C2); diff --git a/include/llvm/DerivedTypes.h b/include/llvm/DerivedTypes.h index 5334140..216c68c 100644 --- a/include/llvm/DerivedTypes.h +++ b/include/llvm/DerivedTypes.h @@ -349,6 +349,16 @@ public: /// static VectorType *get(const Type *ElementType, unsigned NumElements); + /// VectorType::getInteger - This static method gets a VectorType with the + /// same number of elements as the input type, and the element type is an + /// integer type of the same width as the input element type. + /// + static VectorType *getInteger(const VectorType *VTy) { + unsigned EltBits = VTy->getElementType()->getPrimitiveSizeInBits(); + const Type *EltTy = IntegerType::get(EltBits); + return VectorType::get(EltTy, VTy->getNumElements()); + } + /// @brief Return the number of elements in the Vector type. inline unsigned getNumElements() const { return NumElements; } diff --git a/include/llvm/InstrTypes.h b/include/llvm/InstrTypes.h index a68b562..25fa5f0 100644 --- a/include/llvm/InstrTypes.h +++ b/include/llvm/InstrTypes.h @@ -498,13 +498,55 @@ class CmpInst: public Instruction { void *operator new(size_t, unsigned); // DO NOT IMPLEMENT CmpInst(); // do not implement protected: - CmpInst(Instruction::OtherOps op, unsigned short pred, Value *LHS, Value *RHS, - const std::string &Name = "", Instruction *InsertBefore = 0); + CmpInst(const Type *ty, Instruction::OtherOps op, unsigned short pred, + Value *LHS, Value *RHS, const std::string &Name = "", + Instruction *InsertBefore = 0); - CmpInst(Instruction::OtherOps op, unsigned short pred, Value *LHS, Value *RHS, - const std::string &Name, BasicBlock *InsertAtEnd); + CmpInst(const Type *ty, Instruction::OtherOps op, unsigned short pred, + Value *LHS, Value *RHS, const std::string &Name, + BasicBlock *InsertAtEnd); public: + /// This enumeration lists the possible predicates for CmpInst subclasses. + /// Values in the range 0-31 are reserved for FCmpInst, while values in the + /// range 32-64 are reserved for ICmpInst. This is necessary to ensure the + /// predicate values are not overlapping between the classes. + enum Predicate { + // Opcode U L G E Intuitive operation + FCMP_FALSE = 0, /// 0 0 0 0 Always false (always folded) + FCMP_OEQ = 1, /// 0 0 0 1 True if ordered and equal + FCMP_OGT = 2, /// 0 0 1 0 True if ordered and greater than + FCMP_OGE = 3, /// 0 0 1 1 True if ordered and greater than or equal + FCMP_OLT = 4, /// 0 1 0 0 True if ordered and less than + FCMP_OLE = 5, /// 0 1 0 1 True if ordered and less than or equal + FCMP_ONE = 6, /// 0 1 1 0 True if ordered and operands are unequal + FCMP_ORD = 7, /// 0 1 1 1 True if ordered (no nans) + FCMP_UNO = 8, /// 1 0 0 0 True if unordered: isnan(X) | isnan(Y) + FCMP_UEQ = 9, /// 1 0 0 1 True if unordered or equal + FCMP_UGT = 10, /// 1 0 1 0 True if unordered or greater than + FCMP_UGE = 11, /// 1 0 1 1 True if unordered, greater than, or equal + FCMP_ULT = 12, /// 1 1 0 0 True if unordered or less than + FCMP_ULE = 13, /// 1 1 0 1 True if unordered, less than, or equal + FCMP_UNE = 14, /// 1 1 1 0 True if unordered or not equal + FCMP_TRUE = 15, /// 1 1 1 1 Always true (always folded) + FIRST_FCMP_PREDICATE = FCMP_FALSE, + LAST_FCMP_PREDICATE = FCMP_TRUE, + BAD_FCMP_PREDICATE = FCMP_TRUE + 1, + ICMP_EQ = 32, /// equal + ICMP_NE = 33, /// not equal + ICMP_UGT = 34, /// unsigned greater than + ICMP_UGE = 35, /// unsigned greater or equal + ICMP_ULT = 36, /// unsigned less than + ICMP_ULE = 37, /// unsigned less or equal + ICMP_SGT = 38, /// signed greater than + ICMP_SGE = 39, /// signed greater or equal + ICMP_SLT = 40, /// signed less than + ICMP_SLE = 41, /// signed less or equal + FIRST_ICMP_PREDICATE = ICMP_EQ, + LAST_ICMP_PREDICATE = ICMP_SLE, + BAD_ICMP_PREDICATE = ICMP_SLE + 1 + }; + // allocate space for exactly two operands void *operator new(size_t s) { return User::operator new(s, 2); @@ -576,7 +618,9 @@ public: static inline bool classof(const CmpInst *) { return true; } static inline bool classof(const Instruction *I) { return I->getOpcode() == Instruction::ICmp || - I->getOpcode() == Instruction::FCmp; + I->getOpcode() == Instruction::FCmp || + I->getOpcode() == Instruction::VICmp || + I->getOpcode() == Instruction::VFCmp; } static inline bool classof(const Value *V) { return isa<Instruction>(V) && classof(cast<Instruction>(V)); diff --git a/include/llvm/Instruction.def b/include/llvm/Instruction.def index b8e16da..f5ed453 100644 --- a/include/llvm/Instruction.def +++ b/include/llvm/Instruction.def @@ -166,7 +166,10 @@ HANDLE_OTHER_INST(49, InsertElement, InsertElementInst) // insert into vector HANDLE_OTHER_INST(50, ShuffleVector, ShuffleVectorInst) // shuffle two vectors. HANDLE_OTHER_INST(51, GetResult, GetResultInst) // Extract individual value //from aggregate result - LAST_OTHER_INST(51) +HANDLE_OTHER_INST(52, VICmp , VICmpInst ) // Vec Int comparison instruction. +HANDLE_OTHER_INST(53, VFCmp , VFCmpInst ) // Vec FP point comparison instr. + + LAST_OTHER_INST(53) #undef FIRST_TERM_INST #undef HANDLE_TERM_INST diff --git a/include/llvm/Instructions.h b/include/llvm/Instructions.h index b8f04c4..e7b42f34 100644 --- a/include/llvm/Instructions.h +++ b/include/llvm/Instructions.h @@ -610,31 +610,11 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(GetElementPtrInst, Value) //===----------------------------------------------------------------------===// /// This instruction compares its operands according to the predicate given -/// to the constructor. It only operates on integers, pointers, or packed -/// vectors of integrals. The two operands must be the same type. +/// to the constructor. It only operates on integers or pointers. The operands +/// must be identical types. /// @brief Represent an integer comparison operator. class ICmpInst: public CmpInst { public: - /// This enumeration lists the possible predicates for the ICmpInst. The - /// values in the range 0-31 are reserved for FCmpInst while values in the - /// range 32-64 are reserved for ICmpInst. This is necessary to ensure the - /// predicate values are not overlapping between the classes. - enum Predicate { - ICMP_EQ = 32, ///< equal - ICMP_NE = 33, ///< not equal - ICMP_UGT = 34, ///< unsigned greater than - ICMP_UGE = 35, ///< unsigned greater or equal - ICMP_ULT = 36, ///< unsigned less than - ICMP_ULE = 37, ///< unsigned less or equal - ICMP_SGT = 38, ///< signed greater than - ICMP_SGE = 39, ///< signed greater or equal - ICMP_SLT = 40, ///< signed less than - ICMP_SLE = 41, ///< signed less or equal - FIRST_ICMP_PREDICATE = ICMP_EQ, - LAST_ICMP_PREDICATE = ICMP_SLE, - BAD_ICMP_PREDICATE = ICMP_SLE + 1 - }; - /// @brief Constructor with insert-before-instruction semantics. ICmpInst( Predicate pred, ///< The predicate to use for the comparison @@ -642,7 +622,18 @@ public: Value *RHS, ///< The right-hand-side of the expression const std::string &Name = "", ///< Name of the instruction Instruction *InsertBefore = 0 ///< Where to insert - ) : CmpInst(Instruction::ICmp, pred, LHS, RHS, Name, InsertBefore) { + ) : CmpInst(Type::Int1Ty, Instruction::ICmp, pred, LHS, RHS, Name, + InsertBefore) { + assert(pred >= CmpInst::FIRST_ICMP_PREDICATE && + pred <= CmpInst::LAST_ICMP_PREDICATE && + "Invalid ICmp predicate value"); + const Type* Op0Ty = getOperand(0)->getType(); + const Type* Op1Ty = getOperand(1)->getType(); + assert(Op0Ty == Op1Ty && + "Both operands to ICmp instruction are not of the same type!"); + // Check that the operands are the right type + assert((Op0Ty->isInteger() || isa<PointerType>(Op0Ty)) && + "Invalid operand types for ICmp instruction"); } /// @brief Constructor with insert-at-block-end semantics. @@ -652,7 +643,18 @@ public: Value *RHS, ///< The right-hand-side of the expression const std::string &Name, ///< Name of the instruction BasicBlock *InsertAtEnd ///< Block to insert into. - ) : CmpInst(Instruction::ICmp, pred, LHS, RHS, Name, InsertAtEnd) { + ) : CmpInst(Type::Int1Ty, Instruction::ICmp, pred, LHS, RHS, Name, + InsertAtEnd) { + assert(pred >= CmpInst::FIRST_ICMP_PREDICATE && + pred <= CmpInst::LAST_ICMP_PREDICATE && + "Invalid ICmp predicate value"); + const Type* Op0Ty = getOperand(0)->getType(); + const Type* Op1Ty = getOperand(1)->getType(); + assert(Op0Ty == Op1Ty && + "Both operands to ICmp instruction are not of the same type!"); + // Check that the operands are the right type + assert((Op0Ty->isInteger() || isa<PointerType>(Op0Ty)) && + "Invalid operand types for ICmp instruction"); } /// @brief Return the predicate for this instruction. @@ -783,31 +785,6 @@ public: /// @brief Represents a floating point comparison operator. class FCmpInst: public CmpInst { public: - /// This enumeration lists the possible predicates for the FCmpInst. Values - /// in the range 0-31 are reserved for FCmpInst. - enum Predicate { - // Opcode U L G E Intuitive operation - FCMP_FALSE = 0, ///< 0 0 0 0 Always false (always folded) - FCMP_OEQ = 1, ///< 0 0 0 1 True if ordered and equal - FCMP_OGT = 2, ///< 0 0 1 0 True if ordered and greater than - FCMP_OGE = 3, ///< 0 0 1 1 True if ordered and greater than or equal - FCMP_OLT = 4, ///< 0 1 0 0 True if ordered and less than - FCMP_OLE = 5, ///< 0 1 0 1 True if ordered and less than or equal - FCMP_ONE = 6, ///< 0 1 1 0 True if ordered and operands are unequal - FCMP_ORD = 7, ///< 0 1 1 1 True if ordered (no nans) - FCMP_UNO = 8, ///< 1 0 0 0 True if unordered: isnan(X) | isnan(Y) - FCMP_UEQ = 9, ///< 1 0 0 1 True if unordered or equal - FCMP_UGT =10, ///< 1 0 1 0 True if unordered or greater than - FCMP_UGE =11, ///< 1 0 1 1 True if unordered, greater than, or equal - FCMP_ULT =12, ///< 1 1 0 0 True if unordered or less than - FCMP_ULE =13, ///< 1 1 0 1 True if unordered, less than, or equal - FCMP_UNE =14, ///< 1 1 1 0 True if unordered or not equal - FCMP_TRUE =15, ///< 1 1 1 1 Always true (always folded) - FIRST_FCMP_PREDICATE = FCMP_FALSE, - LAST_FCMP_PREDICATE = FCMP_TRUE, - BAD_FCMP_PREDICATE = FCMP_TRUE + 1 - }; - /// @brief Constructor with insert-before-instruction semantics. FCmpInst( Predicate pred, ///< The predicate to use for the comparison @@ -815,7 +792,17 @@ public: Value *RHS, ///< The right-hand-side of the expression const std::string &Name = "", ///< Name of the instruction Instruction *InsertBefore = 0 ///< Where to insert - ) : CmpInst(Instruction::FCmp, pred, LHS, RHS, Name, InsertBefore) { + ) : CmpInst(Type::Int1Ty, Instruction::FCmp, pred, LHS, RHS, Name, + InsertBefore) { + assert(pred <= FCmpInst::LAST_FCMP_PREDICATE && + "Invalid FCmp predicate value"); + const Type* Op0Ty = getOperand(0)->getType(); + const Type* Op1Ty = getOperand(1)->getType(); + assert(Op0Ty == Op1Ty && + "Both operands to FCmp instruction are not of the same type!"); + // Check that the operands are the right type + assert(Op0Ty->isFloatingPoint() && + "Invalid operand types for FCmp instruction"); } /// @brief Constructor with insert-at-block-end semantics. @@ -825,7 +812,17 @@ public: Value *RHS, ///< The right-hand-side of the expression const std::string &Name, ///< Name of the instruction BasicBlock *InsertAtEnd ///< Block to insert into. - ) : CmpInst(Instruction::FCmp, pred, LHS, RHS, Name, InsertAtEnd) { + ) : CmpInst(Type::Int1Ty, Instruction::FCmp, pred, LHS, RHS, Name, + InsertAtEnd) { + assert(pred <= FCmpInst::LAST_FCMP_PREDICATE && + "Invalid FCmp predicate value"); + const Type* Op0Ty = getOperand(0)->getType(); + const Type* Op1Ty = getOperand(1)->getType(); + assert(Op0Ty == Op1Ty && + "Both operands to FCmp instruction are not of the same type!"); + // Check that the operands are the right type + assert(Op0Ty->isFloatingPoint() && + "Invalid operand types for FCmp instruction"); } /// @brief Return the predicate for this instruction. @@ -898,6 +895,100 @@ public: }; //===----------------------------------------------------------------------===// +// VICmpInst Class +//===----------------------------------------------------------------------===// + +/// This instruction compares its operands according to the predicate given +/// to the constructor. It only operates on vectors of integers. +/// The operands must be identical types. +/// @brief Represents a vector integer comparison operator. +class VICmpInst: public CmpInst { +public: + /// @brief Constructor with insert-before-instruction semantics. + VICmpInst( + Predicate pred, ///< The predicate to use for the comparison + Value *LHS, ///< The left-hand-side of the expression + Value *RHS, ///< The right-hand-side of the expression + const std::string &Name = "", ///< Name of the instruction + Instruction *InsertBefore = 0 ///< Where to insert + ) : CmpInst(LHS->getType(), Instruction::VICmp, pred, LHS, RHS, Name, + InsertBefore) { + } + + /// @brief Constructor with insert-at-block-end semantics. + VICmpInst( + Predicate pred, ///< The predicate to use for the comparison + Value *LHS, ///< The left-hand-side of the expression + Value *RHS, ///< The right-hand-side of the expression + const std::string &Name, ///< Name of the instruction + BasicBlock *InsertAtEnd ///< Block to insert into. + ) : CmpInst(LHS->getType(), Instruction::VICmp, pred, LHS, RHS, Name, + InsertAtEnd) { + } + + /// @brief Return the predicate for this instruction. + Predicate getPredicate() const { return Predicate(SubclassData); } + + virtual VICmpInst *clone() const; + + // Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const VICmpInst *) { return true; } + static inline bool classof(const Instruction *I) { + return I->getOpcode() == Instruction::VICmp; + } + static inline bool classof(const Value *V) { + return isa<Instruction>(V) && classof(cast<Instruction>(V)); + } +}; + +//===----------------------------------------------------------------------===// +// VFCmpInst Class +//===----------------------------------------------------------------------===// + +/// This instruction compares its operands according to the predicate given +/// to the constructor. It only operates on vectors of floating point values. +/// The operands must be identical types. +/// @brief Represents a vector floating point comparison operator. +class VFCmpInst: public CmpInst { +public: + /// @brief Constructor with insert-before-instruction semantics. + VFCmpInst( + Predicate pred, ///< The predicate to use for the comparison + Value *LHS, ///< The left-hand-side of the expression + Value *RHS, ///< The right-hand-side of the expression + const std::string &Name = "", ///< Name of the instruction + Instruction *InsertBefore = 0 ///< Where to insert + ) : CmpInst(VectorType::getInteger(cast<VectorType>(LHS->getType())), + Instruction::VFCmp, pred, LHS, RHS, Name, InsertBefore) { + } + + /// @brief Constructor with insert-at-block-end semantics. + VFCmpInst( + Predicate pred, ///< The predicate to use for the comparison + Value *LHS, ///< The left-hand-side of the expression + Value *RHS, ///< The right-hand-side of the expression + const std::string &Name, ///< Name of the instruction + BasicBlock *InsertAtEnd ///< Block to insert into. + ) : CmpInst(VectorType::getInteger(cast<VectorType>(LHS->getType())), + Instruction::VFCmp, pred, LHS, RHS, Name, InsertAtEnd) { + } + + /// @brief Return the predicate for this instruction. + Predicate getPredicate() const { return Predicate(SubclassData); } + + virtual VFCmpInst *clone() const; + + /// @brief Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const VFCmpInst *) { return true; } + static inline bool classof(const Instruction *I) { + return I->getOpcode() == Instruction::VFCmp; + } + static inline bool classof(const Value *V) { + return isa<Instruction>(V) && classof(cast<Instruction>(V)); + } +}; + +//===----------------------------------------------------------------------===// // CallInst Class //===----------------------------------------------------------------------===// /// CallInst - This class represents a function call, abstracting a target @@ -1908,8 +1999,6 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(SwitchInst, Value) // InvokeInst Class //===----------------------------------------------------------------------===// -//===--------------------------------------------------------------------------- - /// InvokeInst - Invoke instruction. The SubclassData field is used to hold the /// calling convention of the call. /// diff --git a/include/llvm/Support/InstVisitor.h b/include/llvm/Support/InstVisitor.h index 720b32d..6e9a5c6 100644 --- a/include/llvm/Support/InstVisitor.h +++ b/include/llvm/Support/InstVisitor.h @@ -169,6 +169,8 @@ public: RetTy visitUnreachableInst(UnreachableInst &I) { DELEGATE(TerminatorInst);} RetTy visitICmpInst(ICmpInst &I) { DELEGATE(CmpInst);} RetTy visitFCmpInst(FCmpInst &I) { DELEGATE(CmpInst);} + RetTy visitVICmpInst(VICmpInst &I) { DELEGATE(CmpInst);} + RetTy visitVFCmpInst(VFCmpInst &I) { DELEGATE(CmpInst);} RetTy visitMallocInst(MallocInst &I) { DELEGATE(AllocationInst);} RetTy visitAllocaInst(AllocaInst &I) { DELEGATE(AllocationInst);} RetTy visitFreeInst(FreeInst &I) { DELEGATE(Instruction); } diff --git a/lib/AsmParser/LLLexer.cpp b/lib/AsmParser/LLLexer.cpp index f78079b..6787ba1 100644 --- a/lib/AsmParser/LLLexer.cpp +++ b/lib/AsmParser/LLLexer.cpp @@ -566,6 +566,8 @@ int LLLexer::LexIdentifier() { INSTKEYWORD("xor", BinaryOpVal, Xor, XOR); INSTKEYWORD("icmp", OtherOpVal, ICmp, ICMP); INSTKEYWORD("fcmp", OtherOpVal, FCmp, FCMP); + INSTKEYWORD("vicmp", OtherOpVal, VICmp, VICMP); + INSTKEYWORD("vfcmp", OtherOpVal, VFCmp, VFCMP); INSTKEYWORD("phi", OtherOpVal, PHI, PHI_TOK); INSTKEYWORD("call", OtherOpVal, Call, CALL); diff --git a/lib/AsmParser/llvmAsmParser.cpp.cvs b/lib/AsmParser/llvmAsmParser.cpp.cvs index 6d924c4..3861ad3 100644 --- a/lib/AsmParser/llvmAsmParser.cpp.cvs +++ b/lib/AsmParser/llvmAsmParser.cpp.cvs @@ -162,66 +162,68 @@ ASHR = 343, ICMP = 344, FCMP = 345, - EQ = 346, - NE = 347, - SLT = 348, - SGT = 349, - SLE = 350, - SGE = 351, - ULT = 352, - UGT = 353, - ULE = 354, - UGE = 355, - OEQ = 356, - ONE = 357, - OLT = 358, - OGT = 359, - OLE = 360, - OGE = 361, - ORD = 362, - UNO = 363, - UEQ = 364, - UNE = 365, - MALLOC = 366, - ALLOCA = 367, - FREE = 368, - LOAD = 369, - STORE = 370, - GETELEMENTPTR = 371, - TRUNC = 372, - ZEXT = 373, - SEXT = 374, - FPTRUNC = 375, - FPEXT = 376, - BITCAST = 377, - UITOFP = 378, - SITOFP = 379, - FPTOUI = 380, - FPTOSI = 381, - INTTOPTR = 382, - PTRTOINT = 383, - PHI_TOK = 384, - SELECT = 385, - VAARG = 386, - EXTRACTELEMENT = 387, - INSERTELEMENT = 388, - SHUFFLEVECTOR = 389, - GETRESULT = 390, - SIGNEXT = 391, - ZEROEXT = 392, - NORETURN = 393, - INREG = 394, - SRET = 395, - NOUNWIND = 396, - NOALIAS = 397, - BYVAL = 398, - NEST = 399, - READNONE = 400, - READONLY = 401, - GC = 402, - DEFAULT = 403, - HIDDEN = 404, - PROTECTED = 405 + VICMP = 346, + VFCMP = 347, + EQ = 348, + NE = 349, + SLT = 350, + SGT = 351, + SLE = 352, + SGE = 353, + ULT = 354, + UGT = 355, + ULE = 356, + UGE = 357, + OEQ = 358, + ONE = 359, + OLT = 360, + OGT = 361, + OLE = 362, + OGE = 363, + ORD = 364, + UNO = 365, + UEQ = 366, + UNE = 367, + MALLOC = 368, + ALLOCA = 369, + FREE = 370, + LOAD = 371, + STORE = 372, + GETELEMENTPTR = 373, + TRUNC = 374, + ZEXT = 375, + SEXT = 376, + FPTRUNC = 377, + FPEXT = 378, + BITCAST = 379, + UITOFP = 380, + SITOFP = 381, + FPTOUI = 382, + FPTOSI = 383, + INTTOPTR = 384, + PTRTOINT = 385, + PHI_TOK = 386, + SELECT = 387, + VAARG = 388, + EXTRACTELEMENT = 389, + INSERTELEMENT = 390, + SHUFFLEVECTOR = 391, + GETRESULT = 392, + SIGNEXT = 393, + ZEROEXT = 394, + NORETURN = 395, + INREG = 396, + SRET = 397, + NOUNWIND = 398, + NOALIAS = 399, + BYVAL = 400, + NEST = 401, + READNONE = 402, + READONLY = 403, + GC = 404, + DEFAULT = 405, + HIDDEN = 406, + PROTECTED = 407 }; #endif /* Tokens. */ @@ -313,72 +315,74 @@ #define ASHR 343 #define ICMP 344 #define FCMP 345 -#define EQ 346 -#define NE 347 -#define SLT 348 -#define SGT 349 -#define SLE 350 -#define SGE 351 -#define ULT 352 -#define UGT 353 -#define ULE 354 -#define UGE 355 -#define OEQ 356 -#define ONE 357 -#define OLT 358 -#define OGT 359 -#define OLE 360 -#define OGE 361 -#define ORD 362 -#define UNO 363 -#define UEQ 364 -#define UNE 365 -#define MALLOC 366 -#define ALLOCA 367 -#define FREE 368 -#define LOAD 369 -#define STORE 370 -#define GETELEMENTPTR 371 -#define TRUNC 372 -#define ZEXT 373 -#define SEXT 374 -#define FPTRUNC 375 -#define FPEXT 376 -#define BITCAST 377 -#define UITOFP 378 -#define SITOFP 379 -#define FPTOUI 380 -#define FPTOSI 381 -#define INTTOPTR 382 -#define PTRTOINT 383 -#define PHI_TOK 384 -#define SELECT 385 -#define VAARG 386 -#define EXTRACTELEMENT 387 -#define INSERTELEMENT 388 -#define SHUFFLEVECTOR 389 -#define GETRESULT 390 -#define SIGNEXT 391 -#define ZEROEXT 392 -#define NORETURN 393 -#define INREG 394 -#define SRET 395 -#define NOUNWIND 396 -#define NOALIAS 397 -#define BYVAL 398 -#define NEST 399 -#define READNONE 400 -#define READONLY 401 -#define GC 402 -#define DEFAULT 403 -#define HIDDEN 404 -#define PROTECTED 405 +#define VICMP 346 +#define VFCMP 347 +#define EQ 348 +#define NE 349 +#define SLT 350 +#define SGT 351 +#define SLE 352 +#define SGE 353 +#define ULT 354 +#define UGT 355 +#define ULE 356 +#define UGE 357 +#define OEQ 358 +#define ONE 359 +#define OLT 360 +#define OGT 361 +#define OLE 362 +#define OGE 363 +#define ORD 364 +#define UNO 365 +#define UEQ 366 +#define UNE 367 +#define MALLOC 368 +#define ALLOCA 369 +#define FREE 370 +#define LOAD 371 +#define STORE 372 +#define GETELEMENTPTR 373 +#define TRUNC 374 +#define ZEXT 375 +#define SEXT 376 +#define FPTRUNC 377 +#define FPEXT 378 +#define BITCAST 379 +#define UITOFP 380 +#define SITOFP 381 +#define FPTOUI 382 +#define FPTOSI 383 +#define INTTOPTR 384 +#define PTRTOINT 385 +#define PHI_TOK 386 +#define SELECT 387 +#define VAARG 388 +#define EXTRACTELEMENT 389 +#define INSERTELEMENT 390 +#define SHUFFLEVECTOR 391 +#define GETRESULT 392 +#define SIGNEXT 393 +#define ZEROEXT 394 +#define NORETURN 395 +#define INREG 396 +#define SRET 397 +#define NOUNWIND 398 +#define NOALIAS 399 +#define BYVAL 400 +#define NEST 401 +#define READNONE 402 +#define READONLY 403 +#define GC 404 +#define DEFAULT 405 +#define HIDDEN 406 +#define PROTECTED 407 /* Copy the first part of user declarations. */ -#line 14 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 14 "/llvm/lib/AsmParser/llvmAsmParser.y" #include "ParserInternals.h" #include "llvm/CallingConv.h" @@ -1334,7 +1338,7 @@ Module *llvm::RunVMAsmParser(llvm::MemoryBuffer *MB) { #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 949 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 949 "/llvm/lib/AsmParser/llvmAsmParser.y" { llvm::Module *ModuleVal; llvm::Function *FunctionVal; @@ -1382,7 +1386,7 @@ typedef union YYSTYPE llvm::FCmpInst::Predicate FPredicate; } /* Line 193 of yacc.c. */ -#line 1386 "llvmAsmParser.tab.c" +#line 1390 "llvmAsmParser.tab.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -1395,7 +1399,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 1399 "llvmAsmParser.tab.c" +#line 1403 "llvmAsmParser.tab.c" #ifdef short # undef short @@ -1610,20 +1614,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 43 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1978 +#define YYLAST 2035 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 165 +#define YYNTOKENS 167 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 85 /* YYNRULES -- Number of rules. */ -#define YYNRULES 322 +#define YYNRULES 326 /* YYNRULES -- Number of states. */ -#define YYNSTATES 629 +#define YYNSTATES 655 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 405 +#define YYMAXUTOK 407 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1635,15 +1639,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 151, 152, 155, 2, 154, 2, 2, 2, 2, 2, + 153, 154, 157, 2, 156, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 160, 153, 161, 2, 2, 2, 2, 2, 2, 2, + 162, 155, 163, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 157, 156, 159, 2, 2, 2, 2, 2, 164, + 2, 159, 158, 161, 2, 2, 2, 2, 2, 166, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 158, 2, 2, 162, 2, 163, 2, 2, 2, 2, + 160, 2, 2, 164, 2, 165, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1671,7 +1675,7 @@ static const yytype_uint8 yytranslate[] = 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150 + 145, 146, 147, 148, 149, 150, 151, 152 }; #if YYDEBUG @@ -1698,127 +1702,130 @@ static const yytype_uint16 yyprhs[] = 350, 352, 354, 358, 360, 364, 366, 367, 369, 373, 378, 382, 386, 391, 396, 400, 407, 413, 416, 419, 422, 425, 428, 431, 434, 437, 440, 443, 446, 449, - 456, 462, 471, 478, 485, 493, 501, 508, 517, 526, - 530, 532, 534, 536, 538, 539, 542, 549, 551, 552, - 554, 557, 558, 562, 563, 567, 571, 575, 579, 580, - 589, 590, 600, 601, 611, 617, 620, 624, 626, 630, - 634, 638, 642, 644, 645, 651, 655, 657, 661, 663, - 664, 675, 677, 679, 684, 686, 688, 691, 695, 696, - 698, 700, 702, 704, 706, 708, 710, 712, 714, 718, - 720, 726, 728, 730, 732, 734, 736, 738, 741, 743, - 747, 750, 753, 757, 760, 761, 763, 766, 769, 773, - 783, 793, 802, 817, 819, 821, 828, 834, 837, 844, - 852, 857, 862, 869, 876, 877, 878, 882, 885, 887, - 893, 899, 906, 913, 918, 925, 930, 935, 942, 949, - 952, 961, 963, 965, 966, 970, 977, 981, 988, 991, - 997, 1005, 1011 + 456, 462, 471, 478, 485, 493, 501, 509, 517, 524, + 533, 542, 546, 548, 550, 552, 554, 555, 558, 565, + 567, 568, 570, 573, 574, 578, 579, 583, 587, 591, + 595, 596, 605, 606, 616, 617, 627, 633, 636, 640, + 642, 646, 650, 654, 658, 660, 661, 667, 671, 673, + 677, 679, 680, 691, 693, 695, 700, 702, 704, 707, + 711, 712, 714, 716, 718, 720, 722, 724, 726, 728, + 730, 734, 736, 742, 744, 746, 748, 750, 752, 754, + 757, 759, 763, 766, 769, 773, 776, 777, 779, 782, + 785, 789, 799, 809, 818, 833, 835, 837, 844, 850, + 853, 860, 868, 873, 878, 885, 892, 893, 894, 898, + 901, 903, 909, 915, 922, 929, 936, 943, 948, 955, + 960, 965, 972, 979, 982, 991, 993, 995, 996, 1000, + 1007, 1011, 1018, 1021, 1027, 1035, 1041 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 211, 0, -1, 74, -1, 75, -1, 76, -1, 77, + 213, 0, -1, 74, -1, 75, -1, 76, -1, 77, -1, 78, -1, 79, -1, 80, -1, 81, -1, 82, -1, 86, -1, 87, -1, 88, -1, 83, -1, 84, - -1, 85, -1, 117, -1, 118, -1, 119, -1, 120, - -1, 121, -1, 122, -1, 123, -1, 124, -1, 125, - -1, 126, -1, 127, -1, 128, -1, 91, -1, 92, - -1, 93, -1, 94, -1, 95, -1, 96, -1, 97, - -1, 98, -1, 99, -1, 100, -1, 101, -1, 102, - -1, 103, -1, 104, -1, 105, -1, 106, -1, 107, - -1, 108, -1, 109, -1, 110, -1, 97, -1, 98, - -1, 99, -1, 100, -1, 26, -1, 27, -1, 11, + -1, 85, -1, 119, -1, 120, -1, 121, -1, 122, + -1, 123, -1, 124, -1, 125, -1, 126, -1, 127, + -1, 128, -1, 129, -1, 130, -1, 93, -1, 94, + -1, 95, -1, 96, -1, 97, -1, 98, -1, 99, + -1, 100, -1, 101, -1, 102, -1, 103, -1, 104, + -1, 105, -1, 106, -1, 107, -1, 108, -1, 109, + -1, 110, -1, 111, -1, 112, -1, 99, -1, 100, + -1, 101, -1, 102, -1, 26, -1, 27, -1, 11, -1, 12, -1, 13, -1, 16, -1, 15, -1, 14, - -1, 19, -1, 22, -1, 24, -1, 173, -1, -1, - 54, 151, 4, 152, -1, -1, 173, 153, -1, -1, - 20, -1, 23, -1, 179, -1, -1, 177, 153, -1, + -1, 19, -1, 22, -1, 24, -1, 175, -1, -1, + 54, 153, 4, 154, -1, -1, 175, 155, -1, -1, + 20, -1, 23, -1, 181, -1, -1, 179, 155, -1, 42, -1, 44, -1, 43, -1, 45, -1, 47, -1, - 46, -1, 48, -1, 50, -1, -1, 148, -1, 149, - -1, 150, -1, -1, 46, -1, 48, -1, -1, 42, + 46, -1, 48, -1, 50, -1, -1, 150, -1, 151, + -1, 152, -1, -1, 46, -1, 48, -1, -1, 42, -1, 43, -1, 44, -1, 47, -1, -1, 44, -1, 42, -1, -1, 62, -1, 63, -1, 64, -1, 65, - -1, 66, -1, 61, 4, -1, 137, -1, 118, -1, - 136, -1, 119, -1, 139, -1, 140, -1, 142, -1, - 143, -1, 144, -1, 53, 4, -1, -1, 188, 187, - -1, 138, -1, 141, -1, 137, -1, 136, -1, 145, - -1, 146, -1, -1, 190, 189, -1, -1, 147, 22, - -1, -1, 53, 4, -1, -1, 154, 53, 4, -1, - 34, 22, -1, -1, 194, -1, -1, 154, 197, 196, - -1, 194, -1, 53, 4, -1, 11, -1, 12, -1, + -1, 66, -1, 61, 4, -1, 139, -1, 120, -1, + 138, -1, 121, -1, 141, -1, 142, -1, 144, -1, + 145, -1, 146, -1, 53, 4, -1, -1, 190, 189, + -1, 140, -1, 143, -1, 139, -1, 138, -1, 147, + -1, 148, -1, -1, 192, 191, -1, -1, 149, 22, + -1, -1, 53, 4, -1, -1, 156, 53, 4, -1, + 34, 22, -1, -1, 196, -1, -1, 156, 199, 198, + -1, 196, -1, 53, 4, -1, 11, -1, 12, -1, 13, -1, 16, -1, 15, -1, 14, -1, 17, -1, - 49, -1, 198, -1, 199, 175, 155, -1, 233, -1, - 156, 4, -1, 199, 151, 203, 152, 190, -1, 10, - 151, 203, 152, 190, -1, 157, 4, 158, 199, 159, - -1, 160, 4, 158, 199, 161, -1, 162, 204, 163, - -1, 162, 163, -1, 160, 162, 204, 163, 161, -1, - 160, 162, 163, 161, -1, 199, 188, -1, 199, -1, - 10, -1, 200, -1, 202, 154, 200, -1, 202, -1, - 202, 154, 39, -1, 39, -1, -1, 199, -1, 204, - 154, 199, -1, 199, 157, 207, 159, -1, 199, 157, - 159, -1, 199, 164, 22, -1, 199, 160, 207, 161, - -1, 199, 162, 207, 163, -1, 199, 162, 163, -1, - 199, 160, 162, 207, 163, 161, -1, 199, 160, 162, - 163, 161, -1, 199, 40, -1, 199, 41, -1, 199, - 233, -1, 199, 206, -1, 199, 25, -1, 171, 3, - -1, 171, 5, -1, 171, 4, -1, 171, 6, -1, - 11, 26, -1, 11, 27, -1, 172, 9, -1, 168, - 151, 205, 38, 199, 152, -1, 116, 151, 205, 245, - 152, -1, 130, 151, 205, 154, 205, 154, 205, 152, - -1, 166, 151, 205, 154, 205, 152, -1, 167, 151, - 205, 154, 205, 152, -1, 89, 169, 151, 205, 154, - 205, 152, -1, 90, 170, 151, 205, 154, 205, 152, - -1, 132, 151, 205, 154, 205, 152, -1, 133, 151, - 205, 154, 205, 154, 205, 152, -1, 134, 151, 205, - 154, 205, 154, 205, 152, -1, 207, 154, 205, -1, - 205, -1, 32, -1, 33, -1, 37, -1, -1, 201, - 233, -1, 122, 151, 210, 38, 199, 152, -1, 212, - -1, -1, 213, -1, 212, 213, -1, -1, 31, 214, - 229, -1, -1, 30, 215, 230, -1, 59, 58, 219, - -1, 176, 18, 199, -1, 176, 18, 10, -1, -1, - 178, 182, 209, 208, 205, 175, 216, 196, -1, -1, - 178, 180, 182, 209, 208, 205, 175, 217, 196, -1, - -1, 178, 181, 182, 209, 208, 199, 175, 218, 196, - -1, 178, 182, 35, 185, 210, -1, 51, 220, -1, - 55, 153, 221, -1, 22, -1, 52, 153, 22, -1, - 67, 153, 22, -1, 157, 222, 159, -1, 222, 154, - 22, -1, 22, -1, -1, 223, 154, 199, 188, 174, - -1, 199, 188, 174, -1, 223, -1, 223, 154, 39, - -1, 39, -1, -1, 186, 201, 177, 151, 224, 152, - 190, 195, 192, 191, -1, 28, -1, 162, -1, 184, - 182, 225, 226, -1, 29, -1, 163, -1, 237, 228, - -1, 183, 182, 225, -1, -1, 60, -1, 3, -1, - 4, -1, 9, -1, 26, -1, 27, -1, 40, -1, - 41, -1, 25, -1, 160, 207, 161, -1, 206, -1, - 58, 231, 22, 154, 22, -1, 7, -1, 8, -1, - 173, -1, 177, -1, 233, -1, 232, -1, 199, 234, - -1, 235, -1, 236, 154, 235, -1, 237, 238, -1, - 227, 238, -1, 239, 176, 240, -1, 239, 242, -1, - -1, 21, -1, 68, 236, -1, 68, 10, -1, 69, - 17, 234, -1, 69, 11, 234, 154, 17, 234, 154, - 17, 234, -1, 70, 171, 234, 154, 17, 234, 157, - 241, 159, -1, 70, 171, 234, 154, 17, 234, 157, - 159, -1, 71, 186, 201, 234, 151, 244, 152, 190, - 38, 17, 234, 72, 17, 234, -1, 72, -1, 73, - -1, 241, 171, 232, 154, 17, 234, -1, 171, 232, - 154, 17, 234, -1, 176, 247, -1, 199, 157, 234, - 154, 234, 159, -1, 243, 154, 157, 234, 154, 234, - 159, -1, 199, 188, 234, 188, -1, 17, 188, 234, - 188, -1, 244, 154, 199, 188, 234, 188, -1, 244, - 154, 17, 188, 234, 188, -1, -1, -1, 245, 154, - 235, -1, 57, 56, -1, 56, -1, 166, 199, 234, - 154, 234, -1, 167, 199, 234, 154, 234, -1, 89, - 169, 199, 234, 154, 234, -1, 90, 170, 199, 234, - 154, 234, -1, 168, 235, 38, 199, -1, 130, 235, - 154, 235, 154, 235, -1, 131, 235, 154, 199, -1, - 132, 235, 154, 235, -1, 133, 235, 154, 235, 154, - 235, -1, 134, 235, 154, 235, 154, 235, -1, 129, - 243, -1, 246, 186, 201, 234, 151, 244, 152, 190, - -1, 249, -1, 36, -1, -1, 111, 199, 193, -1, - 111, 199, 154, 11, 234, 193, -1, 112, 199, 193, - -1, 112, 199, 154, 11, 234, 193, -1, 113, 235, - -1, 248, 114, 199, 234, 193, -1, 248, 115, 235, - 154, 199, 234, 193, -1, 135, 199, 234, 154, 4, - -1, 116, 199, 234, 245, -1 + 49, -1, 200, -1, 201, 177, 157, -1, 235, -1, + 158, 4, -1, 201, 153, 205, 154, 192, -1, 10, + 153, 205, 154, 192, -1, 159, 4, 160, 201, 161, + -1, 162, 4, 160, 201, 163, -1, 164, 206, 165, + -1, 164, 165, -1, 162, 164, 206, 165, 163, -1, + 162, 164, 165, 163, -1, 201, 190, -1, 201, -1, + 10, -1, 202, -1, 204, 156, 202, -1, 204, -1, + 204, 156, 39, -1, 39, -1, -1, 201, -1, 206, + 156, 201, -1, 201, 159, 209, 161, -1, 201, 159, + 161, -1, 201, 166, 22, -1, 201, 162, 209, 163, + -1, 201, 164, 209, 165, -1, 201, 164, 165, -1, + 201, 162, 164, 209, 165, 163, -1, 201, 162, 164, + 165, 163, -1, 201, 40, -1, 201, 41, -1, 201, + 235, -1, 201, 208, -1, 201, 25, -1, 173, 3, + -1, 173, 5, -1, 173, 4, -1, 173, 6, -1, + 11, 26, -1, 11, 27, -1, 174, 9, -1, 170, + 153, 207, 38, 201, 154, -1, 118, 153, 207, 247, + 154, -1, 132, 153, 207, 156, 207, 156, 207, 154, + -1, 168, 153, 207, 156, 207, 154, -1, 169, 153, + 207, 156, 207, 154, -1, 89, 171, 153, 207, 156, + 207, 154, -1, 90, 172, 153, 207, 156, 207, 154, + -1, 91, 171, 153, 207, 156, 207, 154, -1, 92, + 172, 153, 207, 156, 207, 154, -1, 134, 153, 207, + 156, 207, 154, -1, 135, 153, 207, 156, 207, 156, + 207, 154, -1, 136, 153, 207, 156, 207, 156, 207, + 154, -1, 209, 156, 207, -1, 207, -1, 32, -1, + 33, -1, 37, -1, -1, 203, 235, -1, 124, 153, + 212, 38, 201, 154, -1, 214, -1, -1, 215, -1, + 214, 215, -1, -1, 31, 216, 231, -1, -1, 30, + 217, 232, -1, 59, 58, 221, -1, 178, 18, 201, + -1, 178, 18, 10, -1, -1, 180, 184, 211, 210, + 207, 177, 218, 198, -1, -1, 180, 182, 184, 211, + 210, 207, 177, 219, 198, -1, -1, 180, 183, 184, + 211, 210, 201, 177, 220, 198, -1, 180, 184, 35, + 187, 212, -1, 51, 222, -1, 55, 155, 223, -1, + 22, -1, 52, 155, 22, -1, 67, 155, 22, -1, + 159, 224, 161, -1, 224, 156, 22, -1, 22, -1, + -1, 225, 156, 201, 190, 176, -1, 201, 190, 176, + -1, 225, -1, 225, 156, 39, -1, 39, -1, -1, + 188, 203, 179, 153, 226, 154, 192, 197, 194, 193, + -1, 28, -1, 164, -1, 186, 184, 227, 228, -1, + 29, -1, 165, -1, 239, 230, -1, 185, 184, 227, + -1, -1, 60, -1, 3, -1, 4, -1, 9, -1, + 26, -1, 27, -1, 40, -1, 41, -1, 25, -1, + 162, 209, 163, -1, 208, -1, 58, 233, 22, 156, + 22, -1, 7, -1, 8, -1, 175, -1, 179, -1, + 235, -1, 234, -1, 201, 236, -1, 237, -1, 238, + 156, 237, -1, 239, 240, -1, 229, 240, -1, 241, + 178, 242, -1, 241, 244, -1, -1, 21, -1, 68, + 238, -1, 68, 10, -1, 69, 17, 236, -1, 69, + 11, 236, 156, 17, 236, 156, 17, 236, -1, 70, + 173, 236, 156, 17, 236, 159, 243, 161, -1, 70, + 173, 236, 156, 17, 236, 159, 161, -1, 71, 188, + 203, 236, 153, 246, 154, 192, 38, 17, 236, 72, + 17, 236, -1, 72, -1, 73, -1, 243, 173, 234, + 156, 17, 236, -1, 173, 234, 156, 17, 236, -1, + 178, 249, -1, 201, 159, 236, 156, 236, 161, -1, + 245, 156, 159, 236, 156, 236, 161, -1, 201, 190, + 236, 190, -1, 17, 190, 236, 190, -1, 246, 156, + 201, 190, 236, 190, -1, 246, 156, 17, 190, 236, + 190, -1, -1, -1, 247, 156, 237, -1, 57, 56, + -1, 56, -1, 168, 201, 236, 156, 236, -1, 169, + 201, 236, 156, 236, -1, 89, 171, 201, 236, 156, + 236, -1, 90, 172, 201, 236, 156, 236, -1, 91, + 171, 201, 236, 156, 236, -1, 92, 172, 201, 236, + 156, 236, -1, 170, 237, 38, 201, -1, 132, 237, + 156, 237, 156, 237, -1, 133, 237, 156, 201, -1, + 134, 237, 156, 237, -1, 135, 237, 156, 237, 156, + 237, -1, 136, 237, 156, 237, 156, 237, -1, 131, + 245, -1, 248, 188, 203, 236, 153, 246, 154, 192, + -1, 251, -1, 36, -1, -1, 113, 201, 195, -1, + 113, 201, 156, 11, 236, 195, -1, 114, 201, 195, + -1, 114, 201, 156, 11, 236, 195, -1, 115, 237, + -1, 250, 116, 201, 236, 195, -1, 250, 117, 237, + 156, 201, 236, 195, -1, 137, 201, 236, 156, 4, + -1, 118, 201, 236, 247, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -1843,20 +1850,20 @@ static const yytype_uint16 yyrline[] = 1464, 1469, 1474, 1481, 1482, 1489, 1496, 1504, 1510, 1522, 1550, 1566, 1593, 1621, 1647, 1667, 1693, 1713, 1725, 1732, 1798, 1808, 1818, 1824, 1834, 1840, 1850, 1855, 1860, 1873, - 1885, 1907, 1915, 1921, 1932, 1937, 1942, 1948, 1954, 1963, - 1967, 1975, 1975, 1978, 1978, 1981, 1993, 2014, 2019, 2027, - 2028, 2032, 2032, 2036, 2036, 2039, 2042, 2066, 2078, 2077, - 2089, 2088, 2098, 2097, 2108, 2148, 2151, 2157, 2167, 2171, - 2176, 2178, 2183, 2188, 2197, 2207, 2218, 2222, 2231, 2240, - 2245, 2374, 2374, 2376, 2385, 2385, 2387, 2392, 2404, 2408, - 2413, 2417, 2421, 2425, 2429, 2433, 2437, 2441, 2445, 2470, - 2474, 2484, 2488, 2492, 2497, 2504, 2504, 2510, 2519, 2524, - 2529, 2533, 2542, 2551, 2560, 2564, 2572, 2579, 2583, 2588, - 2598, 2617, 2626, 2711, 2715, 2722, 2733, 2746, 2756, 2767, - 2777, 2788, 2796, 2806, 2813, 2816, 2817, 2824, 2828, 2833, - 2849, 2866, 2880, 2894, 2906, 2914, 2921, 2927, 2933, 2939, - 2954, 3044, 3049, 3053, 3060, 3067, 3075, 3082, 3090, 3098, - 3112, 3129, 3137 + 1885, 1907, 1915, 1921, 1932, 1937, 1942, 1947, 1952, 1958, + 1964, 1973, 1977, 1985, 1985, 1988, 1988, 1991, 2003, 2024, + 2029, 2037, 2038, 2042, 2042, 2046, 2046, 2049, 2052, 2076, + 2088, 2087, 2099, 2098, 2108, 2107, 2118, 2158, 2161, 2167, + 2177, 2181, 2186, 2188, 2193, 2198, 2207, 2217, 2228, 2232, + 2241, 2250, 2255, 2384, 2384, 2386, 2395, 2395, 2397, 2402, + 2414, 2418, 2423, 2427, 2431, 2435, 2439, 2443, 2447, 2451, + 2455, 2480, 2484, 2494, 2498, 2502, 2507, 2514, 2514, 2520, + 2529, 2534, 2539, 2543, 2552, 2561, 2570, 2574, 2582, 2589, + 2593, 2598, 2608, 2627, 2636, 2721, 2725, 2732, 2743, 2756, + 2766, 2777, 2787, 2798, 2806, 2816, 2823, 2826, 2827, 2834, + 2838, 2843, 2859, 2876, 2890, 2904, 2918, 2932, 2944, 2952, + 2959, 2965, 2971, 2977, 2992, 3082, 3087, 3091, 3098, 3105, + 3113, 3120, 3128, 3136, 3150, 3167, 3175 }; #endif @@ -1879,24 +1886,25 @@ static const char *const yytname[] = "FASTCC_TOK", "COLDCC_TOK", "X86_STDCALLCC_TOK", "X86_FASTCALLCC_TOK", "DATALAYOUT", "RET", "BR", "SWITCH", "INVOKE", "UNWIND", "UNREACHABLE", "ADD", "SUB", "MUL", "UDIV", "SDIV", "FDIV", "UREM", "SREM", "FREM", - "AND", "OR", "XOR", "SHL", "LSHR", "ASHR", "ICMP", "FCMP", "EQ", "NE", - "SLT", "SGT", "SLE", "SGE", "ULT", "UGT", "ULE", "UGE", "OEQ", "ONE", - "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ", "UNE", "MALLOC", - "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", "TRUNC", "ZEXT", - "SEXT", "FPTRUNC", "FPEXT", "BITCAST", "UITOFP", "SITOFP", "FPTOUI", - "FPTOSI", "INTTOPTR", "PTRTOINT", "PHI_TOK", "SELECT", "VAARG", - "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", "GETRESULT", - "SIGNEXT", "ZEROEXT", "NORETURN", "INREG", "SRET", "NOUNWIND", "NOALIAS", - "BYVAL", "NEST", "READNONE", "READONLY", "GC", "DEFAULT", "HIDDEN", - "PROTECTED", "'('", "')'", "'='", "','", "'*'", "'\\\\'", "'['", "'x'", - "']'", "'<'", "'>'", "'{'", "'}'", "'c'", "$accept", "ArithmeticOps", - "LogicalOps", "CastOps", "IPredicates", "FPredicates", "IntType", - "FPType", "LocalName", "OptLocalName", "OptAddrSpace", "OptLocalAssign", - "GlobalName", "OptGlobalAssign", "GlobalAssign", "GVInternalLinkage", - "GVExternalLinkage", "GVVisibilityStyle", "FunctionDeclareLinkage", - "FunctionDefineLinkage", "AliasLinkage", "OptCallingConv", "ParamAttr", - "OptParamAttrs", "FuncAttr", "OptFuncAttrs", "OptGC", "OptAlign", - "OptCAlign", "SectionString", "OptSection", "GlobalVarAttributes", + "AND", "OR", "XOR", "SHL", "LSHR", "ASHR", "ICMP", "FCMP", "VICMP", + "VFCMP", "EQ", "NE", "SLT", "SGT", "SLE", "SGE", "ULT", "UGT", "ULE", + "UGE", "OEQ", "ONE", "OLT", "OGT", "OLE", "OGE", "ORD", "UNO", "UEQ", + "UNE", "MALLOC", "ALLOCA", "FREE", "LOAD", "STORE", "GETELEMENTPTR", + "TRUNC", "ZEXT", "SEXT", "FPTRUNC", "FPEXT", "BITCAST", "UITOFP", + "SITOFP", "FPTOUI", "FPTOSI", "INTTOPTR", "PTRTOINT", "PHI_TOK", + "SELECT", "VAARG", "EXTRACTELEMENT", "INSERTELEMENT", "SHUFFLEVECTOR", + "GETRESULT", "SIGNEXT", "ZEROEXT", "NORETURN", "INREG", "SRET", + "NOUNWIND", "NOALIAS", "BYVAL", "NEST", "READNONE", "READONLY", "GC", + "DEFAULT", "HIDDEN", "PROTECTED", "'('", "')'", "'='", "','", "'*'", + "'\\\\'", "'['", "'x'", "']'", "'<'", "'>'", "'{'", "'}'", "'c'", + "$accept", "ArithmeticOps", "LogicalOps", "CastOps", "IPredicates", + "FPredicates", "IntType", "FPType", "LocalName", "OptLocalName", + "OptAddrSpace", "OptLocalAssign", "GlobalName", "OptGlobalAssign", + "GlobalAssign", "GVInternalLinkage", "GVExternalLinkage", + "GVVisibilityStyle", "FunctionDeclareLinkage", "FunctionDefineLinkage", + "AliasLinkage", "OptCallingConv", "ParamAttr", "OptParamAttrs", + "FuncAttr", "OptFuncAttrs", "OptGC", "OptAlign", "OptCAlign", + "SectionString", "OptSection", "GlobalVarAttributes", "GlobalVarAttribute", "PrimType", "Types", "ArgType", "ResultTypes", "ArgTypeList", "ArgTypeListI", "TypeListI", "ConstVal", "ConstExpr", "ConstVector", "GlobalType", "ThreadLocal", "AliaseeRef", "Module", @@ -1931,47 +1939,47 @@ static const yytype_uint16 yytoknum[] = 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 40, 41, 61, 44, 42, 92, 91, 120, 93, - 60, 62, 123, 125, 99 + 405, 406, 407, 40, 41, 61, 44, 42, 92, 91, + 120, 93, 60, 62, 123, 125, 99 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 165, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 167, 167, 167, 167, 167, 167, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 170, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 170, 170, 171, 172, 172, 172, 172, - 172, 173, 173, 173, 174, 174, 175, 175, 176, 176, - 177, 177, 178, 178, 179, 180, 180, 180, 180, 180, - 181, 181, 181, 182, 182, 182, 182, 183, 183, 183, - 184, 184, 184, 184, 184, 185, 185, 185, 186, 186, - 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 188, 188, 189, 189, 189, - 189, 189, 189, 190, 190, 191, 191, 192, 192, 193, - 193, 194, 195, 195, 196, 196, 197, 197, 198, 198, - 198, 198, 198, 198, 198, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 200, 201, - 201, 202, 202, 203, 203, 203, 203, 204, 204, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 207, - 207, 208, 208, 209, 209, 210, 210, 211, 211, 212, - 212, 214, 213, 215, 213, 213, 213, 213, 216, 213, - 217, 213, 218, 213, 213, 213, 213, 219, 220, 220, - 221, 222, 222, 222, 223, 223, 224, 224, 224, 224, - 225, 226, 226, 227, 228, 228, 229, 230, 231, 231, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 233, 233, 233, 233, 234, 234, 235, 236, 236, - 237, 237, 238, 239, 239, 239, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 241, 241, 242, 243, 243, - 244, 244, 244, 244, 244, 245, 245, 246, 246, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 248, 248, 249, 249, 249, 249, 249, 249, - 249, 249, 249 + 0, 167, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 169, 169, 169, 169, 169, 169, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, + 171, 171, 171, 171, 171, 171, 171, 171, 171, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 173, 174, 174, 174, 174, + 174, 175, 175, 175, 176, 176, 177, 177, 178, 178, + 179, 179, 180, 180, 181, 182, 182, 182, 182, 182, + 183, 183, 183, 184, 184, 184, 184, 185, 185, 185, + 186, 186, 186, 186, 186, 187, 187, 187, 188, 188, + 188, 188, 188, 188, 188, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 190, 190, 191, 191, 191, + 191, 191, 191, 192, 192, 193, 193, 194, 194, 195, + 195, 196, 197, 197, 198, 198, 199, 199, 200, 200, + 200, 200, 200, 200, 200, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 202, 203, + 203, 204, 204, 205, 205, 205, 205, 206, 206, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 207, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 209, 209, 210, 210, 211, 211, 212, 212, 213, + 213, 214, 214, 216, 215, 217, 215, 215, 215, 215, + 218, 215, 219, 215, 220, 215, 215, 215, 215, 221, + 222, 222, 223, 224, 224, 224, 225, 225, 226, 226, + 226, 226, 227, 228, 228, 229, 230, 230, 231, 232, + 233, 233, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 235, 235, 235, 235, 236, 236, 237, + 238, 238, 239, 239, 240, 241, 241, 241, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 243, 243, 244, + 245, 245, 246, 246, 246, 246, 246, 247, 247, 248, + 248, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 250, 250, 251, 251, + 251, 251, 251, 251, 251, 251, 251 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1996,20 +2004,20 @@ static const yytype_uint8 yyr2[] = 1, 1, 3, 1, 3, 1, 0, 1, 3, 4, 3, 3, 4, 4, 3, 6, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, - 5, 8, 6, 6, 7, 7, 6, 8, 8, 3, - 1, 1, 1, 1, 0, 2, 6, 1, 0, 1, - 2, 0, 3, 0, 3, 3, 3, 3, 0, 8, - 0, 9, 0, 9, 5, 2, 3, 1, 3, 3, - 3, 3, 1, 0, 5, 3, 1, 3, 1, 0, - 10, 1, 1, 4, 1, 1, 2, 3, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 5, 1, 1, 1, 1, 1, 1, 2, 1, 3, - 2, 2, 3, 2, 0, 1, 2, 2, 3, 9, - 9, 8, 14, 1, 1, 6, 5, 2, 6, 7, - 4, 4, 6, 6, 0, 0, 3, 2, 1, 5, - 5, 6, 6, 4, 6, 4, 4, 6, 6, 2, - 8, 1, 1, 0, 3, 6, 3, 6, 2, 5, - 7, 5, 4 + 5, 8, 6, 6, 7, 7, 7, 7, 6, 8, + 8, 3, 1, 1, 1, 1, 0, 2, 6, 1, + 0, 1, 2, 0, 3, 0, 3, 3, 3, 3, + 0, 8, 0, 9, 0, 9, 5, 2, 3, 1, + 3, 3, 3, 3, 1, 0, 5, 3, 1, 3, + 1, 0, 10, 1, 1, 4, 1, 1, 2, 3, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 5, 1, 1, 1, 1, 1, 1, 2, + 1, 3, 2, 2, 3, 2, 0, 1, 2, 2, + 3, 9, 9, 8, 14, 1, 1, 6, 5, 2, + 6, 7, 4, 4, 6, 6, 0, 0, 3, 2, + 1, 5, 5, 6, 6, 6, 6, 4, 6, 4, + 4, 6, 6, 2, 8, 1, 1, 0, 3, 6, + 3, 6, 2, 5, 7, 5, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -2017,576 +2025,594 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 73, 61, 70, 62, 71, 63, 213, 211, 0, 0, - 0, 0, 0, 0, 83, 72, 0, 73, 209, 87, - 90, 0, 0, 225, 0, 0, 68, 0, 74, 75, + 73, 61, 70, 62, 71, 63, 215, 213, 0, 0, + 0, 0, 0, 0, 83, 72, 0, 73, 211, 87, + 90, 0, 0, 227, 0, 0, 68, 0, 74, 75, 77, 76, 78, 80, 79, 81, 82, 84, 85, 86, - 83, 83, 204, 1, 210, 88, 89, 83, 214, 91, - 92, 93, 94, 83, 274, 212, 274, 0, 0, 233, - 226, 227, 215, 261, 262, 217, 138, 139, 140, 143, - 142, 141, 144, 145, 0, 0, 0, 0, 263, 264, - 146, 216, 148, 204, 204, 95, 203, 0, 98, 98, - 275, 271, 69, 244, 245, 246, 270, 228, 229, 232, + 83, 83, 206, 1, 212, 88, 89, 83, 216, 91, + 92, 93, 94, 83, 276, 214, 276, 0, 0, 235, + 228, 229, 217, 263, 264, 219, 138, 139, 140, 143, + 142, 141, 144, 145, 0, 0, 0, 0, 265, 266, + 146, 218, 148, 206, 206, 95, 205, 0, 98, 98, + 277, 273, 69, 246, 247, 248, 272, 230, 231, 234, 0, 166, 149, 0, 0, 0, 0, 155, 167, 0, - 0, 166, 0, 0, 0, 97, 96, 0, 201, 202, - 0, 0, 99, 100, 101, 102, 103, 0, 247, 0, - 313, 273, 0, 230, 165, 115, 161, 163, 0, 0, + 0, 166, 0, 0, 0, 97, 96, 0, 203, 204, + 0, 0, 99, 100, 101, 102, 103, 0, 249, 0, + 317, 275, 0, 232, 165, 115, 161, 163, 0, 0, 0, 0, 0, 0, 154, 0, 0, 147, 0, 0, - 160, 0, 159, 0, 224, 138, 139, 140, 143, 142, - 141, 0, 0, 67, 67, 104, 0, 241, 242, 243, - 312, 298, 0, 0, 0, 0, 98, 283, 284, 2, + 160, 0, 159, 0, 226, 138, 139, 140, 143, 142, + 141, 0, 0, 67, 67, 104, 0, 243, 244, 245, + 316, 300, 0, 0, 0, 0, 98, 285, 286, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 15, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 272, 98, 287, 0, 311, 231, 158, 0, - 123, 67, 67, 157, 0, 168, 0, 123, 67, 67, - 0, 205, 186, 187, 182, 184, 183, 185, 188, 181, - 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 180, 179, 218, 0, - 297, 277, 67, 268, 276, 0, 0, 55, 0, 0, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 0, 53, 54, 49, 50, 51, 52, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 0, 129, 129, - 318, 67, 67, 309, 0, 0, 0, 0, 0, 67, - 67, 67, 0, 0, 0, 0, 0, 106, 108, 107, - 105, 109, 110, 111, 112, 113, 116, 164, 162, 151, - 152, 153, 156, 66, 150, 220, 222, 0, 0, 0, - 0, 0, 0, 0, 0, 170, 200, 0, 0, 0, - 174, 0, 171, 0, 0, 0, 134, 239, 250, 251, - 252, 257, 253, 254, 255, 256, 248, 0, 259, 266, - 265, 267, 0, 0, 278, 0, 0, 67, 67, 0, - 314, 0, 316, 295, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 274, 98, 289, 0, 315, 233, + 158, 0, 123, 67, 67, 157, 0, 168, 0, 123, + 67, 67, 0, 207, 186, 187, 182, 184, 183, 185, + 188, 181, 177, 178, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 180, 179, 220, 0, 299, 279, 67, 270, 278, 0, + 0, 55, 0, 0, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 0, 53, 54, 49, 50, 51, + 52, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 0, 0, 0, 129, 129, 322, 67, 67, 313, + 0, 0, 0, 0, 0, 67, 67, 67, 0, 0, + 0, 0, 0, 106, 108, 107, 105, 109, 110, 111, + 112, 113, 116, 164, 162, 151, 152, 153, 156, 66, + 150, 222, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 170, 202, 0, 0, 0, 174, 0, + 171, 0, 0, 0, 134, 241, 252, 253, 254, 259, + 255, 256, 257, 258, 250, 0, 261, 268, 267, 269, + 0, 0, 280, 0, 0, 67, 67, 67, 67, 0, + 318, 0, 320, 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 114, 120, 119, 117, 118, 121, 122, 124, 134, 134, 0, 0, - 0, 295, 0, 0, 0, 0, 0, 169, 155, 167, - 0, 172, 173, 0, 0, 0, 0, 219, 238, 115, - 236, 0, 249, 0, 0, 269, 0, 0, 0, 0, - 0, 0, 0, 0, 322, 0, 0, 0, 305, 306, - 0, 0, 0, 0, 0, 303, 0, 129, 0, 221, - 223, 67, 0, 0, 0, 0, 0, 0, 0, 199, - 176, 0, 0, 0, 0, 0, 0, 136, 134, 65, - 0, 123, 0, 258, 0, 0, 294, 0, 0, 129, - 130, 129, 0, 0, 0, 0, 0, 0, 321, 299, - 300, 294, 0, 319, 67, 206, 0, 0, 190, 0, + 0, 0, 0, 297, 0, 0, 0, 0, 0, 169, + 155, 167, 0, 172, 173, 0, 0, 0, 0, 221, + 240, 115, 238, 0, 251, 0, 0, 271, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 326, 0, + 0, 0, 309, 310, 0, 0, 0, 0, 0, 307, + 0, 129, 0, 223, 225, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 201, 176, 0, 0, 0, + 0, 0, 0, 136, 134, 65, 0, 123, 0, 260, + 0, 0, 296, 0, 0, 0, 0, 129, 130, 129, + 0, 0, 0, 0, 0, 0, 325, 301, 302, 296, + 0, 323, 67, 208, 0, 0, 0, 0, 190, 0, 0, 0, 0, 175, 0, 0, 67, 131, 137, 135, - 64, 235, 237, 115, 132, 0, 0, 0, 115, 115, - 0, 301, 302, 315, 317, 296, 0, 0, 304, 307, - 308, 0, 129, 0, 0, 0, 196, 0, 0, 192, - 193, 189, 65, 133, 127, 260, 0, 0, 0, 0, - 123, 0, 288, 0, 123, 320, 194, 195, 0, 0, - 0, 234, 0, 125, 0, 281, 0, 0, 106, 108, - 115, 115, 0, 115, 115, 289, 310, 191, 197, 198, - 128, 0, 240, 279, 0, 280, 0, 291, 290, 0, - 0, 0, 126, 0, 0, 0, 115, 115, 0, 0, - 0, 293, 292, 286, 0, 0, 285, 0, 282 + 64, 237, 239, 115, 132, 0, 0, 0, 115, 115, + 0, 303, 304, 305, 306, 319, 321, 298, 0, 0, + 308, 311, 312, 0, 129, 0, 0, 0, 0, 0, + 198, 0, 0, 192, 193, 189, 65, 133, 127, 262, + 0, 0, 0, 0, 123, 0, 290, 0, 123, 324, + 194, 195, 196, 197, 0, 0, 0, 236, 0, 125, + 0, 283, 0, 0, 106, 108, 115, 115, 0, 115, + 115, 291, 314, 191, 199, 200, 128, 0, 242, 281, + 0, 282, 0, 293, 292, 0, 0, 0, 126, 0, + 0, 0, 115, 115, 0, 0, 0, 295, 294, 288, + 0, 0, 287, 0, 284 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 263, 264, 265, 290, 307, 161, 162, 78, 531, + -1, 267, 268, 269, 294, 311, 161, 162, 78, 551, 112, 12, 79, 14, 15, 40, 41, 42, 47, 53, - 117, 127, 336, 228, 415, 339, 602, 583, 390, 487, - 564, 437, 488, 80, 163, 136, 153, 137, 138, 109, - 356, 378, 357, 120, 87, 154, 16, 17, 18, 20, - 19, 366, 416, 417, 62, 23, 60, 100, 440, 441, - 128, 169, 54, 95, 55, 48, 443, 379, 82, 381, - 273, 274, 56, 91, 92, 222, 587, 131, 313, 540, - 454, 223, 224, 225, 226 + 117, 127, 342, 230, 425, 345, 628, 609, 400, 503, + 588, 449, 504, 80, 163, 136, 153, 137, 138, 109, + 364, 386, 365, 120, 87, 154, 16, 17, 18, 20, + 19, 374, 426, 427, 62, 23, 60, 100, 452, 453, + 128, 169, 54, 95, 55, 48, 455, 387, 82, 389, + 277, 278, 56, 91, 92, 224, 613, 131, 319, 560, + 468, 225, 226, 227, 228 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -561 +#define YYPACT_NINF -572 static const yytype_int16 yypact[] = { - 284, -561, -561, -561, -561, -561, -561, -561, -34, -121, - 14, -63, 101, -22, 17, -561, 127, 883, -561, 22, - 162, 10, 23, -561, 12, 158, -561, 1464, -561, -561, - -561, -561, -561, -561, -561, -561, -561, -561, -561, -561, - -46, -46, 176, -561, -561, -561, -561, -46, -561, -561, - -561, -561, -561, -46, 200, -561, -10, 209, 219, 234, - -561, -561, -561, -561, -561, 124, -561, -561, -561, -561, - -561, -561, -561, -561, 272, 275, 2, 126, -561, -561, - -561, 28, -561, 243, 243, 196, -561, 165, 33, 33, - -561, -561, 215, -561, -561, -561, -561, -561, -561, -561, - -73, 1059, -561, 129, 132, 506, 124, -561, 28, -111, - 134, 1059, 137, 165, 165, -561, -561, 1014, -561, -561, - 1504, 292, -561, -561, -561, -561, -561, 1562, -561, -6, - 1843, -561, 278, -561, -561, 28, -561, 147, 153, 1620, - 1620, 148, -110, 1620, -561, 309, 164, -561, 1504, 1620, - 124, 166, 28, 388, -561, 342, 310, 311, 314, 316, - 317, 156, 322, 1115, 279, -561, 16, -561, -561, -561, - -561, -561, 281, 1660, 20, 327, 33, -561, -561, -561, - -561, -561, -561, -561, -561, -561, -561, -561, -561, -561, - -561, -561, -561, -561, 511, 787, 1620, 1620, 1620, 1620, - -561, -561, -561, -561, -561, -561, -561, -561, -561, -561, - -561, -561, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, -561, 33, -561, -60, -561, -561, 434, 1345, - -561, -7, -33, -561, 181, 28, 192, -561, 279, -16, - 1014, -561, -561, -561, -561, -561, -561, -561, -561, -561, - -561, -561, 511, 787, 198, 199, 201, 203, 204, 1385, - 1678, 609, 329, 207, 208, 210, -561, -561, -561, 211, - -561, 124, 702, -561, 206, 841, 841, -561, 841, 1562, - -561, -561, -561, -561, -561, -561, -561, -561, -561, -561, - 1620, -561, -561, -561, -561, -561, -561, -561, -561, -561, - -561, -561, -561, -561, -561, -561, -561, 1620, 100, 114, - -561, 702, -31, 222, 225, 227, 228, 235, 239, 702, - 702, 702, 325, 1562, 1620, 1620, 360, -561, -561, -561, - -561, -561, -561, -561, -561, -561, -561, -561, -561, -96, - -561, -561, -561, -561, -96, -561, 137, 361, 247, 252, - 1504, 1504, 1504, 1504, 1504, -561, -561, -54, 788, -88, - -561, -85, -561, 1504, 1504, 1504, 250, 1406, -561, -561, - -561, -561, -561, -561, -561, -561, 345, 1504, -561, -561, - -561, -561, 1620, 255, -561, 259, 841, 702, 702, 4, - -561, 5, -561, -561, 841, 249, 1620, 1620, 1620, 1620, - 1620, 261, 262, 263, 1620, 841, 702, 266, -561, -561, - -561, -561, -561, -561, -561, -561, 250, 250, 1620, 1504, - 1504, -561, 269, 274, 276, 277, 1504, -561, 265, 969, - -83, -561, -561, 282, 283, 391, -5, -561, -561, 28, - 285, 289, -561, 413, -78, -561, 426, 427, 294, 293, - 295, 841, 442, 841, 296, 299, 841, 300, 28, -561, - 301, 302, 444, 841, 841, 28, 306, 305, 1620, -561, - -561, -45, 307, 308, 94, 1504, 1504, 1504, 1504, -561, - -561, 312, 1504, 1504, 1620, 438, 463, -561, 250, 1746, - 1446, -561, 315, -561, 841, 841, 1718, 841, 841, 305, - -561, 305, 1620, 841, 318, 1620, 1620, 1620, -561, -561, - -561, 1718, 415, -561, 702, -561, 1504, 1504, -561, 320, - 323, 324, 328, -561, 331, 332, -30, -561, -561, -561, - -561, -561, -561, 28, 81, 455, 334, 333, 123, 28, - 95, -561, -561, -561, -561, -561, 335, 841, -561, -561, - -561, 98, 305, 339, 343, 1504, -561, 1504, 1504, -561, - -561, -561, 1746, -561, 433, -561, 479, -4, 560, 560, - -561, 1736, -561, 341, -561, -561, -561, -561, 346, 349, - 351, -561, 500, 358, 841, -561, 1255, -1, 355, 356, - -561, -561, 87, 123, 28, -561, -96, -561, -561, -561, - -561, 489, -561, -561, 370, -561, 1255, 434, 434, 495, - 560, 560, -561, 498, 373, 841, -561, -561, 841, 514, - 460, 434, 434, -561, 841, 516, -561, 841, -561 + 445, -572, -572, -572, -572, -572, -572, -572, -2, -122, + 19, -58, 90, -40, 26, -572, 112, 855, -572, 52, + 217, -28, 4, -572, 12, 146, -572, 1594, -572, -572, + -572, -572, -572, -572, -572, -572, -572, -572, -572, -572, + 70, 70, 125, -572, -572, -572, -572, 70, -572, -572, + -572, -572, -572, 70, 166, -572, -8, 176, 185, 201, + -572, -572, -572, -572, -572, 80, -572, -572, -572, -572, + -572, -572, -572, -572, 232, 241, 2, 227, -572, -572, + -572, -1, -572, 211, 211, 137, -572, 118, 258, 258, + -572, -572, 87, -572, -572, -572, -572, -572, -572, -572, + -57, 1357, -572, 105, 139, 1020, 80, -572, -1, -107, + 109, 1357, 145, 118, 118, -572, -572, 1400, -572, -572, + 1634, 302, -572, -572, -572, -572, -572, 1677, -572, -16, + 1856, -572, 290, -572, -572, -1, -572, 159, 177, 1695, + 1695, 179, -102, 1695, -572, 331, 189, -572, 1634, 1695, + 80, 186, -1, 247, -572, 226, 335, 338, 339, 342, + 344, 269, 345, 1123, 303, -572, 24, -572, -572, -572, + -572, -572, 300, 1752, 76, 347, 258, -572, -572, -572, + -572, -572, -572, -572, -572, -572, -572, -572, -572, -572, + -572, -572, -572, -572, 314, 845, 314, 845, 1695, 1695, + 1695, 1695, -572, -572, -572, -572, -572, -572, -572, -572, + -572, -572, -572, -572, 1695, 1695, 1695, 1695, 1695, 1695, + 1695, 1695, 1695, 1695, -572, 258, -572, 97, -572, -572, + 172, 1418, -572, -43, -31, -572, 196, -1, 206, -572, + 303, -12, 1400, -572, -572, -572, -572, -572, -572, -572, + -572, -572, -572, -572, 314, 845, 314, 845, 208, 216, + 219, 220, 223, 1473, 1795, 1063, 348, 224, 225, 234, + -572, -572, -572, 237, -572, 80, 843, -572, 238, 524, + 524, -572, 524, 1677, -572, -572, -572, -572, -572, -572, + -572, -572, -572, -572, 1695, -572, -572, -572, -572, -572, + -572, -572, -572, -572, -572, -572, -572, -572, -572, -572, + -572, 1695, 1695, 1695, 27, 29, -572, 843, -23, 248, + 249, 263, 264, 265, 266, 843, 843, 843, 341, 1677, + 1695, 1695, 389, -572, -572, -572, -572, -572, -572, -572, + -572, -572, -572, -572, -572, 198, -572, -572, -572, -572, + 198, -572, 145, 359, 250, 270, 271, 272, 1634, 1634, + 1634, 1634, 1634, -572, -572, -30, 1314, -104, -572, -101, + -572, 1634, 1634, 1634, 275, 1518, -572, -572, -572, -572, + -572, -572, -572, -572, 366, 1634, -572, -572, -572, -572, + 1695, 276, -572, 277, 524, 843, 843, 843, 843, 25, + -572, 35, -572, -572, 524, 278, 1695, 1695, 1695, 1695, + 1695, 280, 282, 283, 1695, 524, 843, 287, -572, -572, + -572, -572, -572, -572, -572, -572, 275, 275, 1695, 1634, + 1634, 1634, 1634, -572, 291, 292, 293, 294, 1634, -572, + 288, 975, -99, -572, -572, 296, 297, 408, 9, -572, + -572, -1, 299, 304, -572, 435, -96, -572, 442, 443, + 308, 306, 310, 325, 326, 524, 479, 524, 328, 329, + 524, 334, -1, -572, 336, 337, 487, 524, 524, -1, + 349, 350, 1695, -572, -572, -20, 351, 352, 353, 354, + 102, 1634, 1634, 1634, 1634, -572, -572, 356, 1634, 1634, + 1695, 489, 497, -572, 275, 571, 1576, -572, 357, -572, + 524, 524, 1853, 524, 524, 524, 524, 350, -572, 350, + 1695, 524, 358, 1695, 1695, 1695, -572, -572, -572, 1853, + 459, -572, 843, -572, 1634, 1634, 1634, 1634, -572, 360, + 369, 364, 368, -572, 371, 376, -15, -572, -572, -572, + -572, -572, -572, -1, 6, 512, 380, 378, 71, -1, + 171, -572, -572, -572, -572, -572, -572, -572, 379, 524, + -572, -572, -572, 174, 350, 385, 387, 388, 391, 1634, + -572, 1634, 1634, -572, -572, -572, 571, -572, 499, -572, + 536, -6, 699, 699, -572, 1871, -572, 393, -572, -572, + -572, -572, -572, -572, 401, 407, 409, -572, 558, 418, + 524, -572, 1265, -3, 415, 417, -572, -572, -19, 71, + -1, -572, 198, -572, -572, -572, -572, 549, -572, -572, + 416, -572, 1265, 172, 172, 556, 699, 699, -572, 557, + 419, 524, -572, -572, 524, 559, 507, 172, 172, -572, + 524, 563, -572, 524, -572 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -561, 406, 407, 408, 298, 303, -173, -561, 0, -15, - -150, 454, 8, -561, -561, -561, -561, 189, -561, -561, - -561, -149, -561, -409, -561, -234, -561, -561, -289, 24, - -561, -404, -561, -561, -26, 330, -122, -561, 443, 452, - -92, -159, -226, 102, 183, 321, -561, -561, 548, -561, - -561, -561, -561, -561, -561, -561, -561, -561, -561, -561, - 477, -561, -561, -561, -561, -561, -561, -560, -76, 46, - -105, -561, -561, 519, -561, -561, -561, -561, -561, 61, - 160, -561, -561, -561, -561 + -572, 451, 453, 454, -174, -152, -173, -572, 0, 1, + -146, 493, 3, -572, -572, -572, -572, 49, -572, -572, + -572, -139, -572, -416, -572, -223, -572, -572, -311, 34, + -572, -397, -572, -572, -26, 361, -120, -572, 478, 486, + -64, -153, -250, 164, 207, 355, -572, -572, 577, -572, + -572, -572, -572, -572, -572, -572, -572, -572, -572, -572, + 528, -572, -572, -572, -572, -572, -572, -571, -115, 162, + -191, -572, -572, 540, -572, -572, -572, -572, -572, 89, + 187, -572, -572, -572, -572 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -209 +#define YYTABLE_NINF -211 static const yytype_int16 yytable[] = { - 11, 81, 278, 344, 266, 166, 104, 277, 13, 110, - 277, 90, 469, 470, 268, 451, 453, 11, 21, 93, - 392, 110, 167, 110, 110, 13, 604, 279, 164, 485, - 489, 275, 24, 22, 359, 361, 2, 276, 110, 4, - 409, 410, 411, 143, 143, 412, 614, 110, 486, 413, - 414, 108, 144, 234, 324, 325, 238, 452, 452, 29, - 30, 31, 32, 33, 34, 35, 426, 36, 45, 426, - 46, 426, 25, 431, 323, 135, 426, 241, 432, 108, - 481, 132, 110, 493, 529, 135, 133, 267, 345, 346, - 26, 152, 11, 310, 121, 122, 123, 124, 125, 126, - 426, 152, 37, 38, 39, 427, 111, 515, 314, 315, - 316, 317, 318, 231, 232, 485, 322, 235, 111, 27, - 111, 111, 561, 239, 562, 609, 394, 43, 341, 568, - 569, 28, 430, 63, 64, 111, 106, 66, 67, 68, - 69, 70, 71, 72, 111, 1, 2, 272, 3, 4, - 5, 444, 340, 94, 110, 585, 168, 386, 605, 244, - 245, 246, 247, 57, 105, 37, 38, 39, 110, 59, - 308, 309, 272, 311, 269, 73, 58, -144, 513, 111, - 61, 607, 608, -67, 610, 611, 312, 272, 272, 272, - 272, 272, 319, 320, 321, 272, 380, 118, 119, 380, - 380, 405, 380, 135, 49, 50, 51, 621, 622, 52, - 543, 85, 544, 86, 152, 148, 149, 409, 410, 411, - 407, 90, 412, 409, 410, 411, 413, 414, 412, 83, - 84, 97, 413, 414, 1, 380, 88, 3, 115, 5, - 116, 98, 89, 380, 380, 380, 518, 570, 502, 571, - 574, 111, 571, 152, 389, -67, 99, 534, 421, 422, - 423, 424, 425, 575, 387, 111, 113, 114, 391, -67, - 266, 433, 434, 435, -144, 101, 102, 445, -144, 103, - 86, 388, 74, 75, -208, 145, 76, 139, 77, 107, - 140, 457, 147, 459, 460, 461, 165, 152, 406, 272, - 227, 229, -69, 1, 2, 230, 3, 4, 5, 233, - 380, 380, 380, 236, 6, 7, 237, 240, 380, -56, - -57, 383, 384, -60, 385, -59, -58, 472, 473, 380, - 380, 248, 429, 110, 479, 8, 592, 270, 277, 9, - 596, 439, 342, 10, 343, -55, -55, -55, -55, 350, - 351, 362, 352, 267, 353, 354, 272, 393, 363, 364, - 382, 365, 367, 404, 408, 401, 402, 403, 242, 243, - 272, 458, 272, 272, 272, 380, 395, 380, 465, 396, - 380, 397, 398, 519, 520, 521, 522, 380, 380, 399, - 524, 525, 471, 400, 586, 63, 64, 545, 419, 418, - 548, 549, 550, 420, 436, 442, 456, 1, 2, 446, - 3, 4, 5, 447, 606, 462, 463, 464, 380, 380, - 468, 380, 380, 475, 553, 554, 480, 380, 476, 484, - 477, 478, 448, 449, 450, 492, 482, 483, 380, 490, - 455, 491, 514, 494, 495, 496, 500, 497, 508, 498, - 502, 466, 467, 503, 505, 506, 507, 511, 526, 512, - 527, 516, 517, 578, 533, 579, 580, 528, 452, 535, - 539, 380, 547, 523, 555, 556, 272, 565, 557, 272, - 272, 272, 558, 559, 560, 539, 582, 326, 566, 530, - 567, 576, 380, 380, 572, 577, 584, 499, 597, 501, - 595, 598, 504, 599, 600, 601, -18, -19, 380, 509, - 510, 612, 615, 63, 64, 618, 106, 66, 67, 68, - 69, 70, 71, 72, 613, 1, 2, 619, 3, 4, - 5, 624, 625, 627, 380, 380, 219, 220, 221, 380, - 536, 537, 380, 541, 542, 594, 130, 581, 380, 546, - 348, 380, 327, 328, 146, 73, 349, 142, 563, 338, - 552, 347, 530, 368, 369, 44, 129, 63, 64, 370, - 329, 330, 551, 331, 332, 96, 333, 334, 335, 1, - 2, 474, 3, 4, 5, 371, 372, 373, 0, 0, - 0, 0, 0, 573, 0, 0, 0, 0, 0, 0, - 374, 375, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 326, 590, 591, 63, 64, 376, 106, - 155, 156, 157, 158, 159, 160, 72, 0, 1, 2, - 603, 3, 4, 5, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 252, - 253, 0, 0, 0, 0, 0, 616, 617, 73, 0, - 0, 620, 74, 75, 623, 0, 76, 0, 77, 141, - 626, 0, 0, 628, 0, 0, 254, 200, 588, 589, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 0, - 255, 0, 256, 257, 258, 0, 329, 330, 0, 331, - 332, 0, 333, 334, 335, 368, 369, 0, 0, 63, - 64, 370, 0, 0, 0, 0, 0, 0, 0, 0, - 377, 1, 2, 0, 3, 4, 5, 371, 372, 373, + 11, 81, 282, 13, 402, 281, 104, 166, 281, 316, + 270, 110, 167, 90, 367, 369, 350, 11, 272, 635, + 13, 93, 312, 110, 320, 321, 322, 323, 324, 483, + 484, 110, 328, 24, 110, 505, 465, 283, 243, 110, + 501, 630, 110, 501, 2, 313, 467, 4, 271, 143, + 21, 108, 438, 110, 143, 438, 164, 438, 144, 443, + 438, 640, 502, 236, 444, 22, 497, 509, 29, 30, + 31, 32, 33, 34, 35, 135, 36, 25, 466, 108, + 354, 110, 356, 110, 240, 135, 329, 279, 466, 83, + 84, 152, 11, 280, 351, 352, 88, 26, 45, 132, + 46, 152, 89, 355, 133, 357, 1, 549, 27, 3, + 111, 5, 43, 233, 234, 28, 442, 237, 346, 419, + 420, 421, 111, 241, 422, -144, 438, 57, 423, 424, + 111, 439, 347, 111, 533, 456, 404, 586, 111, 585, + 417, 111, 592, 593, 419, 420, 421, 276, 168, 422, + 118, 119, 111, 423, 424, 611, -67, 94, 631, 58, + 85, 388, 86, 394, 388, 388, 105, 388, 61, 273, + 531, 59, 314, 315, 276, 317, 37, 38, 39, 115, + 111, 116, 111, 399, -67, 401, -67, 90, 318, 276, + 276, 276, 276, 276, 325, 326, 327, 276, 97, 457, + 633, 634, 388, 636, 637, 135, 565, 98, 566, 415, + 388, 388, 388, 330, 331, 471, 152, 473, 474, 475, + 37, 38, 39, 99, -144, 332, 647, 648, -144, -55, + -55, -55, -55, 101, 63, 64, 102, 106, 66, 67, + 68, 69, 70, 71, 72, 103, 1, 2, 86, 3, + 4, 5, 244, 245, 63, 64, 538, 152, 520, 49, + 50, 51, 145, 599, 52, 139, 1, 2, 395, 3, + 4, 5, 246, 247, 248, 249, 73, 148, 149, 388, + 388, 388, 388, 388, 554, 396, 397, 398, 270, 388, + 113, 114, 333, 334, 433, 434, 435, 436, 437, 140, + 388, 388, 147, 152, 416, 276, 165, 445, 446, 447, + 335, 336, 229, 337, 338, 231, 339, 340, 341, 121, + 122, 123, 124, 125, 126, 594, 271, 595, 598, 567, + 595, 232, 570, 571, 572, 238, 419, 420, 421, 242, + 441, 422, 235, 239, -56, 423, 424, -57, -60, 451, + 388, -59, 388, -58, 250, 388, 274, 110, 281, 348, + 349, 358, 388, 388, 276, 486, 487, 488, 489, 359, + 370, 618, 360, 361, 495, 622, 362, 371, 372, 414, + 276, 472, 276, 276, 276, 74, 75, 373, 479, 76, + 375, 77, 107, 418, 390, 388, 388, 428, 388, 388, + 388, 388, 485, 429, 405, 406, 388, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 388, 612, 407, + 408, 409, 410, 430, 431, 432, 454, 539, 540, 541, + 542, 448, 458, 459, 544, 545, 476, 470, 477, 478, + 632, 391, 392, 482, 393, -210, 500, 491, 492, 493, + 494, 496, 498, 499, 388, 506, 532, 508, 507, 510, + 511, 512, 513, -69, 1, 2, 514, 3, 4, 5, + 575, 576, 577, 578, 546, 6, 7, 388, 388, 403, + 553, 515, 516, 518, 520, 521, 559, 411, 412, 413, + 523, 526, 524, 525, 276, 388, 8, 276, 276, 276, + 9, 548, 529, 559, 10, 550, 530, 534, 535, 536, + 537, 547, 466, 555, 569, 604, 579, 605, 606, 543, + 581, 388, 388, 580, 582, 583, 388, 376, 377, 388, + 584, 63, 64, 378, 589, 388, 590, 591, 388, 600, + 596, 601, 602, 1, 2, 603, 3, 4, 5, 379, + 380, 381, 608, 610, 621, 623, 460, 461, 462, 463, + 464, 624, 626, 625, 382, 383, 469, 627, -18, 620, + -19, 638, 639, 641, 644, 645, 650, 480, 481, 651, + 653, 221, 384, 222, 223, 130, 550, 607, 587, 146, + 1, 142, 344, 3, 44, 5, 96, 353, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 254, 255, 256, 257, 129, 573, 0, + 490, 0, 0, 0, 332, 0, 0, 517, 0, 519, + 0, 0, 522, 0, 0, 0, 0, 0, 0, 527, + 528, 0, 258, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 0, 259, 0, 260, 261, + 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 556, 557, 0, 561, 562, 563, 564, 0, + 0, 0, 0, 568, 0, 0, 385, 0, 0, 0, + 0, 333, 334, 0, 574, 0, 0, 0, 0, 0, + 0, 0, 376, 377, 0, 0, 63, 64, 378, 335, + 336, 0, 337, 338, 0, 339, 340, 341, 1, 2, + 0, 3, 4, 5, 379, 380, 381, 0, 0, 0, + 0, 597, 0, 0, 0, 0, 0, 0, 0, 382, + 383, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 332, 0, 616, 617, 0, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 374, 375, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, - 376, 0, 0, 0, 0, 74, 75, 0, 0, 76, - 0, 77, 360, 0, 0, 0, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 252, 253, 0, 0, 63, 64, 0, 106, 155, - 156, 157, 158, 159, 160, 72, 0, 1, 2, 0, - 3, 4, 5, 291, 292, 0, 0, 0, 254, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 0, 255, 0, 256, 257, 258, 73, 0, 0, - 0, 0, 0, 0, 368, 369, 0, 0, 63, 64, - 370, 0, 0, 111, 0, 0, 0, 0, 0, 0, - 1, 2, 377, 3, 4, 5, 371, 372, 373, 0, + 0, 0, 629, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 254, 255, + 256, 257, 0, 0, 0, 0, 0, 0, 642, 643, + 0, 0, 0, 646, 0, 0, 649, 0, 0, 0, + 0, 0, 652, 0, 0, 654, 0, 258, 202, 614, + 615, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 0, 259, 0, 260, 261, 262, 0, 335, 336, 0, + 337, 338, 0, 339, 340, 341, 376, 377, 0, 0, + 63, 64, 378, 0, 0, -209, 0, 0, 0, 0, + 0, 385, 1, 2, 0, 3, 4, 5, 379, 380, + 381, 295, 296, -69, 1, 2, 0, 3, 4, 5, + 0, 0, 0, 382, 383, 6, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, + 0, 384, 0, 0, 0, 0, 8, 0, 0, 0, + 9, 0, 0, 0, 10, 0, 0, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 254, 255, 256, 257, 0, 0, 0, 0, + 0, 0, 0, 0, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 0, 0, + 0, 258, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 0, 259, 0, 260, 261, 262, + 0, 0, 63, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 2, 111, 3, 4, 5, + 251, 0, 0, 0, 0, 385, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 252, 253, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 64, 110, + 106, 66, 67, 68, 69, 70, 71, 72, 0, 1, + 2, 0, 3, 4, 5, 0, 0, 0, 0, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 254, 255, 256, 257, 0, 73, + 63, 64, 0, 106, 155, 156, 157, 158, 159, 160, + 72, 0, 1, 2, 0, 3, 4, 5, 0, 0, + 0, 0, 0, 258, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 0, 259, 0, 260, + 261, 262, 73, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, + 63, 64, -67, 0, 263, 0, 0, 264, 0, 265, + 0, 266, 1, 2, 0, 3, 4, 5, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 374, 375, -207, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 0, 376, - 0, -69, 1, 2, 0, 3, 4, 5, 0, 0, - 0, 0, 0, 6, 7, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 252, 253, 0, 0, 8, 0, 0, 0, 9, 0, - 0, 0, 10, 0, 74, 75, 0, 0, 76, 0, - 77, 428, 0, 0, 0, 0, 0, 254, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 0, 255, 0, 256, 257, 258, 63, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, - 0, 3, 4, 5, 249, 0, 0, 0, 0, 0, - 0, 377, 0, 0, 0, 0, 0, 0, 0, 250, - 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 63, 64, 110, 150, 66, 67, 68, 69, 70, - 71, 72, 0, 1, 2, 0, 3, 4, 5, 0, - 0, 0, 0, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 252, 253, - 0, 0, 0, 73, 0, 0, 63, 64, 0, 106, - 66, 67, 68, 69, 70, 71, 72, 0, 1, 2, - 0, 3, 4, 5, 0, 254, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 134, 255, - 0, 256, 257, 258, 0, 0, 0, 0, 73, 0, + 0, 0, 0, 252, 253, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 110, 74, 75, + 0, 0, 76, 0, 77, 141, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 254, 255, 256, 257, 0, 0, 0, 0, + 0, 74, 75, 0, 0, 76, 0, 77, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 0, 63, 64, -67, 0, 259, 0, 0, 260, - 0, 261, 0, 262, 1, 2, 151, 3, 4, 5, - 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 250, 251, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, - 74, 75, 0, 0, 76, 0, 77, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 252, 253, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 74, 75, 0, 0, 76, - 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 254, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 0, 255, 0, 256, 257, 258, - 0, 0, 0, 0, 0, 0, 0, 0, 368, 369, - 0, 0, 0, 0, 370, 0, 111, 0, 0, 0, - 0, 0, 259, 0, 0, 260, 0, 261, 0, 262, - 371, 372, 373, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 374, 375, 0, 0, 0, + 0, 258, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 0, 259, 0, 260, 261, 262, + 0, 0, 0, 0, 0, 0, 0, 0, 376, 377, + 0, 0, 0, 0, 378, 0, 111, 0, 0, 0, + 0, 0, 263, 0, 0, 264, 0, 265, 0, 266, + 379, 380, 381, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 382, 383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 376, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 63, 64, 384, 106, 155, 156, 157, 158, 159, + 160, 72, 0, 1, 2, 0, 3, 4, 5, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 252, 253, 0, 0, 0, 0, - 0, 0, 63, 64, 0, 106, 66, 67, 68, 69, - 70, 71, 72, 0, 1, 2, 0, 3, 4, 5, - 0, 254, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 337, 255, 0, 256, 257, 258, - 0, 0, 63, 64, 73, 106, 155, 156, 157, 158, - 159, 160, 72, 0, 1, 2, 0, 3, 4, 5, - 0, 0, 0, 63, 64, 377, 106, 66, 67, 68, - 69, 70, 71, 72, 0, 1, 2, 0, 3, 4, - 5, 0, 0, 0, 73, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 63, 64, 73, 106, 66, 67, 68, + 190, 191, 192, 193, 254, 255, 256, 257, 0, 0, + 0, 0, 0, 73, 63, 64, 0, 106, 66, 67, + 68, 69, 70, 71, 72, 0, 1, 2, 0, 3, + 4, 5, 0, 258, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 134, 259, 0, 260, + 261, 262, 0, 0, 0, 0, 73, 63, 64, 0, + 150, 66, 67, 68, 69, 70, 71, 72, 0, 1, + 2, 0, 3, 4, 5, 63, 64, 385, 106, 66, + 67, 68, 69, 70, 71, 72, 0, 1, 2, 0, + 3, 4, 5, 0, 0, 0, 0, 0, 0, 73, + 0, 0, 0, 0, 0, 0, 0, 343, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, + 0, 0, 74, 75, 0, 0, 76, 0, 77, 440, + 63, 64, 0, 106, 155, 156, 157, 158, 159, 160, + 72, 0, 1, 2, 0, 3, 4, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 74, 75, 0, 0, 76, + 0, 77, 73, 0, 151, 63, 64, 0, 106, 66, + 67, 68, 69, 70, 71, 72, 0, 1, 2, 0, + 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 450, 74, 75, + 0, 0, 76, 0, 77, 0, 0, 73, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, + 76, 0, 77, 63, 64, 0, 106, 66, 67, 68, 69, 70, 71, 72, 0, 1, 2, 0, 3, 4, 5, 63, 64, 0, 65, 66, 67, 68, 69, 70, - 71, 72, 0, 1, 2, 532, 3, 4, 5, 0, + 71, 72, 0, 1, 2, 552, 3, 4, 5, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, - 0, 74, 75, 0, 0, 76, 0, 77, 0, 0, + 0, 74, 75, 0, 363, 76, 0, 77, 0, 0, 0, 63, 64, 73, 106, 155, 156, 157, 158, 159, 160, 72, 0, 1, 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 74, 75, 0, 355, 76, 0, 77, 0, 0, - 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, + 76, 0, 77, 73, 63, 64, 0, 150, 66, 67, + 68, 69, 70, 71, 72, 0, 1, 2, 0, 3, + 4, 5, 63, 64, 0, 106, 66, 67, 68, 69, + 70, 71, 72, 0, 1, 2, 0, 3, 4, 5, + 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, + 0, 0, 0, 0, 74, 75, 0, 0, 76, 0, + 77, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, 76, 0, 77, 63, - 64, 0, 150, 66, 67, 68, 69, 70, 71, 72, + 64, 0, 275, 66, 67, 68, 69, 70, 71, 72, 0, 1, 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, 76, 0, 77, 0, - 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, - 74, 75, 0, 0, 76, 0, 77, 63, 64, 0, - 106, 66, 67, 68, 69, 70, 71, 72, 0, 1, - 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 74, 75, 0, 0, 76, 0, 77, 63, 64, 73, - 271, 66, 67, 68, 69, 70, 71, 72, 0, 1, - 2, 0, 3, 4, 5, 63, 64, 0, 106, 155, - 156, 157, 158, 159, 160, 72, 0, 1, 2, 0, - 3, 4, 5, 0, 0, 0, 0, 0, 0, 73, - 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, - 0, 0, 76, 0, 77, 63, 64, 73, 106, 66, - 67, 68, 69, 70, 71, 538, 0, 1, 2, 0, - 3, 4, 5, 63, 64, 0, 106, 66, 67, 68, - 69, 70, 71, 593, 0, 1, 2, 0, 3, 4, - 5, 0, 0, 0, 0, 1, 0, 73, 3, 0, - 5, 0, 0, 0, 0, 0, 74, 75, 0, 0, - 76, 0, 77, 0, 0, 73, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, - 76, 0, 77, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 74, 75, 0, 0, 76, 0, - 358, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 73, 63, 64, 0, 106, 155, 156, 157, 158, + 159, 160, 72, 0, 1, 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 327, 328, 0, 0, 0, 0, - 0, 0, 0, 0, 74, 75, 0, 0, 76, 170, - 77, 0, 329, 330, 0, 331, 332, 0, 333, 334, - 335, 0, 74, 75, 0, 0, 76, 0, 77, 171, - 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 74, 75, 0, 0, 76, + 0, 77, 0, 0, 73, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 75, 0, 0, 76, 0, 77, + 63, 64, 0, 106, 66, 67, 68, 69, 70, 71, + 558, 0, 1, 2, 0, 3, 4, 5, 63, 64, + 0, 106, 66, 67, 68, 69, 70, 71, 619, 0, + 1, 2, 170, 3, 4, 5, 0, 0, 0, 0, + 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, + 74, 75, 171, 172, 76, 0, 77, 0, 0, 0, + 73, 0, 0, 0, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 0, + 0, 0, 0, 74, 75, 0, 0, 76, 0, 366, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 199, 200, 0, 0, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 196, 197, 198, 0, 0, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218 + 0, 74, 75, 0, 0, 76, 0, 77, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, + 75, 0, 0, 76, 0, 77 }; static const yytype_int16 yycheck[] = { - 0, 27, 175, 237, 163, 127, 4, 11, 0, 54, - 11, 21, 416, 417, 164, 11, 11, 17, 52, 29, - 309, 54, 28, 54, 54, 17, 586, 176, 120, 34, - 439, 11, 153, 67, 260, 261, 20, 17, 54, 23, - 136, 137, 138, 154, 154, 141, 606, 54, 53, 145, - 146, 77, 163, 163, 114, 115, 148, 53, 53, 42, - 43, 44, 45, 46, 47, 48, 154, 50, 46, 154, - 48, 154, 58, 161, 223, 101, 154, 153, 163, 105, - 163, 154, 54, 161, 488, 111, 159, 163, 238, 239, - 153, 117, 92, 198, 61, 62, 63, 64, 65, 66, - 154, 127, 148, 149, 150, 159, 151, 152, 213, 214, - 215, 216, 217, 139, 140, 34, 221, 143, 151, 18, - 151, 151, 152, 149, 533, 38, 157, 0, 161, 538, - 539, 153, 358, 7, 8, 151, 10, 11, 12, 13, - 14, 15, 16, 17, 151, 19, 20, 173, 22, 23, - 24, 377, 159, 163, 54, 159, 162, 279, 159, 3, - 4, 5, 6, 153, 162, 148, 149, 150, 54, 157, - 196, 197, 198, 199, 166, 49, 153, 54, 467, 151, - 22, 590, 591, 155, 593, 594, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 272, 32, 33, 275, - 276, 323, 278, 229, 42, 43, 44, 616, 617, 47, - 499, 35, 501, 37, 240, 113, 114, 136, 137, 138, - 325, 21, 141, 136, 137, 138, 145, 146, 141, 40, - 41, 22, 145, 146, 19, 311, 47, 22, 42, 24, - 44, 22, 53, 319, 320, 321, 152, 152, 154, 154, - 152, 151, 154, 279, 154, 155, 22, 491, 350, 351, - 352, 353, 354, 552, 290, 151, 83, 84, 154, 155, - 429, 363, 364, 365, 151, 151, 4, 382, 155, 4, - 37, 307, 156, 157, 0, 151, 160, 158, 162, 163, - 158, 396, 155, 398, 399, 400, 4, 323, 324, 325, - 22, 154, 18, 19, 20, 152, 22, 23, 24, 161, - 386, 387, 388, 4, 30, 31, 152, 151, 394, 9, - 9, 275, 276, 9, 278, 9, 9, 419, 420, 405, - 406, 9, 358, 54, 426, 51, 570, 56, 11, 55, - 574, 367, 161, 59, 152, 3, 4, 5, 6, 151, - 151, 22, 151, 429, 151, 151, 382, 311, 151, 151, - 154, 151, 151, 38, 4, 319, 320, 321, 26, 27, - 396, 397, 398, 399, 400, 451, 154, 453, 404, 154, - 456, 154, 154, 475, 476, 477, 478, 463, 464, 154, - 482, 483, 418, 154, 567, 7, 8, 502, 151, 38, - 505, 506, 507, 151, 154, 60, 157, 19, 20, 154, - 22, 23, 24, 154, 587, 154, 154, 154, 494, 495, - 154, 497, 498, 154, 516, 517, 161, 503, 154, 38, - 154, 154, 386, 387, 388, 22, 154, 154, 514, 154, - 394, 152, 468, 17, 17, 151, 4, 154, 4, 154, - 154, 405, 406, 154, 154, 154, 154, 151, 484, 154, - 22, 154, 154, 555, 490, 557, 558, 4, 53, 154, - 496, 547, 154, 161, 154, 152, 502, 22, 154, 505, - 506, 507, 154, 152, 152, 511, 53, 53, 154, 489, - 157, 152, 568, 569, 159, 152, 17, 451, 152, 453, - 159, 152, 456, 152, 4, 147, 151, 151, 584, 463, - 464, 22, 17, 7, 8, 17, 10, 11, 12, 13, - 14, 15, 16, 17, 154, 19, 20, 154, 22, 23, - 24, 17, 72, 17, 610, 611, 130, 130, 130, 615, - 494, 495, 618, 497, 498, 571, 92, 562, 624, 503, - 252, 627, 118, 119, 111, 49, 253, 105, 534, 229, - 514, 240, 562, 3, 4, 17, 89, 7, 8, 9, - 136, 137, 511, 139, 140, 56, 142, 143, 144, 19, - 20, 421, 22, 23, 24, 25, 26, 27, -1, -1, - -1, -1, -1, 547, -1, -1, -1, -1, -1, -1, - 40, 41, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, -1, 53, 568, 569, 7, 8, 58, 10, - 11, 12, 13, 14, 15, 16, 17, -1, 19, 20, - 584, 22, 23, 24, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, -1, -1, -1, -1, -1, 610, 611, 49, -1, - -1, 615, 156, 157, 618, -1, 160, -1, 162, 163, - 624, -1, -1, 627, -1, -1, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, - 130, -1, 132, 133, 134, -1, 136, 137, -1, 139, - 140, -1, 142, 143, 144, 3, 4, -1, -1, 7, - 8, 9, -1, -1, -1, -1, -1, -1, -1, -1, - 160, 19, 20, -1, 22, 23, 24, 25, 26, 27, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, - 58, -1, -1, -1, -1, 156, 157, -1, -1, 160, - -1, 162, 163, -1, -1, -1, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, -1, -1, 7, 8, -1, 10, 11, - 12, 13, 14, 15, 16, 17, -1, 19, 20, -1, - 22, 23, 24, 26, 27, -1, -1, -1, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, -1, 130, -1, 132, 133, 134, 49, -1, -1, - -1, -1, -1, -1, 3, 4, -1, -1, 7, 8, - 9, -1, -1, 151, -1, -1, -1, -1, -1, -1, - 19, 20, 160, 22, 23, 24, 25, 26, 27, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, 0, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 58, - -1, 18, 19, 20, -1, 22, 23, 24, -1, -1, - -1, -1, -1, 30, 31, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, -1, -1, 51, -1, -1, -1, 55, -1, - -1, -1, 59, -1, 156, 157, -1, -1, 160, -1, - 162, 163, -1, -1, -1, -1, -1, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - -1, 130, -1, 132, 133, 134, 7, 8, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, - -1, 22, 23, 24, 25, -1, -1, -1, -1, -1, - -1, 160, -1, -1, -1, -1, -1, -1, -1, 40, + 0, 27, 175, 0, 315, 11, 4, 127, 11, 200, + 163, 54, 28, 21, 264, 265, 239, 17, 164, 38, + 17, 29, 196, 54, 215, 216, 217, 218, 219, 426, + 427, 54, 223, 155, 54, 451, 11, 176, 153, 54, + 34, 612, 54, 34, 20, 197, 11, 23, 163, 156, + 52, 77, 156, 54, 156, 156, 120, 156, 165, 163, + 156, 632, 53, 165, 165, 67, 165, 163, 42, 43, + 44, 45, 46, 47, 48, 101, 50, 58, 53, 105, + 254, 54, 256, 54, 148, 111, 225, 11, 53, 40, + 41, 117, 92, 17, 240, 241, 47, 155, 46, 156, + 48, 127, 53, 255, 161, 257, 19, 504, 18, 22, + 153, 24, 0, 139, 140, 155, 366, 143, 161, 138, + 139, 140, 153, 149, 143, 54, 156, 155, 147, 148, + 153, 161, 163, 153, 154, 385, 159, 553, 153, 154, + 331, 153, 558, 559, 138, 139, 140, 173, 164, 143, + 32, 33, 153, 147, 148, 161, 157, 165, 161, 155, + 35, 276, 37, 283, 279, 280, 164, 282, 22, 166, + 481, 159, 198, 199, 200, 201, 150, 151, 152, 42, + 153, 44, 153, 156, 157, 156, 157, 21, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 22, 390, + 616, 617, 317, 619, 620, 231, 517, 22, 519, 329, + 325, 326, 327, 116, 117, 406, 242, 408, 409, 410, + 150, 151, 152, 22, 153, 53, 642, 643, 157, 3, + 4, 5, 6, 153, 7, 8, 4, 10, 11, 12, + 13, 14, 15, 16, 17, 4, 19, 20, 37, 22, + 23, 24, 26, 27, 7, 8, 154, 283, 156, 42, + 43, 44, 153, 574, 47, 160, 19, 20, 294, 22, + 23, 24, 3, 4, 5, 6, 49, 113, 114, 394, + 395, 396, 397, 398, 507, 311, 312, 313, 441, 404, + 83, 84, 120, 121, 358, 359, 360, 361, 362, 160, + 415, 416, 157, 329, 330, 331, 4, 371, 372, 373, + 138, 139, 22, 141, 142, 156, 144, 145, 146, 61, + 62, 63, 64, 65, 66, 154, 441, 156, 154, 520, + 156, 154, 523, 524, 525, 4, 138, 139, 140, 153, + 366, 143, 163, 154, 9, 147, 148, 9, 9, 375, + 465, 9, 467, 9, 9, 470, 56, 54, 11, 163, + 154, 153, 477, 478, 390, 429, 430, 431, 432, 153, + 22, 594, 153, 153, 438, 598, 153, 153, 153, 38, + 406, 407, 408, 409, 410, 158, 159, 153, 414, 162, + 153, 164, 165, 4, 156, 510, 511, 38, 513, 514, + 515, 516, 428, 153, 156, 156, 521, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 532, 591, 156, + 156, 156, 156, 153, 153, 153, 60, 491, 492, 493, + 494, 156, 156, 156, 498, 499, 156, 159, 156, 156, + 613, 279, 280, 156, 282, 0, 38, 156, 156, 156, + 156, 163, 156, 156, 569, 156, 482, 22, 154, 17, + 17, 153, 156, 18, 19, 20, 156, 22, 23, 24, + 534, 535, 536, 537, 500, 30, 31, 592, 593, 317, + 506, 156, 156, 4, 156, 156, 512, 325, 326, 327, + 156, 4, 156, 156, 520, 610, 51, 523, 524, 525, + 55, 4, 153, 529, 59, 505, 156, 156, 156, 156, + 156, 22, 53, 156, 156, 579, 156, 581, 582, 163, + 156, 636, 637, 154, 156, 154, 641, 3, 4, 644, + 154, 7, 8, 9, 22, 650, 156, 159, 653, 154, + 161, 154, 154, 19, 20, 154, 22, 23, 24, 25, + 26, 27, 53, 17, 161, 154, 394, 395, 396, 397, + 398, 154, 4, 154, 40, 41, 404, 149, 153, 595, + 153, 22, 156, 17, 17, 156, 17, 415, 416, 72, + 17, 130, 58, 130, 130, 92, 586, 586, 554, 111, + 19, 105, 231, 22, 17, 24, 56, 242, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 89, 529, -1, + 433, -1, -1, -1, 53, -1, -1, 465, -1, 467, + -1, -1, 470, -1, -1, -1, -1, -1, -1, 477, + 478, -1, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, -1, 132, -1, 134, 135, + 136, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 510, 511, -1, 513, 514, 515, 516, -1, + -1, -1, -1, 521, -1, -1, 162, -1, -1, -1, + -1, 120, 121, -1, 532, -1, -1, -1, -1, -1, + -1, -1, 3, 4, -1, -1, 7, 8, 9, 138, + 139, -1, 141, 142, -1, 144, 145, 146, 19, 20, + -1, 22, 23, 24, 25, 26, 27, -1, -1, -1, + -1, 569, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 7, 8, 54, 10, 11, 12, 13, 14, 15, - 16, 17, -1, 19, 20, -1, 22, 23, 24, -1, - -1, -1, -1, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - -1, -1, -1, 49, -1, -1, 7, 8, -1, 10, - 11, 12, 13, 14, 15, 16, 17, -1, 19, 20, - -1, 22, 23, 24, -1, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 39, 130, - -1, 132, 133, 134, -1, -1, -1, -1, 49, -1, + -1, -1, 53, -1, 592, 593, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 151, -1, 7, 8, 155, -1, 157, -1, -1, 160, - -1, 162, -1, 164, 19, 20, 122, 22, 23, 24, - 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 610, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, -1, -1, -1, -1, -1, -1, 636, 637, + -1, -1, -1, 641, -1, -1, 644, -1, -1, -1, + -1, -1, 650, -1, -1, 653, -1, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + -1, 132, -1, 134, 135, 136, -1, 138, 139, -1, + 141, 142, -1, 144, 145, 146, 3, 4, -1, -1, + 7, 8, 9, -1, -1, 0, -1, -1, -1, -1, + -1, 162, 19, 20, -1, 22, 23, 24, 25, 26, + 27, 26, 27, 18, 19, 20, -1, 22, 23, 24, + -1, -1, -1, 40, 41, 30, 31, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, + -1, 58, -1, -1, -1, -1, 51, -1, -1, -1, + 55, -1, -1, -1, 59, -1, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, + -1, -1, -1, -1, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, -1, -1, + -1, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, -1, 132, -1, 134, 135, 136, + -1, -1, 7, 8, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 19, 20, 153, 22, 23, 24, + 25, -1, -1, -1, -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, - 156, 157, -1, -1, 160, -1, 162, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, + -1, -1, -1, -1, -1, -1, -1, 7, 8, 54, + 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, + 20, -1, 22, 23, 24, -1, -1, -1, -1, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 156, 157, -1, -1, 160, - -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, -1, 130, -1, 132, 133, 134, + 85, 86, 87, 88, 89, 90, 91, 92, -1, 49, + 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, + 17, -1, 19, 20, -1, 22, 23, 24, -1, -1, + -1, -1, -1, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, -1, 132, -1, 134, + 135, 136, 49, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, + 7, 8, 157, -1, 159, -1, -1, 162, -1, 164, + -1, 166, 19, 20, -1, 22, 23, 24, 25, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 54, 158, 159, + -1, -1, 162, -1, 164, 165, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, + -1, 158, 159, -1, -1, 162, -1, 164, 165, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, -1, 132, -1, 134, 135, 136, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, - -1, -1, -1, -1, 9, -1, 151, -1, -1, -1, - -1, -1, 157, -1, -1, 160, -1, 162, -1, 164, + -1, -1, -1, -1, 9, -1, 153, -1, -1, -1, + -1, -1, 159, -1, -1, 162, -1, 164, -1, 166, 25, 26, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 74, + -1, 7, 8, 58, 10, 11, 12, 13, 14, 15, + 16, 17, -1, 19, 20, -1, 22, 23, 24, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, - -1, -1, 7, 8, -1, 10, 11, 12, 13, 14, - 15, 16, 17, -1, 19, 20, -1, 22, 23, 24, - -1, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 39, 130, -1, 132, 133, 134, - -1, -1, 7, 8, 49, 10, 11, 12, 13, 14, - 15, 16, 17, -1, 19, 20, -1, 22, 23, 24, - -1, -1, -1, 7, 8, 160, 10, 11, 12, 13, - 14, 15, 16, 17, -1, 19, 20, -1, 22, 23, - 24, -1, -1, -1, 49, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, 7, 8, 49, 10, 11, 12, 13, + 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, + -1, -1, -1, 49, 7, 8, -1, 10, 11, 12, + 13, 14, 15, 16, 17, -1, 19, 20, -1, 22, + 23, 24, -1, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 39, 132, -1, 134, + 135, 136, -1, -1, -1, -1, 49, 7, 8, -1, + 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, + 20, -1, 22, 23, 24, 7, 8, 162, 10, 11, + 12, 13, 14, 15, 16, 17, -1, 19, 20, -1, + 22, 23, 24, -1, -1, -1, -1, -1, -1, 49, + -1, -1, -1, -1, -1, -1, -1, 39, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, + -1, -1, 158, 159, -1, -1, 162, -1, 164, 165, + 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, + 17, -1, 19, 20, -1, 22, 23, 24, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 158, 159, -1, -1, 162, + -1, 164, 49, -1, 124, 7, 8, -1, 10, 11, + 12, 13, 14, 15, 16, 17, -1, 19, 20, -1, + 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 39, 158, 159, + -1, -1, 162, -1, 164, -1, -1, 49, -1, -1, + -1, -1, -1, -1, -1, -1, 158, 159, -1, -1, + 162, -1, 164, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 20, -1, 22, 23, 24, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 20, 39, 22, 23, 24, -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, - -1, 156, 157, -1, -1, 160, -1, 162, -1, -1, + -1, 158, 159, -1, 161, 162, -1, 164, -1, -1, -1, 7, 8, 49, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 20, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 156, 157, -1, 159, 160, -1, 162, -1, -1, - -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, - -1, -1, 156, 157, -1, -1, 160, -1, 162, 7, + -1, -1, -1, -1, -1, -1, 158, 159, -1, -1, + 162, -1, 164, 49, 7, 8, -1, 10, 11, 12, + 13, 14, 15, 16, 17, -1, 19, 20, -1, 22, + 23, 24, 7, 8, -1, 10, 11, 12, 13, 14, + 15, 16, 17, -1, 19, 20, -1, 22, 23, 24, + -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, + -1, -1, -1, -1, 158, 159, -1, -1, 162, -1, + 164, -1, -1, -1, 49, -1, -1, -1, -1, -1, + -1, -1, 158, 159, -1, -1, 162, -1, 164, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 20, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 156, 157, -1, -1, 160, -1, 162, -1, - -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, - 156, 157, -1, -1, 160, -1, 162, 7, 8, -1, - 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, - 20, -1, 22, 23, 24, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 156, 157, -1, -1, 160, -1, 162, 7, 8, 49, - 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, - 20, -1, 22, 23, 24, 7, 8, -1, 10, 11, - 12, 13, 14, 15, 16, 17, -1, 19, 20, -1, - 22, 23, 24, -1, -1, -1, -1, -1, -1, 49, - -1, -1, -1, -1, -1, -1, -1, -1, 156, 157, - -1, -1, 160, -1, 162, 7, 8, 49, 10, 11, - 12, 13, 14, 15, 16, 17, -1, 19, 20, -1, - 22, 23, 24, 7, 8, -1, 10, 11, 12, 13, - 14, 15, 16, 17, -1, 19, 20, -1, 22, 23, - 24, -1, -1, -1, -1, 19, -1, 49, 22, -1, - 24, -1, -1, -1, -1, -1, 156, 157, -1, -1, - 160, -1, 162, -1, -1, 49, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 156, 157, -1, -1, - 160, -1, 162, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 156, 157, -1, -1, 160, -1, - 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 158, 159, -1, -1, 162, -1, 164, -1, + -1, 49, 7, 8, -1, 10, 11, 12, 13, 14, + 15, 16, 17, -1, 19, 20, -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 118, 119, -1, -1, -1, -1, - -1, -1, -1, -1, 156, 157, -1, -1, 160, 36, - 162, -1, 136, 137, -1, 139, 140, -1, 142, 143, - 144, -1, 156, 157, -1, -1, 160, -1, 162, 56, - 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 158, 159, -1, -1, 162, + -1, 164, -1, -1, 49, -1, -1, -1, -1, -1, + -1, -1, -1, 158, 159, -1, -1, 162, -1, 164, + 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, + 17, -1, 19, 20, -1, 22, 23, 24, 7, 8, + -1, 10, 11, 12, 13, 14, 15, 16, 17, -1, + 19, 20, 36, 22, 23, 24, -1, -1, -1, -1, + -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, + 158, 159, 56, 57, 162, -1, 164, -1, -1, -1, + 49, -1, -1, -1, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, + -1, -1, -1, 158, 159, -1, -1, 162, -1, 164, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, + 114, 115, -1, -1, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 111, 112, 113, -1, -1, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135 + -1, 158, 159, -1, -1, 162, -1, 164, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 158, + 159, -1, -1, 162, -1, 164 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -2594,68 +2620,71 @@ static const yytype_int16 yycheck[] = static const yytype_uint8 yystos[] = { 0, 19, 20, 22, 23, 24, 30, 31, 51, 55, - 59, 173, 176, 177, 178, 179, 211, 212, 213, 215, - 214, 52, 67, 220, 153, 58, 153, 18, 153, 42, - 43, 44, 45, 46, 47, 48, 50, 148, 149, 150, - 180, 181, 182, 0, 213, 46, 48, 183, 230, 42, - 43, 44, 47, 184, 227, 229, 237, 153, 153, 157, - 221, 22, 219, 7, 8, 10, 11, 12, 13, 14, - 15, 16, 17, 49, 156, 157, 160, 162, 173, 177, - 198, 199, 233, 182, 182, 35, 37, 209, 182, 182, - 21, 238, 239, 29, 163, 228, 238, 22, 22, 22, - 222, 151, 4, 4, 4, 162, 10, 163, 199, 204, - 54, 151, 175, 209, 209, 42, 44, 185, 32, 33, - 208, 61, 62, 63, 64, 65, 66, 186, 225, 225, - 176, 242, 154, 159, 39, 199, 200, 202, 203, 158, - 158, 163, 204, 154, 163, 151, 203, 155, 208, 208, - 10, 122, 199, 201, 210, 11, 12, 13, 14, 15, - 16, 171, 172, 199, 205, 4, 201, 28, 162, 226, + 59, 175, 178, 179, 180, 181, 213, 214, 215, 217, + 216, 52, 67, 222, 155, 58, 155, 18, 155, 42, + 43, 44, 45, 46, 47, 48, 50, 150, 151, 152, + 182, 183, 184, 0, 215, 46, 48, 185, 232, 42, + 43, 44, 47, 186, 229, 231, 239, 155, 155, 159, + 223, 22, 221, 7, 8, 10, 11, 12, 13, 14, + 15, 16, 17, 49, 158, 159, 162, 164, 175, 179, + 200, 201, 235, 184, 184, 35, 37, 211, 184, 184, + 21, 240, 241, 29, 165, 230, 240, 22, 22, 22, + 224, 153, 4, 4, 4, 164, 10, 165, 201, 206, + 54, 153, 177, 211, 211, 42, 44, 187, 32, 33, + 210, 61, 62, 63, 64, 65, 66, 188, 227, 227, + 178, 244, 156, 161, 39, 201, 202, 204, 205, 160, + 160, 165, 206, 156, 165, 153, 205, 157, 210, 210, + 10, 124, 201, 203, 212, 11, 12, 13, 14, 15, + 16, 173, 174, 201, 207, 4, 203, 28, 164, 228, 36, 56, 57, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 111, 112, 113, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 166, - 167, 168, 240, 246, 247, 248, 249, 22, 188, 154, - 152, 199, 199, 161, 163, 199, 4, 152, 205, 199, - 151, 233, 26, 27, 3, 4, 5, 6, 9, 25, - 40, 41, 89, 90, 116, 130, 132, 133, 134, 157, - 160, 162, 164, 166, 167, 168, 206, 233, 175, 177, - 56, 10, 199, 235, 236, 11, 17, 11, 171, 186, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 169, 26, 27, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 170, 199, 199, - 235, 199, 199, 243, 235, 235, 235, 235, 235, 199, - 199, 199, 235, 186, 114, 115, 53, 118, 119, 136, - 137, 139, 140, 142, 143, 144, 187, 39, 200, 190, - 159, 161, 161, 152, 190, 175, 175, 210, 169, 170, - 151, 151, 151, 151, 151, 159, 205, 207, 162, 207, - 163, 207, 22, 151, 151, 151, 216, 151, 3, 4, - 9, 25, 26, 27, 40, 41, 58, 160, 206, 232, - 233, 234, 154, 234, 234, 234, 201, 199, 199, 154, - 193, 154, 193, 234, 157, 154, 154, 154, 154, 154, - 154, 234, 234, 234, 38, 201, 199, 235, 4, 136, - 137, 138, 141, 145, 146, 189, 217, 218, 38, 151, - 151, 205, 205, 205, 205, 205, 154, 159, 163, 199, - 207, 161, 163, 205, 205, 205, 154, 196, 39, 199, - 223, 224, 60, 231, 207, 235, 154, 154, 234, 234, - 234, 11, 53, 11, 245, 234, 157, 235, 199, 235, - 235, 235, 154, 154, 154, 199, 234, 234, 154, 196, - 196, 199, 205, 205, 245, 154, 154, 154, 154, 205, - 161, 163, 154, 154, 38, 34, 53, 194, 197, 188, - 154, 152, 22, 161, 17, 17, 151, 154, 154, 234, - 4, 234, 154, 154, 234, 154, 154, 154, 4, 234, - 234, 151, 154, 193, 199, 152, 154, 154, 152, 205, - 205, 205, 205, 161, 205, 205, 199, 22, 4, 196, - 173, 174, 39, 199, 190, 154, 234, 234, 17, 199, - 244, 234, 234, 193, 193, 235, 234, 154, 235, 235, - 235, 244, 234, 205, 205, 154, 152, 154, 154, 152, - 152, 152, 188, 194, 195, 22, 154, 157, 188, 188, - 152, 154, 159, 234, 152, 193, 152, 152, 205, 205, - 205, 174, 53, 192, 17, 159, 171, 241, 118, 119, - 234, 234, 190, 17, 199, 159, 190, 152, 152, 152, - 4, 147, 191, 234, 232, 159, 171, 188, 188, 38, - 188, 188, 22, 154, 232, 17, 234, 234, 17, 154, - 234, 188, 188, 234, 17, 72, 234, 17, 234 + 85, 86, 87, 88, 89, 90, 91, 92, 113, 114, + 115, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 168, 169, 170, 242, 248, 249, 250, 251, 22, + 190, 156, 154, 201, 201, 163, 165, 201, 4, 154, + 207, 201, 153, 235, 26, 27, 3, 4, 5, 6, + 9, 25, 40, 41, 89, 90, 91, 92, 118, 132, + 134, 135, 136, 159, 162, 164, 166, 168, 169, 170, + 208, 235, 177, 179, 56, 10, 201, 237, 238, 11, + 17, 11, 173, 188, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 171, 26, 27, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 172, 171, 172, 201, 201, 237, 201, 201, 245, + 237, 237, 237, 237, 237, 201, 201, 201, 237, 188, + 116, 117, 53, 120, 121, 138, 139, 141, 142, 144, + 145, 146, 189, 39, 202, 192, 161, 163, 163, 154, + 192, 177, 177, 212, 171, 172, 171, 172, 153, 153, + 153, 153, 153, 161, 207, 209, 164, 209, 165, 209, + 22, 153, 153, 153, 218, 153, 3, 4, 9, 25, + 26, 27, 40, 41, 58, 162, 208, 234, 235, 236, + 156, 236, 236, 236, 203, 201, 201, 201, 201, 156, + 195, 156, 195, 236, 159, 156, 156, 156, 156, 156, + 156, 236, 236, 236, 38, 203, 201, 237, 4, 138, + 139, 140, 143, 147, 148, 191, 219, 220, 38, 153, + 153, 153, 153, 207, 207, 207, 207, 207, 156, 161, + 165, 201, 209, 163, 165, 207, 207, 207, 156, 198, + 39, 201, 225, 226, 60, 233, 209, 237, 156, 156, + 236, 236, 236, 236, 236, 11, 53, 11, 247, 236, + 159, 237, 201, 237, 237, 237, 156, 156, 156, 201, + 236, 236, 156, 198, 198, 201, 207, 207, 207, 207, + 247, 156, 156, 156, 156, 207, 163, 165, 156, 156, + 38, 34, 53, 196, 199, 190, 156, 154, 22, 163, + 17, 17, 153, 156, 156, 156, 156, 236, 4, 236, + 156, 156, 236, 156, 156, 156, 4, 236, 236, 153, + 156, 195, 201, 154, 156, 156, 156, 156, 154, 207, + 207, 207, 207, 163, 207, 207, 201, 22, 4, 198, + 175, 176, 39, 201, 192, 156, 236, 236, 17, 201, + 246, 236, 236, 236, 236, 195, 195, 237, 236, 156, + 237, 237, 237, 246, 236, 207, 207, 207, 207, 156, + 154, 156, 156, 154, 154, 154, 190, 196, 197, 22, + 156, 159, 190, 190, 154, 156, 161, 236, 154, 195, + 154, 154, 154, 154, 207, 207, 207, 176, 53, 194, + 17, 161, 173, 243, 120, 121, 236, 236, 192, 17, + 201, 161, 192, 154, 154, 154, 4, 149, 193, 236, + 234, 161, 173, 190, 190, 38, 190, 190, 22, 156, + 234, 17, 236, 236, 17, 156, 236, 190, 190, 236, + 17, 72, 236, 17, 236 }; #define yyerrok (yyerrstatus = 0) @@ -3470,152 +3499,152 @@ yyreduce: switch (yyn) { case 29: -#line 1117 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1117 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_EQ; ;} break; case 30: -#line 1117 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1117 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_NE; ;} break; case 31: -#line 1118 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1118 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SLT; ;} break; case 32: -#line 1118 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1118 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SGT; ;} break; case 33: -#line 1119 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1119 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SLE; ;} break; case 34: -#line 1119 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1119 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_SGE; ;} break; case 35: -#line 1120 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1120 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_ULT; ;} break; case 36: -#line 1120 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1120 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_UGT; ;} break; case 37: -#line 1121 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1121 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_ULE; ;} break; case 38: -#line 1121 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1121 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.IPredicate) = ICmpInst::ICMP_UGE; ;} break; case 39: -#line 1125 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1125 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OEQ; ;} break; case 40: -#line 1125 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1125 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ONE; ;} break; case 41: -#line 1126 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1126 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OLT; ;} break; case 42: -#line 1126 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1126 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OGT; ;} break; case 43: -#line 1127 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1127 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OLE; ;} break; case 44: -#line 1127 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1127 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_OGE; ;} break; case 45: -#line 1128 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1128 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ORD; ;} break; case 46: -#line 1128 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1128 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UNO; ;} break; case 47: -#line 1129 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1129 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UEQ; ;} break; case 48: -#line 1129 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1129 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UNE; ;} break; case 49: -#line 1130 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1130 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ULT; ;} break; case 50: -#line 1130 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1130 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UGT; ;} break; case 51: -#line 1131 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1131 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_ULE; ;} break; case 52: -#line 1131 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1131 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_UGE; ;} break; case 53: -#line 1132 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1132 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_TRUE; ;} break; case 54: -#line 1133 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1133 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FPredicate) = FCmpInst::FCMP_FALSE; ;} break; case 65: -#line 1142 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1142 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; case 66: -#line 1144 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1144 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal)=(yyvsp[(3) - (4)].UInt64Val); ;} break; case 67: -#line 1145 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1145 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal)=0; ;} break; case 68: -#line 1149 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1149 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal); CHECK_FOR_ERROR @@ -3623,7 +3652,7 @@ yyreduce: break; case 69: -#line 1153 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1153 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; CHECK_FOR_ERROR @@ -3631,7 +3660,7 @@ yyreduce: break; case 73: -#line 1161 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1161 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; CHECK_FOR_ERROR @@ -3639,7 +3668,7 @@ yyreduce: break; case 74: -#line 1166 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1166 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal); CHECK_FOR_ERROR @@ -3647,152 +3676,152 @@ yyreduce: break; case 75: -#line 1172 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1172 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 76: -#line 1173 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1173 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 77: -#line 1174 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1174 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 78: -#line 1175 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1175 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::AppendingLinkage; ;} break; case 79: -#line 1176 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1176 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 80: -#line 1180 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1180 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 81: -#line 1181 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1181 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 82: -#line 1182 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1182 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 83: -#line 1186 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1186 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Visibility) = GlobalValue::DefaultVisibility; ;} break; case 84: -#line 1187 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1187 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Visibility) = GlobalValue::DefaultVisibility; ;} break; case 85: -#line 1188 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1188 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Visibility) = GlobalValue::HiddenVisibility; ;} break; case 86: -#line 1189 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1189 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Visibility) = GlobalValue::ProtectedVisibility; ;} break; case 87: -#line 1193 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1193 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 88: -#line 1194 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1194 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;} break; case 89: -#line 1195 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1195 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;} break; case 90: -#line 1199 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1199 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 91: -#line 1200 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1200 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 92: -#line 1201 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1201 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;} break; case 93: -#line 1202 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1202 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 94: -#line 1203 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1203 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;} break; case 95: -#line 1207 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1207 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::ExternalLinkage; ;} break; case 96: -#line 1208 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1208 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::WeakLinkage; ;} break; case 97: -#line 1209 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1209 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.Linkage) = GlobalValue::InternalLinkage; ;} break; case 98: -#line 1212 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1212 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 99: -#line 1213 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1213 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::C; ;} break; case 100: -#line 1214 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1214 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::Fast; ;} break; case 101: -#line 1215 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1215 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::Cold; ;} break; case 102: -#line 1216 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1216 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::X86_StdCall; ;} break; case 103: -#line 1217 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1217 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = CallingConv::X86_FastCall; ;} break; case 104: -#line 1218 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1218 "/llvm/lib/AsmParser/llvmAsmParser.y" { if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val)) GEN_ERROR("Calling conv too large"); @@ -3802,129 +3831,129 @@ yyreduce: break; case 105: -#line 1225 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1225 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::ZExt; ;} break; case 106: -#line 1226 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1226 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::ZExt; ;} break; case 107: -#line 1227 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1227 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::SExt; ;} break; case 108: -#line 1228 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1228 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::SExt; ;} break; case 109: -#line 1229 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1229 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::InReg; ;} break; case 110: -#line 1230 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1230 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::StructRet; ;} break; case 111: -#line 1231 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1231 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::NoAlias; ;} break; case 112: -#line 1232 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1232 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::ByVal; ;} break; case 113: -#line 1233 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1233 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::Nest; ;} break; case 114: -#line 1234 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1234 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::constructAlignmentFromInt((yyvsp[(2) - (2)].UInt64Val)); ;} break; case 115: -#line 1238 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1238 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::None; ;} break; case 116: -#line 1239 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1239 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs); ;} break; case 117: -#line 1244 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1244 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::NoReturn; ;} break; case 118: -#line 1245 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1245 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::NoUnwind; ;} break; case 119: -#line 1246 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1246 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::ZExt; ;} break; case 120: -#line 1247 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1247 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::SExt; ;} break; case 121: -#line 1248 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1248 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::ReadNone; ;} break; case 122: -#line 1249 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1249 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::ReadOnly; ;} break; case 123: -#line 1252 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1252 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = ParamAttr::None; ;} break; case 124: -#line 1253 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1253 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamAttrs) = (yyvsp[(1) - (2)].ParamAttrs) | (yyvsp[(2) - (2)].ParamAttrs); ;} break; case 125: -#line 1258 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1258 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; case 126: -#line 1259 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1259 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal); ;} break; case 127: -#line 1266 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1266 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = 0; ;} break; case 128: -#line 1267 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1267 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3934,12 +3963,12 @@ yyreduce: break; case 129: -#line 1273 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1273 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = 0; ;} break; case 130: -#line 1274 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1274 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val); if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal))) @@ -3949,7 +3978,7 @@ yyreduce: break; case 131: -#line 1283 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1283 "/llvm/lib/AsmParser/llvmAsmParser.y" { for (unsigned i = 0, e = (yyvsp[(2) - (2)].StrVal)->length(); i != e; ++i) if ((*(yyvsp[(2) - (2)].StrVal))[i] == '"' || (*(yyvsp[(2) - (2)].StrVal))[i] == '\\') @@ -3960,27 +3989,27 @@ yyreduce: break; case 132: -#line 1291 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1291 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = 0; ;} break; case 133: -#line 1292 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1292 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;} break; case 134: -#line 1297 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1297 "/llvm/lib/AsmParser/llvmAsmParser.y" {;} break; case 135: -#line 1298 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1298 "/llvm/lib/AsmParser/llvmAsmParser.y" {;} break; case 136: -#line 1299 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1299 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV->setSection(*(yyvsp[(1) - (1)].StrVal)); delete (yyvsp[(1) - (1)].StrVal); @@ -3989,7 +4018,7 @@ yyreduce: break; case 137: -#line 1304 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1304 "/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val))) GEN_ERROR("Alignment must be a power of two"); @@ -3999,7 +4028,7 @@ yyreduce: break; case 145: -#line 1320 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1320 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeVal) = new PATypeHolder(OpaqueType::get()); CHECK_FOR_ERROR @@ -4007,7 +4036,7 @@ yyreduce: break; case 146: -#line 1324 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1324 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeVal) = new PATypeHolder((yyvsp[(1) - (1)].PrimType)); CHECK_FOR_ERROR @@ -4015,7 +4044,7 @@ yyreduce: break; case 147: -#line 1328 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1328 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Pointer type? if (*(yyvsp[(1) - (3)].TypeVal) == Type::LabelTy) GEN_ERROR("Cannot form a pointer to a basic block"); @@ -4026,7 +4055,7 @@ yyreduce: break; case 148: -#line 1335 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1335 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Named types are also simple types... const Type* tmp = getTypeVal((yyvsp[(1) - (1)].ValIDVal)); CHECK_FOR_ERROR @@ -4035,7 +4064,7 @@ yyreduce: break; case 149: -#line 1340 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1340 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Type UpReference if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U) GEN_ERROR("Value out of range"); OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder @@ -4047,7 +4076,7 @@ yyreduce: break; case 150: -#line 1348 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1348 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Allow but ignore attributes on function types; this permits auto-upgrade. // FIXME: remove in LLVM 3.0. @@ -4080,7 +4109,7 @@ yyreduce: break; case 151: -#line 1377 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1377 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Allow but ignore attributes on function types; this permits auto-upgrade. // FIXME: remove in LLVM 3.0. @@ -4108,7 +4137,7 @@ yyreduce: break; case 152: -#line 1402 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1402 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Sized array type? (yyval.TypeVal) = new PATypeHolder(HandleUpRefs(ArrayType::get(*(yyvsp[(4) - (5)].TypeVal), (unsigned)(yyvsp[(2) - (5)].UInt64Val)))); delete (yyvsp[(4) - (5)].TypeVal); @@ -4117,7 +4146,7 @@ yyreduce: break; case 153: -#line 1407 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1407 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Vector type? const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal)->get(); if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val)) @@ -4131,7 +4160,7 @@ yyreduce: break; case 154: -#line 1417 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1417 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Structure type? std::vector<const Type*> Elements; for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(), @@ -4145,7 +4174,7 @@ yyreduce: break; case 155: -#line 1427 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1427 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>())); CHECK_FOR_ERROR @@ -4153,7 +4182,7 @@ yyreduce: break; case 156: -#line 1431 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1431 "/llvm/lib/AsmParser/llvmAsmParser.y" { std::vector<const Type*> Elements; for (std::list<llvm::PATypeHolder>::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(), @@ -4167,7 +4196,7 @@ yyreduce: break; case 157: -#line 1441 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1441 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Empty structure type? (yyval.TypeVal) = new PATypeHolder(StructType::get(std::vector<const Type*>(), true)); CHECK_FOR_ERROR @@ -4175,7 +4204,7 @@ yyreduce: break; case 158: -#line 1448 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1448 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Allow but ignore attributes on function types; this permits auto-upgrade. // FIXME: remove in LLVM 3.0. @@ -4185,7 +4214,7 @@ yyreduce: break; case 159: -#line 1457 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1457 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (1)].TypeVal))->getDescription()); @@ -4196,14 +4225,14 @@ yyreduce: break; case 160: -#line 1464 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1464 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeVal) = new PATypeHolder(Type::VoidTy); ;} break; case 161: -#line 1469 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1469 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); (yyval.TypeWithAttrsList)->push_back((yyvsp[(1) - (1)].TypeWithAttrs)); @@ -4212,7 +4241,7 @@ yyreduce: break; case 162: -#line 1474 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1474 "/llvm/lib/AsmParser/llvmAsmParser.y" { ((yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList))->push_back((yyvsp[(3) - (3)].TypeWithAttrs)); CHECK_FOR_ERROR @@ -4220,7 +4249,7 @@ yyreduce: break; case 164: -#line 1482 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1482 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList)=(yyvsp[(1) - (3)].TypeWithAttrsList); TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; @@ -4231,7 +4260,7 @@ yyreduce: break; case 165: -#line 1489 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1489 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList; TypeWithAttrs TWA; TWA.Attrs = ParamAttr::None; @@ -4242,7 +4271,7 @@ yyreduce: break; case 166: -#line 1496 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1496 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeWithAttrsList) = new TypeWithAttrsList(); CHECK_FOR_ERROR @@ -4250,7 +4279,7 @@ yyreduce: break; case 167: -#line 1504 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1504 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TypeList) = new std::list<PATypeHolder>(); (yyval.TypeList)->push_back(*(yyvsp[(1) - (1)].TypeVal)); @@ -4260,7 +4289,7 @@ yyreduce: break; case 168: -#line 1510 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1510 "/llvm/lib/AsmParser/llvmAsmParser.y" { ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back(*(yyvsp[(3) - (3)].TypeVal)); delete (yyvsp[(3) - (3)].TypeVal); @@ -4269,7 +4298,7 @@ yyreduce: break; case 169: -#line 1522 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1522 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription()); @@ -4301,7 +4330,7 @@ yyreduce: break; case 170: -#line 1550 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1550 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription()); @@ -4321,7 +4350,7 @@ yyreduce: break; case 171: -#line 1566 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1566 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription()); @@ -4352,7 +4381,7 @@ yyreduce: break; case 172: -#line 1593 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1593 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized arr if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (4)].TypeVal))->getDescription()); @@ -4384,7 +4413,7 @@ yyreduce: break; case 173: -#line 1621 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1621 "/llvm/lib/AsmParser/llvmAsmParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (4)].TypeVal)->get()); if (STy == 0) @@ -4414,7 +4443,7 @@ yyreduce: break; case 174: -#line 1647 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1647 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription()); @@ -4438,7 +4467,7 @@ yyreduce: break; case 175: -#line 1667 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1667 "/llvm/lib/AsmParser/llvmAsmParser.y" { const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (6)].TypeVal)->get()); if (STy == 0) @@ -4468,7 +4497,7 @@ yyreduce: break; case 176: -#line 1693 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1693 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (5)].TypeVal))->getDescription()); @@ -4492,7 +4521,7 @@ yyreduce: break; case 177: -#line 1713 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1713 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); @@ -4508,7 +4537,7 @@ yyreduce: break; case 178: -#line 1725 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1725 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); @@ -4519,7 +4548,7 @@ yyreduce: break; case 179: -#line 1732 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1732 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); @@ -4589,7 +4618,7 @@ yyreduce: break; case 180: -#line 1798 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1798 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); @@ -4603,7 +4632,7 @@ yyreduce: break; case 181: -#line 1808 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1808 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); @@ -4617,7 +4646,7 @@ yyreduce: break; case 182: -#line 1818 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1818 "/llvm/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].SInt64Val))) GEN_ERROR("Constant value doesn't fit in type"); @@ -4627,7 +4656,7 @@ yyreduce: break; case 183: -#line 1824 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1824 "/llvm/lib/AsmParser/llvmAsmParser.y" { // arbitrary precision integer constants uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth(); if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) { @@ -4641,7 +4670,7 @@ yyreduce: break; case 184: -#line 1834 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1834 "/llvm/lib/AsmParser/llvmAsmParser.y" { // integral constants if (!ConstantInt::isValueValidForType((yyvsp[(1) - (2)].PrimType), (yyvsp[(2) - (2)].UInt64Val))) GEN_ERROR("Constant value doesn't fit in type"); @@ -4651,7 +4680,7 @@ yyreduce: break; case 185: -#line 1840 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1840 "/llvm/lib/AsmParser/llvmAsmParser.y" { // arbitrary precision integer constants uint32_t BitWidth = cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth(); if ((yyvsp[(2) - (2)].APIntVal)->getBitWidth() > BitWidth) { @@ -4665,7 +4694,7 @@ yyreduce: break; case 186: -#line 1850 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1850 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Boolean constants assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?"); (yyval.ConstVal) = ConstantInt::getTrue(); @@ -4674,7 +4703,7 @@ yyreduce: break; case 187: -#line 1855 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1855 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Boolean constants assert(cast<IntegerType>((yyvsp[(1) - (2)].PrimType))->getBitWidth() == 1 && "Not Bool?"); (yyval.ConstVal) = ConstantInt::getFalse(); @@ -4683,7 +4712,7 @@ yyreduce: break; case 188: -#line 1860 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1860 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Floating point constants if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType), *(yyvsp[(2) - (2)].FPVal))) GEN_ERROR("Floating point constant invalid for type"); @@ -4698,7 +4727,7 @@ yyreduce: break; case 189: -#line 1873 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1873 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (6)].TypeVal))->getDescription()); @@ -4714,7 +4743,7 @@ yyreduce: break; case 190: -#line 1885 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1885 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!isa<PointerType>((yyvsp[(3) - (5)].ConstVal)->getType())) GEN_ERROR("GetElementPtr requires a pointer operand"); @@ -4740,7 +4769,7 @@ yyreduce: break; case 191: -#line 1907 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1907 "/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[(3) - (8)].ConstVal)->getType() != Type::Int1Ty) GEN_ERROR("Select condition must be of boolean type"); @@ -4752,7 +4781,7 @@ yyreduce: break; case 192: -#line 1915 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1915 "/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType()) GEN_ERROR("Binary operator types must match"); @@ -4762,7 +4791,7 @@ yyreduce: break; case 193: -#line 1921 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1921 "/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[(3) - (6)].ConstVal)->getType() != (yyvsp[(5) - (6)].ConstVal)->getType()) GEN_ERROR("Logical operator types must match"); @@ -4777,7 +4806,7 @@ yyreduce: break; case 194: -#line 1932 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1932 "/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType()) GEN_ERROR("icmp operand types must match"); @@ -4786,7 +4815,7 @@ yyreduce: break; case 195: -#line 1937 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1937 "/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType()) GEN_ERROR("fcmp operand types must match"); @@ -4795,7 +4824,25 @@ yyreduce: break; case 196: -#line 1942 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 1942 "/llvm/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType()) + GEN_ERROR("vicmp operand types must match"); + (yyval.ConstVal) = ConstantExpr::getVICmp((yyvsp[(2) - (7)].IPredicate), (yyvsp[(4) - (7)].ConstVal), (yyvsp[(6) - (7)].ConstVal)); + ;} + break; + + case 197: +#line 1947 "/llvm/lib/AsmParser/llvmAsmParser.y" + { + if ((yyvsp[(4) - (7)].ConstVal)->getType() != (yyvsp[(6) - (7)].ConstVal)->getType()) + GEN_ERROR("vfcmp operand types must match"); + (yyval.ConstVal) = ConstantExpr::getVFCmp((yyvsp[(2) - (7)].FPredicate), (yyvsp[(4) - (7)].ConstVal), (yyvsp[(6) - (7)].ConstVal)); + ;} + break; + + case 198: +#line 1952 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[(3) - (6)].ConstVal), (yyvsp[(5) - (6)].ConstVal))) GEN_ERROR("Invalid extractelement operands"); @@ -4804,8 +4851,8 @@ yyreduce: ;} break; - case 197: -#line 1948 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 199: +#line 1958 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal))) GEN_ERROR("Invalid insertelement operands"); @@ -4814,8 +4861,8 @@ yyreduce: ;} break; - case 198: -#line 1954 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 200: +#line 1964 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[(3) - (8)].ConstVal), (yyvsp[(5) - (8)].ConstVal), (yyvsp[(7) - (8)].ConstVal))) GEN_ERROR("Invalid shufflevector operands"); @@ -4824,16 +4871,16 @@ yyreduce: ;} break; - case 199: -#line 1963 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 201: +#line 1973 "/llvm/lib/AsmParser/llvmAsmParser.y" { ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal)); CHECK_FOR_ERROR ;} break; - case 200: -#line 1967 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 202: +#line 1977 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ConstVector) = new std::vector<Constant*>(); (yyval.ConstVector)->push_back((yyvsp[(1) - (1)].ConstVal)); @@ -4841,28 +4888,28 @@ yyreduce: ;} break; - case 201: -#line 1975 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 203: +#line 1985 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; ;} break; - case 202: -#line 1975 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 204: +#line 1985 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; ;} break; - case 203: -#line 1978 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 205: +#line 1988 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; ;} break; - case 204: -#line 1978 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 206: +#line 1988 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; ;} break; - case 205: -#line 1981 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 207: +#line 1991 "/llvm/lib/AsmParser/llvmAsmParser.y" { const Type* VTy = (yyvsp[(1) - (2)].TypeVal)->get(); Value *V = getVal(VTy, (yyvsp[(2) - (2)].ValIDVal)); @@ -4877,8 +4924,8 @@ yyreduce: ;} break; - case 206: -#line 1993 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 208: +#line 2003 "/llvm/lib/AsmParser/llvmAsmParser.y" { Constant *Val = (yyvsp[(3) - (6)].ConstVal); const Type *DestTy = (yyvsp[(5) - (6)].TypeVal)->get(); @@ -4893,8 +4940,8 @@ yyreduce: ;} break; - case 207: -#line 2014 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 209: +#line 2024 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4902,8 +4949,8 @@ yyreduce: ;} break; - case 208: -#line 2019 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 210: +#line 2029 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ModuleVal) = ParserResult = CurModule.CurrentModule; CurModule.ModuleDone(); @@ -4911,40 +4958,40 @@ yyreduce: ;} break; - case 211: -#line 2032 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 213: +#line 2042 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = false; ;} break; - case 212: -#line 2032 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 214: +#line 2042 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.FunctionDone(); CHECK_FOR_ERROR ;} break; - case 213: -#line 2036 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 215: +#line 2046 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.isDeclare = true; ;} break; - case 214: -#line 2036 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 216: +#line 2046 "/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 215: -#line 2039 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 217: +#line 2049 "/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 216: -#line 2042 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 218: +#line 2052 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (3)].TypeVal))->getDescription()); @@ -4971,8 +5018,8 @@ yyreduce: ;} break; - case 217: -#line 2066 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 219: +#line 2076 "/llvm/lib/AsmParser/llvmAsmParser.y" { ResolveTypeTo((yyvsp[(1) - (3)].StrVal), (yyvsp[(3) - (3)].PrimType)); @@ -4986,8 +5033,8 @@ yyreduce: ;} break; - case 218: -#line 2078 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 220: +#line 2088 "/llvm/lib/AsmParser/llvmAsmParser.y" { /* "Externally Visible" Linkage */ if ((yyvsp[(5) - (6)].ConstVal) == 0) @@ -4998,15 +5045,15 @@ yyreduce: ;} break; - case 219: -#line 2085 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 221: +#line 2095 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; - case 220: -#line 2089 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 222: +#line 2099 "/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[(6) - (7)].ConstVal) == 0) GEN_ERROR("Global value initializer is not a constant"); @@ -5015,15 +5062,15 @@ yyreduce: ;} break; - case 221: -#line 2094 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 223: +#line 2104 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; ;} break; - case 222: -#line 2098 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 224: +#line 2108 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(6) - (7)].TypeVal))->getDescription()); @@ -5033,16 +5080,16 @@ yyreduce: ;} break; - case 223: -#line 2104 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 225: +#line 2114 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurGV = 0; CHECK_FOR_ERROR ;} break; - case 224: -#line 2108 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 226: +#line 2118 "/llvm/lib/AsmParser/llvmAsmParser.y" { std::string Name; if ((yyvsp[(1) - (5)].StrVal)) { @@ -5085,22 +5132,22 @@ yyreduce: ;} break; - case 225: -#line 2148 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 227: +#line 2158 "/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 226: -#line 2151 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 228: +#line 2161 "/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 227: -#line 2157 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 229: +#line 2167 "/llvm/lib/AsmParser/llvmAsmParser.y" { const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm(); if (AsmSoFar.empty()) @@ -5112,24 +5159,24 @@ yyreduce: ;} break; - case 228: -#line 2167 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 230: +#line 2177 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setTargetTriple(*(yyvsp[(3) - (3)].StrVal)); delete (yyvsp[(3) - (3)].StrVal); ;} break; - case 229: -#line 2171 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 231: +#line 2181 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->setDataLayout(*(yyvsp[(3) - (3)].StrVal)); delete (yyvsp[(3) - (3)].StrVal); ;} break; - case 231: -#line 2178 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 233: +#line 2188 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary(*(yyvsp[(3) - (3)].StrVal)); delete (yyvsp[(3) - (3)].StrVal); @@ -5137,8 +5184,8 @@ yyreduce: ;} break; - case 232: -#line 2183 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 234: +#line 2193 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurModule.CurrentModule->addLibrary(*(yyvsp[(1) - (1)].StrVal)); delete (yyvsp[(1) - (1)].StrVal); @@ -5146,15 +5193,15 @@ yyreduce: ;} break; - case 233: -#line 2188 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 235: +#line 2198 "/llvm/lib/AsmParser/llvmAsmParser.y" { CHECK_FOR_ERROR ;} break; - case 234: -#line 2197 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 236: +#line 2207 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription()); @@ -5167,8 +5214,8 @@ yyreduce: ;} break; - case 235: -#line 2207 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 237: +#line 2217 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (3)].TypeVal))->getDescription()); @@ -5181,16 +5228,16 @@ yyreduce: ;} break; - case 236: -#line 2218 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 238: +#line 2228 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[(1) - (1)].ArgList); CHECK_FOR_ERROR ;} break; - case 237: -#line 2222 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 239: +#line 2232 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList); struct ArgListEntry E; @@ -5202,8 +5249,8 @@ yyreduce: ;} break; - case 238: -#line 2231 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 240: +#line 2241 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = new ArgListType; struct ArgListEntry E; @@ -5215,16 +5262,16 @@ yyreduce: ;} break; - case 239: -#line 2240 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 241: +#line 2250 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ArgList) = 0; CHECK_FOR_ERROR ;} break; - case 240: -#line 2246 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 242: +#line 2256 "/llvm/lib/AsmParser/llvmAsmParser.y" { std::string FunctionName(*(yyvsp[(3) - (10)].StrVal)); delete (yyvsp[(3) - (10)].StrVal); // Free strdup'd memory! @@ -5354,8 +5401,8 @@ yyreduce: ;} break; - case 243: -#line 2376 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 245: +#line 2386 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = CurFun.CurrentFunction; @@ -5366,16 +5413,16 @@ yyreduce: ;} break; - case 246: -#line 2387 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 248: +#line 2397 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal); CHECK_FOR_ERROR ;} break; - case 247: -#line 2392 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 249: +#line 2402 "/llvm/lib/AsmParser/llvmAsmParser.y" { CurFun.CurrentFunction->setLinkage((yyvsp[(1) - (3)].Linkage)); CurFun.CurrentFunction->setVisibility((yyvsp[(2) - (3)].Visibility)); @@ -5385,88 +5432,88 @@ yyreduce: ;} break; - case 248: -#line 2404 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 250: +#line 2414 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 249: -#line 2408 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 251: +#line 2418 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 250: -#line 2413 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 252: +#line 2423 "/llvm/lib/AsmParser/llvmAsmParser.y" { // A reference to a direct constant (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val)); CHECK_FOR_ERROR ;} break; - case 251: -#line 2417 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 253: +#line 2427 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val)); CHECK_FOR_ERROR ;} break; - case 252: -#line 2421 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 254: +#line 2431 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Perhaps it's an FP constant? (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].FPVal)); CHECK_FOR_ERROR ;} break; - case 253: -#line 2425 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 255: +#line 2435 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantInt::getTrue()); CHECK_FOR_ERROR ;} break; - case 254: -#line 2429 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 256: +#line 2439 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create(ConstantInt::getFalse()); CHECK_FOR_ERROR ;} break; - case 255: -#line 2433 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 257: +#line 2443 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createNull(); CHECK_FOR_ERROR ;} break; - case 256: -#line 2437 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 258: +#line 2447 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createUndef(); CHECK_FOR_ERROR ;} break; - case 257: -#line 2441 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 259: +#line 2451 "/llvm/lib/AsmParser/llvmAsmParser.y" { // A vector zero constant. (yyval.ValIDVal) = ValID::createZeroInit(); CHECK_FOR_ERROR ;} break; - case 258: -#line 2445 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 260: +#line 2455 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Nonempty unsized packed vector const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0]->getType(); int NumElements = (yyvsp[(2) - (3)].ConstVector)->size(); @@ -5494,16 +5541,16 @@ yyreduce: ;} break; - case 259: -#line 2470 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 261: +#line 2480 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal)); CHECK_FOR_ERROR ;} break; - case 260: -#line 2474 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 262: +#line 2484 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createInlineAsm(*(yyvsp[(3) - (5)].StrVal), *(yyvsp[(5) - (5)].StrVal), (yyvsp[(2) - (5)].BoolVal)); delete (yyvsp[(3) - (5)].StrVal); @@ -5512,24 +5559,24 @@ yyreduce: ;} break; - case 261: -#line 2484 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 263: +#line 2494 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Is it an integer reference...? (yyval.ValIDVal) = ValID::createLocalID((yyvsp[(1) - (1)].UIntVal)); CHECK_FOR_ERROR ;} break; - case 262: -#line 2488 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 264: +#line 2498 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValIDVal) = ValID::createGlobalID((yyvsp[(1) - (1)].UIntVal)); CHECK_FOR_ERROR ;} break; - case 263: -#line 2492 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 265: +#line 2502 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Is it a named reference...? (yyval.ValIDVal) = ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal)); delete (yyvsp[(1) - (1)].StrVal); @@ -5537,8 +5584,8 @@ yyreduce: ;} break; - case 264: -#line 2497 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 266: +#line 2507 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Is it a named reference...? (yyval.ValIDVal) = ValID::createGlobalName(*(yyvsp[(1) - (1)].StrVal)); delete (yyvsp[(1) - (1)].StrVal); @@ -5546,8 +5593,8 @@ yyreduce: ;} break; - case 267: -#line 2510 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 269: +#line 2520 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (2)].TypeVal))->getDescription()); @@ -5557,8 +5604,8 @@ yyreduce: ;} break; - case 268: -#line 2519 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 270: +#line 2529 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = new std::vector<Value *>(); (yyval.ValueList)->push_back((yyvsp[(1) - (1)].ValueVal)); @@ -5566,32 +5613,32 @@ yyreduce: ;} break; - case 269: -#line 2524 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 271: +#line 2534 "/llvm/lib/AsmParser/llvmAsmParser.y" { ((yyval.ValueList)=(yyvsp[(1) - (3)].ValueList))->push_back((yyvsp[(3) - (3)].ValueVal)); CHECK_FOR_ERROR ;} break; - case 270: -#line 2529 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 272: +#line 2539 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal); CHECK_FOR_ERROR ;} break; - case 271: -#line 2533 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 273: +#line 2543 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Do not allow functions with 0 basic blocks (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal); CHECK_FOR_ERROR ;} break; - case 272: -#line 2542 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 274: +#line 2552 "/llvm/lib/AsmParser/llvmAsmParser.y" { setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal)); CHECK_FOR_ERROR @@ -5602,8 +5649,8 @@ yyreduce: ;} break; - case 273: -#line 2551 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 275: +#line 2561 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (CastInst *CI1 = dyn_cast<CastInst>((yyvsp[(2) - (2)].InstVal))) if (CastInst *CI2 = dyn_cast<CastInst>(CI1->getOperand(0))) @@ -5615,16 +5662,16 @@ yyreduce: ;} break; - case 274: -#line 2560 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 276: +#line 2570 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Empty space between instruction lists (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalID(CurFun.NextValNum)); CHECK_FOR_ERROR ;} break; - case 275: -#line 2564 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 277: +#line 2574 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Labelled (named) basic block (yyval.BasicBlockVal) = defineBBVal(ValID::createLocalName(*(yyvsp[(1) - (1)].StrVal))); delete (yyvsp[(1) - (1)].StrVal); @@ -5633,8 +5680,8 @@ yyreduce: ;} break; - case 276: -#line 2572 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 278: +#line 2582 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Return with a result... ValueList &VL = *(yyvsp[(2) - (2)].ValueList); assert(!VL.empty() && "Invalid ret operands!"); @@ -5644,16 +5691,16 @@ yyreduce: ;} break; - case 277: -#line 2579 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 279: +#line 2589 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Return with no result... (yyval.TermInstVal) = ReturnInst::Create(); CHECK_FOR_ERROR ;} break; - case 278: -#line 2583 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 280: +#line 2593 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Unconditional Branch... BasicBlock* tmpBB = getBBVal((yyvsp[(3) - (3)].ValIDVal)); CHECK_FOR_ERROR @@ -5661,8 +5708,8 @@ yyreduce: ;} break; - case 279: -#line 2588 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 281: +#line 2598 "/llvm/lib/AsmParser/llvmAsmParser.y" { assert(cast<IntegerType>((yyvsp[(2) - (9)].PrimType))->getBitWidth() == 1 && "Not Bool?"); BasicBlock* tmpBBA = getBBVal((yyvsp[(6) - (9)].ValIDVal)); @@ -5675,8 +5722,8 @@ yyreduce: ;} break; - case 280: -#line 2598 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 282: +#line 2608 "/llvm/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[(2) - (9)].PrimType), (yyvsp[(3) - (9)].ValIDVal)); CHECK_FOR_ERROR @@ -5698,8 +5745,8 @@ yyreduce: ;} break; - case 281: -#line 2617 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 283: +#line 2627 "/llvm/lib/AsmParser/llvmAsmParser.y" { Value* tmpVal = getVal((yyvsp[(2) - (8)].PrimType), (yyvsp[(3) - (8)].ValIDVal)); CHECK_FOR_ERROR @@ -5711,8 +5758,8 @@ yyreduce: ;} break; - case 282: -#line 2627 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 284: +#line 2637 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -5799,24 +5846,24 @@ yyreduce: ;} break; - case 283: -#line 2711 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 285: +#line 2721 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnwindInst(); CHECK_FOR_ERROR ;} break; - case 284: -#line 2715 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 286: +#line 2725 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.TermInstVal) = new UnreachableInst(); CHECK_FOR_ERROR ;} break; - case 285: -#line 2722 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 287: +#line 2732 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable); Constant *V = cast<Constant>(getExistingVal((yyvsp[(2) - (6)].PrimType), (yyvsp[(3) - (6)].ValIDVal))); @@ -5830,8 +5877,8 @@ yyreduce: ;} break; - case 286: -#line 2733 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 288: +#line 2743 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >(); Constant *V = cast<Constant>(getExistingVal((yyvsp[(1) - (5)].PrimType), (yyvsp[(2) - (5)].ValIDVal))); @@ -5846,8 +5893,8 @@ yyreduce: ;} break; - case 287: -#line 2746 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 289: +#line 2756 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Is this definition named?? if so, assign the name... setValueName((yyvsp[(2) - (2)].InstVal), (yyvsp[(1) - (2)].StrVal)); @@ -5858,8 +5905,8 @@ yyreduce: ;} break; - case 288: -#line 2756 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 290: +#line 2766 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Used for PHI nodes if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(1) - (6)].TypeVal))->getDescription()); @@ -5873,8 +5920,8 @@ yyreduce: ;} break; - case 289: -#line 2767 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 291: +#line 2777 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.PHIList) = (yyvsp[(1) - (7)].PHIList); Value* tmpVal = getVal((yyvsp[(1) - (7)].PHIList)->front().first->getType(), (yyvsp[(4) - (7)].ValIDVal)); @@ -5885,8 +5932,8 @@ yyreduce: ;} break; - case 290: -#line 2777 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 292: +#line 2787 "/llvm/lib/AsmParser/llvmAsmParser.y" { // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0 if (!UpRefs.empty()) @@ -5900,8 +5947,8 @@ yyreduce: ;} break; - case 291: -#line 2788 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 293: +#line 2798 "/llvm/lib/AsmParser/llvmAsmParser.y" { // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0 // Labels are only valid in ASMs @@ -5912,8 +5959,8 @@ yyreduce: ;} break; - case 292: -#line 2796 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 294: +#line 2806 "/llvm/lib/AsmParser/llvmAsmParser.y" { // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0 if (!UpRefs.empty()) @@ -5926,8 +5973,8 @@ yyreduce: ;} break; - case 293: -#line 2806 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 295: +#line 2816 "/llvm/lib/AsmParser/llvmAsmParser.y" { // FIXME: Remove trailing OptParamAttrs in LLVM 3.0, it was a mistake in 2.0 (yyval.ParamList) = (yyvsp[(1) - (6)].ParamList); @@ -5937,18 +5984,18 @@ yyreduce: ;} break; - case 294: -#line 2813 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 296: +#line 2823 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ParamList) = new ParamList(); ;} break; - case 295: -#line 2816 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 297: +#line 2826 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = new std::vector<Value*>(); ;} break; - case 296: -#line 2817 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 298: +#line 2827 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.ValueList) = (yyvsp[(1) - (3)].ValueList); (yyval.ValueList)->push_back((yyvsp[(3) - (3)].ValueVal)); @@ -5956,24 +6003,24 @@ yyreduce: ;} break; - case 297: -#line 2824 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 299: +#line 2834 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 298: -#line 2828 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 300: +#line 2838 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 299: -#line 2833 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 301: +#line 2843 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription()); @@ -5992,8 +6039,8 @@ yyreduce: ;} break; - case 300: -#line 2849 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 302: +#line 2859 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (5)].TypeVal))->getDescription()); @@ -6013,8 +6060,8 @@ yyreduce: ;} break; - case 301: -#line 2866 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 303: +#line 2876 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription()); @@ -6031,8 +6078,8 @@ yyreduce: ;} break; - case 302: -#line 2880 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 304: +#line 2890 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription()); @@ -6049,8 +6096,44 @@ yyreduce: ;} break; - case 303: -#line 2894 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 305: +#line 2904 "/llvm/lib/AsmParser/llvmAsmParser.y" + { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription()); + if (!isa<VectorType>((*(yyvsp[(3) - (6)].TypeVal)).get())) + GEN_ERROR("Scalar types not supported by vicmp instruction"); + Value* tmpVal1 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(4) - (6)].ValIDVal)); + CHECK_FOR_ERROR + Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal)); + CHECK_FOR_ERROR + (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].IPredicate), tmpVal1, tmpVal2); + if ((yyval.InstVal) == 0) + GEN_ERROR("icmp operator returned null"); + delete (yyvsp[(3) - (6)].TypeVal); + ;} + break; + + case 306: +#line 2918 "/llvm/lib/AsmParser/llvmAsmParser.y" + { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (6)].TypeVal))->getDescription()); + if (!isa<VectorType>((*(yyvsp[(3) - (6)].TypeVal)).get())) + GEN_ERROR("Scalar types not supported by vfcmp instruction"); + Value* tmpVal1 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(4) - (6)].ValIDVal)); + CHECK_FOR_ERROR + Value* tmpVal2 = getVal(*(yyvsp[(3) - (6)].TypeVal), (yyvsp[(6) - (6)].ValIDVal)); + CHECK_FOR_ERROR + (yyval.InstVal) = CmpInst::create((yyvsp[(1) - (6)].OtherOpVal), (yyvsp[(2) - (6)].FPredicate), tmpVal1, tmpVal2); + if ((yyval.InstVal) == 0) + GEN_ERROR("fcmp operator returned null"); + delete (yyvsp[(3) - (6)].TypeVal); + ;} + break; + + case 307: +#line 2932 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription()); @@ -6065,8 +6148,8 @@ yyreduce: ;} break; - case 304: -#line 2906 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 308: +#line 2944 "/llvm/lib/AsmParser/llvmAsmParser.y" { if ((yyvsp[(2) - (6)].ValueVal)->getType() != Type::Int1Ty) GEN_ERROR("select condition must be boolean"); @@ -6077,8 +6160,8 @@ yyreduce: ;} break; - case 305: -#line 2914 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 309: +#line 2952 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(4) - (4)].TypeVal))->getDescription()); @@ -6088,8 +6171,8 @@ yyreduce: ;} break; - case 306: -#line 2921 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 310: +#line 2959 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ExtractElementInst::isValidOperands((yyvsp[(2) - (4)].ValueVal), (yyvsp[(4) - (4)].ValueVal))) GEN_ERROR("Invalid extractelement operands"); @@ -6098,8 +6181,8 @@ yyreduce: ;} break; - case 307: -#line 2927 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 311: +#line 2965 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!InsertElementInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal))) GEN_ERROR("Invalid insertelement operands"); @@ -6108,8 +6191,8 @@ yyreduce: ;} break; - case 308: -#line 2933 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 312: +#line 2971 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!ShuffleVectorInst::isValidOperands((yyvsp[(2) - (6)].ValueVal), (yyvsp[(4) - (6)].ValueVal), (yyvsp[(6) - (6)].ValueVal))) GEN_ERROR("Invalid shufflevector operands"); @@ -6118,8 +6201,8 @@ yyreduce: ;} break; - case 309: -#line 2939 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 313: +#line 2977 "/llvm/lib/AsmParser/llvmAsmParser.y" { const Type *Ty = (yyvsp[(2) - (2)].PHIList)->front().first->getType(); if (!Ty->isFirstClassType()) @@ -6137,8 +6220,8 @@ yyreduce: ;} break; - case 310: -#line 2955 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 314: +#line 2993 "/llvm/lib/AsmParser/llvmAsmParser.y" { // Handle the short syntax @@ -6230,32 +6313,32 @@ yyreduce: ;} break; - case 311: -#line 3044 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 315: +#line 3082 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.InstVal) = (yyvsp[(1) - (1)].InstVal); CHECK_FOR_ERROR ;} break; - case 312: -#line 3049 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 316: +#line 3087 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = true; CHECK_FOR_ERROR ;} break; - case 313: -#line 3053 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 317: +#line 3091 "/llvm/lib/AsmParser/llvmAsmParser.y" { (yyval.BoolVal) = false; CHECK_FOR_ERROR ;} break; - case 314: -#line 3060 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 318: +#line 3098 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription()); @@ -6265,8 +6348,8 @@ yyreduce: ;} break; - case 315: -#line 3067 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 319: +#line 3105 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription()); @@ -6277,8 +6360,8 @@ yyreduce: ;} break; - case 316: -#line 3075 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 320: +#line 3113 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (3)].TypeVal))->getDescription()); @@ -6288,8 +6371,8 @@ yyreduce: ;} break; - case 317: -#line 3082 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 321: +#line 3120 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (6)].TypeVal))->getDescription()); @@ -6300,8 +6383,8 @@ yyreduce: ;} break; - case 318: -#line 3090 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 322: +#line 3128 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!isa<PointerType>((yyvsp[(2) - (2)].ValueVal)->getType())) GEN_ERROR("Trying to free nonpointer type " + @@ -6311,8 +6394,8 @@ yyreduce: ;} break; - case 319: -#line 3098 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 323: +#line 3136 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(3) - (5)].TypeVal))->getDescription()); @@ -6329,8 +6412,8 @@ yyreduce: ;} break; - case 320: -#line 3112 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 324: +#line 3150 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(5) - (7)].TypeVal))->getDescription()); @@ -6350,8 +6433,8 @@ yyreduce: ;} break; - case 321: -#line 3129 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 325: +#line 3167 "/llvm/lib/AsmParser/llvmAsmParser.y" { Value *TmpVal = getVal((yyvsp[(2) - (5)].TypeVal)->get(), (yyvsp[(3) - (5)].ValIDVal)); if (!GetResultInst::isValidOperands(TmpVal, (yyvsp[(5) - (5)].UInt64Val))) @@ -6362,8 +6445,8 @@ yyreduce: ;} break; - case 322: -#line 3137 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" + case 326: +#line 3175 "/llvm/lib/AsmParser/llvmAsmParser.y" { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*(yyvsp[(2) - (4)].TypeVal))->getDescription()); @@ -6383,7 +6466,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 6387 "llvmAsmParser.tab.c" +#line 6470 "llvmAsmParser.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -6597,7 +6680,7 @@ yyreturn: } -#line 3154 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 3192 "/llvm/lib/AsmParser/llvmAsmParser.y" // common code from the two 'RunVMAsmParser' functions diff --git a/lib/AsmParser/llvmAsmParser.h.cvs b/lib/AsmParser/llvmAsmParser.h.cvs index e3f22fc..0582386 100644 --- a/lib/AsmParser/llvmAsmParser.h.cvs +++ b/lib/AsmParser/llvmAsmParser.h.cvs @@ -127,66 +127,68 @@ ASHR = 343, ICMP = 344, FCMP = 345, - EQ = 346, - NE = 347, - SLT = 348, - SGT = 349, - SLE = 350, - SGE = 351, - ULT = 352, - UGT = 353, - ULE = 354, - UGE = 355, - OEQ = 356, - ONE = 357, - OLT = 358, - OGT = 359, - OLE = 360, - OGE = 361, - ORD = 362, - UNO = 363, - UEQ = 364, - UNE = 365, - MALLOC = 366, - ALLOCA = 367, - FREE = 368, - LOAD = 369, - STORE = 370, - GETELEMENTPTR = 371, - TRUNC = 372, - ZEXT = 373, - SEXT = 374, - FPTRUNC = 375, - FPEXT = 376, - BITCAST = 377, - UITOFP = 378, - SITOFP = 379, - FPTOUI = 380, - FPTOSI = 381, - INTTOPTR = 382, - PTRTOINT = 383, - PHI_TOK = 384, - SELECT = 385, - VAARG = 386, - EXTRACTELEMENT = 387, - INSERTELEMENT = 388, - SHUFFLEVECTOR = 389, - GETRESULT = 390, - SIGNEXT = 391, - ZEROEXT = 392, - NORETURN = 393, - INREG = 394, - SRET = 395, - NOUNWIND = 396, - NOALIAS = 397, - BYVAL = 398, - NEST = 399, - READNONE = 400, - READONLY = 401, - GC = 402, - DEFAULT = 403, - HIDDEN = 404, - PROTECTED = 405 + VICMP = 346, + VFCMP = 347, + EQ = 348, + NE = 349, + SLT = 350, + SGT = 351, + SLE = 352, + SGE = 353, + ULT = 354, + UGT = 355, + ULE = 356, + UGE = 357, + OEQ = 358, + ONE = 359, + OLT = 360, + OGT = 361, + OLE = 362, + OGE = 363, + ORD = 364, + UNO = 365, + UEQ = 366, + UNE = 367, + MALLOC = 368, + ALLOCA = 369, + FREE = 370, + LOAD = 371, + STORE = 372, + GETELEMENTPTR = 373, + TRUNC = 374, + ZEXT = 375, + SEXT = 376, + FPTRUNC = 377, + FPEXT = 378, + BITCAST = 379, + UITOFP = 380, + SITOFP = 381, + FPTOUI = 382, + FPTOSI = 383, + INTTOPTR = 384, + PTRTOINT = 385, + PHI_TOK = 386, + SELECT = 387, + VAARG = 388, + EXTRACTELEMENT = 389, + INSERTELEMENT = 390, + SHUFFLEVECTOR = 391, + GETRESULT = 392, + SIGNEXT = 393, + ZEROEXT = 394, + NORETURN = 395, + INREG = 396, + SRET = 397, + NOUNWIND = 398, + NOALIAS = 399, + BYVAL = 400, + NEST = 401, + READNONE = 402, + READONLY = 403, + GC = 404, + DEFAULT = 405, + HIDDEN = 406, + PROTECTED = 407 }; #endif /* Tokens. */ @@ -278,73 +280,75 @@ #define ASHR 343 #define ICMP 344 #define FCMP 345 -#define EQ 346 -#define NE 347 -#define SLT 348 -#define SGT 349 -#define SLE 350 -#define SGE 351 -#define ULT 352 -#define UGT 353 -#define ULE 354 -#define UGE 355 -#define OEQ 356 -#define ONE 357 -#define OLT 358 -#define OGT 359 -#define OLE 360 -#define OGE 361 -#define ORD 362 -#define UNO 363 -#define UEQ 364 -#define UNE 365 -#define MALLOC 366 -#define ALLOCA 367 -#define FREE 368 -#define LOAD 369 -#define STORE 370 -#define GETELEMENTPTR 371 -#define TRUNC 372 -#define ZEXT 373 -#define SEXT 374 -#define FPTRUNC 375 -#define FPEXT 376 -#define BITCAST 377 -#define UITOFP 378 -#define SITOFP 379 -#define FPTOUI 380 -#define FPTOSI 381 -#define INTTOPTR 382 -#define PTRTOINT 383 -#define PHI_TOK 384 -#define SELECT 385 -#define VAARG 386 -#define EXTRACTELEMENT 387 -#define INSERTELEMENT 388 -#define SHUFFLEVECTOR 389 -#define GETRESULT 390 -#define SIGNEXT 391 -#define ZEROEXT 392 -#define NORETURN 393 -#define INREG 394 -#define SRET 395 -#define NOUNWIND 396 -#define NOALIAS 397 -#define BYVAL 398 -#define NEST 399 -#define READNONE 400 -#define READONLY 401 -#define GC 402 -#define DEFAULT 403 -#define HIDDEN 404 -#define PROTECTED 405 +#define VICMP 346 +#define VFCMP 347 +#define EQ 348 +#define NE 349 +#define SLT 350 +#define SGT 351 +#define SLE 352 +#define SGE 353 +#define ULT 354 +#define UGT 355 +#define ULE 356 +#define UGE 357 +#define OEQ 358 +#define ONE 359 +#define OLT 360 +#define OGT 361 +#define OLE 362 +#define OGE 363 +#define ORD 364 +#define UNO 365 +#define UEQ 366 +#define UNE 367 +#define MALLOC 368 +#define ALLOCA 369 +#define FREE 370 +#define LOAD 371 +#define STORE 372 +#define GETELEMENTPTR 373 +#define TRUNC 374 +#define ZEXT 375 +#define SEXT 376 +#define FPTRUNC 377 +#define FPEXT 378 +#define BITCAST 379 +#define UITOFP 380 +#define SITOFP 381 +#define FPTOUI 382 +#define FPTOSI 383 +#define INTTOPTR 384 +#define PTRTOINT 385 +#define PHI_TOK 386 +#define SELECT 387 +#define VAARG 388 +#define EXTRACTELEMENT 389 +#define INSERTELEMENT 390 +#define SHUFFLEVECTOR 391 +#define GETRESULT 392 +#define SIGNEXT 393 +#define ZEROEXT 394 +#define NORETURN 395 +#define INREG 396 +#define SRET 397 +#define NOUNWIND 398 +#define NOALIAS 399 +#define BYVAL 400 +#define NEST 401 +#define READNONE 402 +#define READONLY 403 +#define GC 404 +#define DEFAULT 405 +#define HIDDEN 406 +#define PROTECTED 407 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 949 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y" +#line 949 "/llvm/lib/AsmParser/llvmAsmParser.y" { llvm::Module *ModuleVal; llvm::Function *FunctionVal; @@ -392,7 +396,7 @@ typedef union YYSTYPE llvm::FCmpInst::Predicate FPredicate; } /* Line 1529 of yacc.c. */ -#line 396 "llvmAsmParser.tab.h" +#line 400 "llvmAsmParser.tab.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index f3a59ee..a239124 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -1075,7 +1075,7 @@ Module *llvm::RunVMAsmParser(llvm::MemoryBuffer *MB) { %token <BinaryOpVal> ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR %token <BinaryOpVal> SHL LSHR ASHR -%token <OtherOpVal> ICMP FCMP +%token <OtherOpVal> ICMP FCMP VICMP VFCMP %type <IPredicate> IPredicates %type <FPredicate> FPredicates %token EQ NE SLT SGT SLE SGE ULT UGT ULE UGE @@ -1939,6 +1939,16 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' { GEN_ERROR("fcmp operand types must match"); $$ = ConstantExpr::getFCmp($2, $4, $6); } + | VICMP IPredicates '(' ConstVal ',' ConstVal ')' { + if ($4->getType() != $6->getType()) + GEN_ERROR("vicmp operand types must match"); + $$ = ConstantExpr::getVICmp($2, $4, $6); + } + | VFCMP FPredicates '(' ConstVal ',' ConstVal ')' { + if ($4->getType() != $6->getType()) + GEN_ERROR("vfcmp operand types must match"); + $$ = ConstantExpr::getVFCmp($2, $4, $6); + } | EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' { if (!ExtractElementInst::isValidOperands($3, $5)) GEN_ERROR("Invalid extractelement operands"); @@ -2891,6 +2901,34 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { GEN_ERROR("fcmp operator returned null"); delete $3; } + | VICMP IPredicates Types ValueRef ',' ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); + if (!isa<VectorType>((*$3).get())) + GEN_ERROR("Scalar types not supported by vicmp instruction"); + Value* tmpVal1 = getVal(*$3, $4); + CHECK_FOR_ERROR + Value* tmpVal2 = getVal(*$3, $6); + CHECK_FOR_ERROR + $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2); + if ($$ == 0) + GEN_ERROR("icmp operator returned null"); + delete $3; + } + | VFCMP FPredicates Types ValueRef ',' ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); + if (!isa<VectorType>((*$3).get())) + GEN_ERROR("Scalar types not supported by vfcmp instruction"); + Value* tmpVal1 = getVal(*$3, $4); + CHECK_FOR_ERROR + Value* tmpVal2 = getVal(*$3, $6); + CHECK_FOR_ERROR + $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2); + if ($$ == 0) + GEN_ERROR("fcmp operator returned null"); + delete $3; + } | CastOps ResolvedVal TO Types { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$4)->getDescription()); diff --git a/lib/AsmParser/llvmAsmParser.y.cvs b/lib/AsmParser/llvmAsmParser.y.cvs index f3a59ee..a239124 100644 --- a/lib/AsmParser/llvmAsmParser.y.cvs +++ b/lib/AsmParser/llvmAsmParser.y.cvs @@ -1075,7 +1075,7 @@ Module *llvm::RunVMAsmParser(llvm::MemoryBuffer *MB) { %token <BinaryOpVal> ADD SUB MUL UDIV SDIV FDIV UREM SREM FREM AND OR XOR %token <BinaryOpVal> SHL LSHR ASHR -%token <OtherOpVal> ICMP FCMP +%token <OtherOpVal> ICMP FCMP VICMP VFCMP %type <IPredicate> IPredicates %type <FPredicate> FPredicates %token EQ NE SLT SGT SLE SGE ULT UGT ULE UGE @@ -1939,6 +1939,16 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' { GEN_ERROR("fcmp operand types must match"); $$ = ConstantExpr::getFCmp($2, $4, $6); } + | VICMP IPredicates '(' ConstVal ',' ConstVal ')' { + if ($4->getType() != $6->getType()) + GEN_ERROR("vicmp operand types must match"); + $$ = ConstantExpr::getVICmp($2, $4, $6); + } + | VFCMP FPredicates '(' ConstVal ',' ConstVal ')' { + if ($4->getType() != $6->getType()) + GEN_ERROR("vfcmp operand types must match"); + $$ = ConstantExpr::getVFCmp($2, $4, $6); + } | EXTRACTELEMENT '(' ConstVal ',' ConstVal ')' { if (!ExtractElementInst::isValidOperands($3, $5)) GEN_ERROR("Invalid extractelement operands"); @@ -2891,6 +2901,34 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef { GEN_ERROR("fcmp operator returned null"); delete $3; } + | VICMP IPredicates Types ValueRef ',' ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); + if (!isa<VectorType>((*$3).get())) + GEN_ERROR("Scalar types not supported by vicmp instruction"); + Value* tmpVal1 = getVal(*$3, $4); + CHECK_FOR_ERROR + Value* tmpVal2 = getVal(*$3, $6); + CHECK_FOR_ERROR + $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2); + if ($$ == 0) + GEN_ERROR("icmp operator returned null"); + delete $3; + } + | VFCMP FPredicates Types ValueRef ',' ValueRef { + if (!UpRefs.empty()) + GEN_ERROR("Invalid upreference in type: " + (*$3)->getDescription()); + if (!isa<VectorType>((*$3).get())) + GEN_ERROR("Scalar types not supported by vfcmp instruction"); + Value* tmpVal1 = getVal(*$3, $4); + CHECK_FOR_ERROR + Value* tmpVal2 = getVal(*$3, $6); + CHECK_FOR_ERROR + $$ = CmpInst::create($1, $2, tmpVal1, tmpVal2); + if ($$ == 0) + GEN_ERROR("fcmp operator returned null"); + delete $3; + } | CastOps ResolvedVal TO Types { if (!UpRefs.empty()) GEN_ERROR("Invalid upreference in type: " + (*$4)->getDescription()); diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index 78cd1de..2ca7a00 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -818,8 +818,12 @@ bool BitcodeReader::ParseConstants() { if (OpTy->isFloatingPoint()) V = ConstantExpr::getFCmp(Record[3], Op0, Op1); - else + else if (OpTy->isInteger()) V = ConstantExpr::getICmp(Record[3], Op0, Op1); + else if (OpTy->isFPOrFPVector()) + V = ConstantExpr::getVFCmp(Record[3], Op0, Op1); + else + V = ConstantExpr::getVICmp(Record[3], Op0, Op1); break; } case bitc::CST_CODE_INLINEASM: { @@ -1355,10 +1359,14 @@ bool BitcodeReader::ParseFunctionBody(Function *F) { OpNum+1 != Record.size()) return Error("Invalid CMP record"); - if (LHS->getType()->isFPOrFPVector()) + if (LHS->getType()->isInteger()) + I = new ICmpInst((ICmpInst::Predicate)Record[OpNum], LHS, RHS); + else if (LHS->getType()->isFloatingPoint()) I = new FCmpInst((FCmpInst::Predicate)Record[OpNum], LHS, RHS); + else if (LHS->getType()->isFPOrFPVector()) + I = new VFCmpInst((FCmpInst::Predicate)Record[OpNum], LHS, RHS); else - I = new ICmpInst((ICmpInst::Predicate)Record[OpNum], LHS, RHS); + I = new VICmpInst((ICmpInst::Predicate)Record[OpNum], LHS, RHS); break; } case bitc::FUNC_CODE_INST_GETRESULT: { // GETRESULT: [ty, val, n] diff --git a/lib/Bitcode/Writer/BitcodeWriter.cpp b/lib/Bitcode/Writer/BitcodeWriter.cpp index 713a82b..40e7011 100644 --- a/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -635,6 +635,8 @@ static void WriteConstants(unsigned FirstVal, unsigned LastVal, break; case Instruction::ICmp: case Instruction::FCmp: + case Instruction::VICmp: + case Instruction::VFCmp: Code = bitc::CST_CODE_CE_CMP; Record.push_back(VE.getTypeID(C->getOperand(0)->getType())); Record.push_back(VE.getValueID(C->getOperand(0))); @@ -740,6 +742,8 @@ static void WriteInstruction(const Instruction &I, unsigned InstID, break; case Instruction::ICmp: case Instruction::FCmp: + case Instruction::VICmp: + case Instruction::VFCmp: Code = bitc::FUNC_CODE_INST_CMP; PushValueAndType(I.getOperand(0), InstID, Vals, VE); Vals.push_back(VE.getValueID(I.getOperand(1))); diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 28e38cc..06bfc50 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -1251,11 +1251,8 @@ void AssemblyWriter::printInstruction(const Instruction &I) { Out << I.getOpcodeName(); // Print out the compare instruction predicates - if (const FCmpInst *FCI = dyn_cast<FCmpInst>(&I)) { - Out << " " << getPredicateText(FCI->getPredicate()); - } else if (const ICmpInst *ICI = dyn_cast<ICmpInst>(&I)) { - Out << " " << getPredicateText(ICI->getPredicate()); - } + if (const CmpInst *CI = dyn_cast<CmpInst>(&I)) + Out << " " << getPredicateText(CI->getPredicate()); // Print out the type of the operands... const Value *Operand = I.getNumOperands() ? I.getOperand(0) : 0; diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index d0c8373..f9b8bd7 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -557,9 +557,9 @@ struct VISIBILITY_HIDDEN CompareConstantExpr : public ConstantExpr { return User::operator new(s, 2); } unsigned short predicate; - CompareConstantExpr(Instruction::OtherOps opc, unsigned short pred, - Constant* LHS, Constant* RHS) - : ConstantExpr(Type::Int1Ty, opc, &Op<0>(), 2), predicate(pred) { + CompareConstantExpr(const Type *ty, Instruction::OtherOps opc, + unsigned short pred, Constant* LHS, Constant* RHS) + : ConstantExpr(ty, opc, &Op<0>(), 2), predicate(pred) { Op<0>().init(LHS, this); Op<1>().init(RHS, this); } @@ -690,7 +690,10 @@ Constant *ConstantExpr::getXor(Constant *C1, Constant *C2) { return get(Instruction::Xor, C1, C2); } unsigned ConstantExpr::getPredicate() const { - assert(getOpcode() == Instruction::FCmp || getOpcode() == Instruction::ICmp); + assert(getOpcode() == Instruction::FCmp || + getOpcode() == Instruction::ICmp || + getOpcode() == Instruction::VFCmp || + getOpcode() == Instruction::VICmp); return ((const CompareConstantExpr*)this)->predicate; } Constant *ConstantExpr::getShl(Constant *C1, Constant *C2) { @@ -1564,10 +1567,16 @@ namespace llvm { // value and it is combined with the instruction opcode by multiplying // the opcode by one hundred. We must decode this to get the predicate. if (V.opcode == Instruction::ICmp) - return new CompareConstantExpr(Instruction::ICmp, V.predicate, + return new CompareConstantExpr(Ty, Instruction::ICmp, V.predicate, V.operands[0], V.operands[1]); if (V.opcode == Instruction::FCmp) - return new CompareConstantExpr(Instruction::FCmp, V.predicate, + return new CompareConstantExpr(Ty, Instruction::FCmp, V.predicate, + V.operands[0], V.operands[1]); + if (V.opcode == Instruction::VICmp) + return new CompareConstantExpr(Ty, Instruction::VICmp, V.predicate, + V.operands[0], V.operands[1]); + if (V.opcode == Instruction::VFCmp) + return new CompareConstantExpr(Ty, Instruction::VFCmp, V.predicate, V.operands[0], V.operands[1]); assert(0 && "Invalid ConstantExpr!"); return 0; @@ -2029,6 +2038,79 @@ ConstantExpr::getFCmp(unsigned short pred, Constant* LHS, Constant* RHS) { return ExprConstants->getOrCreate(Type::Int1Ty, Key); } +Constant * +ConstantExpr::getVICmp(unsigned short pred, Constant* LHS, Constant* RHS) { + assert(isa<VectorType>(LHS->getType()) && + "Tried to create vicmp operation on non-vector type!"); + assert(LHS->getType() == RHS->getType()); + assert(pred >= ICmpInst::FIRST_ICMP_PREDICATE && + pred <= ICmpInst::LAST_ICMP_PREDICATE && "Invalid VICmp Predicate"); + + const Type *VTy = cast<VectorType>(LHS->getType()); + const Type *EltTy = VTy->getElementType(); + unsigned NumElts = VTy->getNumElements(); + + SmallVector<Constant *, 8> Elts; + for (unsigned i = 0; i != NumElts; ++i) { + Constant *FC = ConstantFoldCompareInstruction(pred, LHS->getOperand(i), + RHS->getOperand(i)); + if (FC) { + uint64_t Val = cast<ConstantInt>(FC)->getZExtValue(); + if (Val != 0ULL) + Elts.push_back(ConstantInt::getAllOnesValue(EltTy)); + else + Elts.push_back(ConstantInt::get(EltTy, 0ULL)); + } + } + if (Elts.size() == NumElts) + return ConstantVector::get(&Elts[0], Elts.size()); + + // Look up the constant in the table first to ensure uniqueness + std::vector<Constant*> ArgVec; + ArgVec.push_back(LHS); + ArgVec.push_back(RHS); + // Get the key type with both the opcode and predicate + const ExprMapKeyType Key(Instruction::VICmp, ArgVec, pred); + return ExprConstants->getOrCreate(LHS->getType(), Key); +} + +Constant * +ConstantExpr::getVFCmp(unsigned short pred, Constant* LHS, Constant* RHS) { + assert(isa<VectorType>(LHS->getType()) && + "Tried to create vfcmp operation on non-vector type!"); + assert(LHS->getType() == RHS->getType()); + assert(pred <= FCmpInst::LAST_FCMP_PREDICATE && "Invalid VFCmp Predicate"); + + const VectorType *VTy = cast<VectorType>(LHS->getType()); + unsigned NumElts = VTy->getNumElements(); + const Type *EltTy = VTy->getElementType(); + const Type *REltTy = IntegerType::get(EltTy->getPrimitiveSizeInBits()); + const Type *ResultTy = VectorType::get(REltTy, NumElts); + + SmallVector<Constant *, 8> Elts; + for (unsigned i = 0; i != NumElts; ++i) { + Constant *FC = ConstantFoldCompareInstruction(pred, LHS->getOperand(i), + RHS->getOperand(i)); + if (FC) { + uint64_t Val = cast<ConstantInt>(FC)->getZExtValue(); + if (Val != 0ULL) + Elts.push_back(ConstantInt::getAllOnesValue(REltTy)); + else + Elts.push_back(ConstantInt::get(REltTy, 0ULL)); + } + } + if (Elts.size() == NumElts) + return ConstantVector::get(&Elts[0], Elts.size()); + + // Look up the constant in the table first to ensure uniqueness + std::vector<Constant*> ArgVec; + ArgVec.push_back(LHS); + ArgVec.push_back(RHS); + // Get the key type with both the opcode and predicate + const ExprMapKeyType Key(Instruction::VFCmp, ArgVec, pred); + return ExprConstants->getOrCreate(ResultTy, Key); +} + Constant *ConstantExpr::getExtractElementTy(const Type *ReqTy, Constant *Val, Constant *Idx) { if (Constant *FC = ConstantFoldExtractElementInstruction(Val, Idx)) diff --git a/lib/VMCore/Instruction.cpp b/lib/VMCore/Instruction.cpp index 2316b48..3330847 100644 --- a/lib/VMCore/Instruction.cpp +++ b/lib/VMCore/Instruction.cpp @@ -128,6 +128,8 @@ const char *Instruction::getOpcodeName(unsigned OpCode) { // Other instructions... case ICmp: return "icmp"; case FCmp: return "fcmp"; + case VICmp: return "vicmp"; + case VFCmp: return "vfcmp"; case PHI: return "phi"; case Select: return "select"; case Call: return "call"; diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index e901f3e..d34aa59 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -2332,9 +2332,10 @@ BitCastInst::BitCastInst( // CmpInst Classes //===----------------------------------------------------------------------===// -CmpInst::CmpInst(OtherOps op, unsigned short predicate, Value *LHS, Value *RHS, - const std::string &Name, Instruction *InsertBefore) - : Instruction(Type::Int1Ty, op, +CmpInst::CmpInst(const Type *ty, OtherOps op, unsigned short predicate, + Value *LHS, Value *RHS, const std::string &Name, + Instruction *InsertBefore) + : Instruction(ty, op, OperandTraits<CmpInst>::op_begin(this), OperandTraits<CmpInst>::operands(this), InsertBefore) { @@ -2342,34 +2343,12 @@ CmpInst::CmpInst(OtherOps op, unsigned short predicate, Value *LHS, Value *RHS, Op<1>().init(RHS, this); SubclassData = predicate; setName(Name); - if (op == Instruction::ICmp) { - assert(predicate >= ICmpInst::FIRST_ICMP_PREDICATE && - predicate <= ICmpInst::LAST_ICMP_PREDICATE && - "Invalid ICmp predicate value"); - const Type* Op0Ty = getOperand(0)->getType(); - const Type* Op1Ty = getOperand(1)->getType(); - assert(Op0Ty == Op1Ty && - "Both operands to ICmp instruction are not of the same type!"); - // Check that the operands are the right type - assert((Op0Ty->isInteger() || isa<PointerType>(Op0Ty)) && - "Invalid operand types for ICmp instruction"); - return; - } - assert(op == Instruction::FCmp && "Invalid CmpInst opcode"); - assert(predicate <= FCmpInst::LAST_FCMP_PREDICATE && - "Invalid FCmp predicate value"); - const Type* Op0Ty = getOperand(0)->getType(); - const Type* Op1Ty = getOperand(1)->getType(); - assert(Op0Ty == Op1Ty && - "Both operands to FCmp instruction are not of the same type!"); - // Check that the operands are the right type - assert(Op0Ty->isFloatingPoint() && - "Invalid operand types for FCmp instruction"); -} - -CmpInst::CmpInst(OtherOps op, unsigned short predicate, Value *LHS, Value *RHS, - const std::string &Name, BasicBlock *InsertAtEnd) - : Instruction(Type::Int1Ty, op, +} + +CmpInst::CmpInst(const Type *ty, OtherOps op, unsigned short predicate, + Value *LHS, Value *RHS, const std::string &Name, + BasicBlock *InsertAtEnd) + : Instruction(ty, op, OperandTraits<CmpInst>::op_begin(this), OperandTraits<CmpInst>::operands(this), InsertAtEnd) { @@ -2377,52 +2356,44 @@ CmpInst::CmpInst(OtherOps op, unsigned short predicate, Value *LHS, Value *RHS, Op<1>().init(RHS, this); SubclassData = predicate; setName(Name); - if (op == Instruction::ICmp) { - assert(predicate >= ICmpInst::FIRST_ICMP_PREDICATE && - predicate <= ICmpInst::LAST_ICMP_PREDICATE && - "Invalid ICmp predicate value"); - - const Type* Op0Ty = getOperand(0)->getType(); - const Type* Op1Ty = getOperand(1)->getType(); - assert(Op0Ty == Op1Ty && - "Both operands to ICmp instruction are not of the same type!"); - // Check that the operands are the right type - assert((Op0Ty->isInteger() || isa<PointerType>(Op0Ty)) && - "Invalid operand types for ICmp instruction"); - return; - } - assert(op == Instruction::FCmp && "Invalid CmpInst opcode"); - assert(predicate <= FCmpInst::LAST_FCMP_PREDICATE && - "Invalid FCmp predicate value"); - const Type* Op0Ty = getOperand(0)->getType(); - const Type* Op1Ty = getOperand(1)->getType(); - assert(Op0Ty == Op1Ty && - "Both operands to FCmp instruction are not of the same type!"); - // Check that the operands are the right type - assert(Op0Ty->isFloatingPoint() && - "Invalid operand types for FCmp instruction"); } CmpInst * CmpInst::create(OtherOps Op, unsigned short predicate, Value *S1, Value *S2, const std::string &Name, Instruction *InsertBefore) { if (Op == Instruction::ICmp) { - return new ICmpInst(ICmpInst::Predicate(predicate), S1, S2, Name, + return new ICmpInst(CmpInst::Predicate(predicate), S1, S2, Name, + InsertBefore); + } + if (Op == Instruction::FCmp) { + return new FCmpInst(CmpInst::Predicate(predicate), S1, S2, Name, InsertBefore); } - return new FCmpInst(FCmpInst::Predicate(predicate), S1, S2, Name, - InsertBefore); + if (Op == Instruction::VICmp) { + return new VICmpInst(CmpInst::Predicate(predicate), S1, S2, Name, + InsertBefore); + } + return new VFCmpInst(CmpInst::Predicate(predicate), S1, S2, Name, + InsertBefore); } CmpInst * CmpInst::create(OtherOps Op, unsigned short predicate, Value *S1, Value *S2, const std::string &Name, BasicBlock *InsertAtEnd) { if (Op == Instruction::ICmp) { - return new ICmpInst(ICmpInst::Predicate(predicate), S1, S2, Name, + return new ICmpInst(CmpInst::Predicate(predicate), S1, S2, Name, + InsertAtEnd); + } + if (Op == Instruction::FCmp) { + return new FCmpInst(CmpInst::Predicate(predicate), S1, S2, Name, InsertAtEnd); } - return new FCmpInst(FCmpInst::Predicate(predicate), S1, S2, Name, - InsertAtEnd); + if (Op == Instruction::VICmp) { + return new VICmpInst(CmpInst::Predicate(predicate), S1, S2, Name, + InsertAtEnd); + } + return new VFCmpInst(CmpInst::Predicate(predicate), S1, S2, Name, + InsertAtEnd); } void CmpInst::swapOperands() { @@ -2813,6 +2784,13 @@ ICmpInst* ICmpInst::clone() const { return new ICmpInst(getPredicate(), Op<0>(), Op<1>()); } +VFCmpInst* VFCmpInst::clone() const { + return new VFCmpInst(getPredicate(), Op<0>(), Op<1>()); +} +VICmpInst* VICmpInst::clone() const { + return new VICmpInst(getPredicate(), Op<0>(), Op<1>()); +} + MallocInst *MallocInst::clone() const { return new MallocInst(*this); } AllocaInst *AllocaInst::clone() const { return new AllocaInst(*this); } FreeInst *FreeInst::clone() const { return new FreeInst(getOperand(0)); } |