[llvm-commits] [llvm] r50985 - in /llvm/trunk: docs/ include/llvm/ include/llvm/Support/ lib/AsmParser/ lib/Bitcode/Reader/ lib/Bitcode/Writer/ lib/VMCore/

Owen Anderson resistor at mac.com
Mon May 12 12:14:21 PDT 2008


Nate,

This is breaking the build for me:

Constants.cpp: In static member function ‘static llvm::Constant*  
llvm::ConstantExpr::getVICmp(short unsigned int, llvm::Constant*,  
llvm::Constant*)’:
Constants.cpp:2050: error: ‘const class llvm::Type’ has no member  
named ‘getElementType’
Constants.cpp:2051: error: ‘const class llvm::Type’ has no member  
named ‘getNumElements’

--Owen

On May 12, 2008, at 2:01 PM, Nate Begeman wrote:

> Author: sampo
> Date: Mon May 12 14:01:56 2008
> New Revision: 50985
>
> URL: http://llvm.org/viewvc/llvm-project?rev=50985&view=rev
> Log:
> Add two new instructions to the llvm IR, vicmp and vfcmp.  see  
> updated LangRef
> for details.  CodeGen support coming in a follow up patch
>
> Modified:
>    llvm/trunk/docs/LangRef.html
>    llvm/trunk/include/llvm/Constants.h
>    llvm/trunk/include/llvm/DerivedTypes.h
>    llvm/trunk/include/llvm/InstrTypes.h
>    llvm/trunk/include/llvm/Instruction.def
>    llvm/trunk/include/llvm/Instructions.h
>    llvm/trunk/include/llvm/Support/InstVisitor.h
>    llvm/trunk/lib/AsmParser/LLLexer.cpp
>    llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs
>    llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs
>    llvm/trunk/lib/AsmParser/llvmAsmParser.y
>    llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs
>    llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
>    llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp
>    llvm/trunk/lib/VMCore/AsmWriter.cpp
>    llvm/trunk/lib/VMCore/Constants.cpp
>    llvm/trunk/lib/VMCore/Instruction.cpp
>    llvm/trunk/lib/VMCore/Instructions.cpp
>
> Modified: llvm/trunk/docs/LangRef.html
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.html?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/docs/LangRef.html (original)
> +++ llvm/trunk/docs/LangRef.html Mon May 12 14:01:56 2008
> @@ -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 @@
>   <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 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 @@
> </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">
>
> Modified: llvm/trunk/include/llvm/Constants.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Constants.h?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/Constants.h (original)
> +++ llvm/trunk/include/llvm/Constants.h Mon May 12 14:01:56 2008
> @@ -689,6 +689,8 @@
>   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);
>
> Modified: llvm/trunk/include/llvm/DerivedTypes.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DerivedTypes.h?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/DerivedTypes.h (original)
> +++ llvm/trunk/include/llvm/DerivedTypes.h Mon May 12 14:01:56 2008
> @@ -349,6 +349,16 @@
>   ///
>   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; }
>
>
> Modified: llvm/trunk/include/llvm/InstrTypes.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/InstrTypes.h?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/InstrTypes.h (original)
> +++ llvm/trunk/include/llvm/InstrTypes.h Mon May 12 14:01:56 2008
> @@ -498,13 +498,55 @@
>   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 @@
>   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));
>
> Modified: llvm/trunk/include/llvm/Instruction.def
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Instruction.def?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/Instruction.def (original)
> +++ llvm/trunk/include/llvm/Instruction.def Mon May 12 14:01:56 2008
> @@ -166,7 +166,10 @@
> 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
>
> Modified: llvm/trunk/include/llvm/Instructions.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Instructions.h?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/Instructions.h (original)
> +++ llvm/trunk/include/llvm/Instructions.h Mon May 12 14:01:56 2008
> @@ -610,31 +610,11 @@
> // 
> = 
> = 
> = 
> ----------------------------------------------------------------------= 
> ==//
>
> /// 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 @@
>     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 @@
>     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 @@
> /// @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 @@
>     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 @@
>     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 @@
> };
>
> // 
> = 
> = 
> = 
> ----------------------------------------------------------------------= 
> ==//
> +//                               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 @@
> //                               InvokeInst Class
> // 
> = 
> = 
> = 
> ----------------------------------------------------------------------= 
> ==//
>
> -// 
> = 
> = 
> = 
> ---------------------------------------------------------------------------
> -
> /// InvokeInst - Invoke instruction.  The SubclassData field is used  
> to hold the
> /// calling convention of the call.
> ///
>
> Modified: llvm/trunk/include/llvm/Support/InstVisitor.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/InstVisitor.h?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/Support/InstVisitor.h (original)
> +++ llvm/trunk/include/llvm/Support/InstVisitor.h Mon May 12  
> 14:01:56 2008
> @@ -169,6 +169,8 @@
>   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); }
>
> Modified: llvm/trunk/lib/AsmParser/LLLexer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLLexer.cpp?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/AsmParser/LLLexer.cpp (original)
> +++ llvm/trunk/lib/AsmParser/LLLexer.cpp Mon May 12 14:01:56 2008
> @@ -566,6 +566,8 @@
>   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);
>
> Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs (original)
> +++ llvm/trunk/lib/AsmParser/llvmAsmParser.cpp.cvs Mon May 12  
> 14:01:56 2008
> @@ -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 @@
>
> #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 @@
>   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 @@
>
>
> /* Line 216 of yacc.c.  */
> -#line 1399 "llvmAsmParser.tab.c"
> +#line 1403 "llvmAsmParser.tab.c"
>
> #ifdef short
> # undef short
> @@ -1610,20 +1614,20 @@
> /* 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 @@
>        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 @@
>      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 @@
>      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 @@
>     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 @@
>   "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 @@
>      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 @@
>        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 @@
>    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_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 @@
>   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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>    ;}
>     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 @@
>    ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
> ;}
>     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 @@
>         ;}
>     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 @@
>         ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
> ;}
>     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 @@
> ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>   ;}
>     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 @@
>
>
> /* 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 @@
> }
>
>
> -#line 3154 "/Users/sabre/llvm/lib/AsmParser/llvmAsmParser.y"
> +#line 3192 "/llvm/lib/AsmParser/llvmAsmParser.y"
>
>
> // common code from the two 'RunVMAsmParser' functions
>
> Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs (original)
> +++ llvm/trunk/lib/AsmParser/llvmAsmParser.h.cvs Mon May 12 14:01:56  
> 2008
> @@ -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 @@
>   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
>
> Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.y
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.y?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/AsmParser/llvmAsmParser.y (original)
> +++ llvm/trunk/lib/AsmParser/llvmAsmParser.y Mon May 12 14:01:56 2008
> @@ -1075,7 +1075,7 @@
> %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 @@
>       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 @@
>       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());
>
> Modified: llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs (original)
> +++ llvm/trunk/lib/AsmParser/llvmAsmParser.y.cvs Mon May 12 14:01:56  
> 2008
> @@ -1075,7 +1075,7 @@
> %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 @@
>       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 @@
>       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());
>
> Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
> +++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Mon May 12  
> 14:01:56 2008
> @@ -818,8 +818,12 @@
>
>       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 @@
>           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]
>
> Modified: llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp (original)
> +++ llvm/trunk/lib/Bitcode/Writer/BitcodeWriter.cpp Mon May 12  
> 14:01:56 2008
> @@ -635,6 +635,8 @@
>         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 @@
>     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)));
>
> Modified: llvm/trunk/lib/VMCore/AsmWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AsmWriter.cpp?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/VMCore/AsmWriter.cpp (original)
> +++ llvm/trunk/lib/VMCore/AsmWriter.cpp Mon May 12 14:01:56 2008
> @@ -1251,11 +1251,8 @@
>   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;
>
> Modified: llvm/trunk/lib/VMCore/Constants.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Constants.cpp?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/VMCore/Constants.cpp (original)
> +++ llvm/trunk/lib/VMCore/Constants.cpp Mon May 12 14:01:56 2008
> @@ -557,9 +557,9 @@
>     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 @@
>   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 @@
>       // 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 @@
>   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))
>
> Modified: llvm/trunk/lib/VMCore/Instruction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Instruction.cpp?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/VMCore/Instruction.cpp (original)
> +++ llvm/trunk/lib/VMCore/Instruction.cpp Mon May 12 14:01:56 2008
> @@ -128,6 +128,8 @@
>   // 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";
>
> Modified: llvm/trunk/lib/VMCore/Instructions.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Instructions.cpp?rev=50985&r1=50984&r2=50985&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/VMCore/Instructions.cpp (original)
> +++ llvm/trunk/lib/VMCore/Instructions.cpp Mon May 12 14:01:56 2008
> @@ -2332,9 +2332,10 @@
> //                               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 @@
>     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 @@
>   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);
>   }
> -  return new FCmpInst(FCmpInst::Predicate(predicate), S1, S2, Name,
> -                      InsertBefore);
> +  if (Op == Instruction::FCmp) {
> +    return new FCmpInst(CmpInst::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);
>   }
> -  return new FCmpInst(FCmpInst::Predicate(predicate), S1, S2, Name,
> -                      InsertAtEnd);
> +  if (Op == Instruction::FCmp) {
> +    return new FCmpInst(CmpInst::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 @@
>   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)); }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4260 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20080512/7f71a060/attachment.bin>


More information about the llvm-commits mailing list